Compare commits

..

1379 Commits

Author SHA1 Message Date
Sebastiaan Janssen 7e7f9902f6 Bumps version to 7.7.4 2017-10-23 14:18:00 +02:00
Sebastiaan Janssen dcd2630d6b Merge branch 'dev-v7.6' into dev-v7 2017-10-23 14:10:04 +02:00
Sebastiaan Janssen b70f543790 Reverts wrongly committed files 2017-10-23 14:02:00 +02:00
Sebastiaan Janssen 24c1c15b66 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2017-10-23 13:59:30 +02:00
Sebastiaan Janssen 4a0cd7228b Revert "U4-10554 - warn if closing page with changes"
This reverts commit 24b147e2a6.
2017-10-23 13:59:06 +02:00
Stephan edfe212227 Fix login issue 2017-10-20 15:35:30 +02:00
Sebastiaan Janssen e3bc98a155 Merge pull request #2257 from umbraco/temp-U4-10566
U4-10566 The legacy API Member.PopulateGroups throws an exception
2017-10-19 06:59:18 -07:00
Shannon f85532f15e U4-10566 The legacy API Member.PopulateGroups throws an exception 2017-10-20 00:56:34 +11:00
Sebastiaan Janssen b04d71ca5f Merge pull request #2256 from richarth/patch-1
Removed duplicate translations
2017-10-19 00:41:33 -07:00
Sebastiaan Janssen ab4de382f3 Merge pull request #2252 from umbraco/temp-u4-7317
U4-7317 - select default template
2017-10-18 12:38:53 -07:00
Sebastiaan Janssen a293c633fc Merge pull request #2249 from umbraco/temp-u4-8652
U4-8652 - accept exceptions when loading some assemblies
2017-10-18 11:00:45 -07:00
Richard Thompson 507e3ece98 Removed duplicate translations
Removed duplicate definition of English translations
2017-10-18 15:36:17 +01:00
Stephan b77826fd3d Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2017-10-18 12:18:59 +02:00
Stephan 4c7358d63b U4-8960 - minor fixes 2017-10-18 12:17:58 +02:00
Stephan 4814612102 Merge branch 'U4-8960' of https://github.com/lars-erik/Umbraco-CMS into temp-u4-8960 2017-10-18 11:56:00 +02:00
Robert 6dae4396bb Merge pull request #2250 from umbraco/temp-u4-10554
U4-10554 - warn if closing page with changes
2017-10-18 11:53:54 +02:00
Stephan dd5560f00b U4-8616 - minor cleanup 2017-10-18 10:11:23 +02:00
Stephan b56575fc50 Merge branch 'dev-v7' of https://github.com/jhauge/Umbraco-CMS into temp-u4-8616 2017-10-18 09:49:05 +02:00
Stephan b06d30c0f9 U4-10554 - cross-browser 2017-10-18 09:29:50 +02:00
Claus 9c50e1c48d fixing bug in U4-10524 Show warning in UI for the media/content picker that is referencing a trashed or deleted item 2017-10-17 23:52:34 +02:00
Claus 0688835ac0 fixing bug in U4-10524 Show warning in UI for the media/content picker that is referencing a trashed or deleted item 2017-10-17 23:44:03 +02:00
Stephan 353b8f21cd U4-7317 - select default template 2017-10-17 16:04:31 +02:00
Stephan 30a0d553d5 Merge pull request #1230 from bjarnef/dev-v7-U4-8319
U4-8319 - Sort data types array by name A-Z
2017-10-17 15:06:54 +02:00
Stephan d0fbc362b2 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2017-10-17 15:00:13 +02:00
Stephan 39c534ef54 Merge branch 'temp-u4-7115' into dev-v7 2017-10-17 14:59:56 +02:00
Stephan 7f86166abf Merge branch 'dev-v7' of https://github.com/hfloyd/Umbraco-CMS into temp-u4-7115 2017-10-17 14:59:07 +02:00
Robert 838e86469a Merge pull request #2245 from umbraco/temp-u4-5322
U4-5322 - add labels to color picker
2017-10-17 14:47:36 +02:00
Stephan 24b147e2a6 U4-10554 - warn if closing page with changes 2017-10-17 14:39:47 +02:00
Stephan 11342ff1df U4-8652 - accept exceptions when loading some assemblies 2017-10-17 14:04:24 +02:00
Robert bf20af9345 Merge pull request #2247 from umbraco/temp-u4-5722b
Temp u4 5722b
2017-10-17 13:19:34 +02:00
Robert c69774e3f2 Merge pull request #2246 from umbraco/temp-u4-7360
U4-7360 - toggle password visibility
2017-10-17 12:30:37 +02:00
Robert 7de8f5a59a Added missing width and height to the "show password" icon
Not having the height and width on the icon, caused IE 11 to shrink the icon which looked a bit off.
2017-10-17 12:09:55 +02:00
Sebastiaan Janssen 6795afd5c2 Merge branch 'dev-v7.6' into dev-v7
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web/UmbracoDefaultOwinStartup.cs
2017-10-17 11:06:52 +02:00
Sebastiaan Janssen 9411a22a0d Don't forget to call the ConfigureUmbracoAuthentication method 2017-10-17 11:04:01 +02:00
Sebastiaan Janssen 461ce64feb Bump version to 7.6.10 2017-10-17 10:57:18 +02:00
Robert 53c251feb5 Merge pull request #2237 from umbraco/temp-U4-10504
U4-10504 Previewing content results in the same PrepareDocument (expe…
2017-10-17 10:20:21 +02:00
Sebastiaan Janssen c5a55b17e6 Manually applying U4-10369: Split out ConfigureUmbracoAuthentication method 2017-10-17 10:08:37 +02:00
Sebastiaan Janssen fd577afe2c Html encode nodenames to prevent XSS attacks. Fixes U4-10497 XSS Vulnerability in page name.
(cherry picked from commit fe2b86b681)
2017-10-16 20:32:56 +02:00
Sebastiaan Janssen f46ef0b006 U4-10506 Importing a specially crafted document type file can cause XXE attack
(cherry picked from commit 5dde2efe0d)
2017-10-16 20:32:04 +02:00
Stephan 909e3788ea Merge branch 'U4-5722' of https://github.com/NikRimington/Umbraco-CMS into temp-u4-5722b 2017-10-16 17:20:19 +02:00
Stephan 09a92ef6ce U4-7360 - toggle password visibility 2017-10-16 16:58:15 +02:00
Stephan 7d9c2bcce9 Merge branch 'dev-v7' into temp-u4-5322 2017-10-16 16:32:43 +02:00
Stephan 529ae961ff U4-5322 - add labels to color picker 2017-10-16 16:16:43 +02:00
Sebastiaan Janssen 04f64cd804 Merge branch 'dev-v7.6' into dev-v7
# Conflicts:
#	src/Umbraco.Web/Editors/MediaController.cs
2017-10-16 16:14:54 +02:00
Sebastiaan Janssen dc937ec942 Fix the "Add media" box no longer being square 2017-10-16 16:13:47 +02:00
Shannon cefd9e7323 Fixes PostAddFolder
(cherry picked from commit c5d874464a)

# Conflicts:
#	src/Umbraco.Web/Editors/MediaController.cs
2017-10-16 15:53:54 +02:00
Mads Rasmussen 315690e758 fixes breadcrumbs and search when start node is set
(cherry picked from commit 1ec07aa205)
2017-10-16 15:14:24 +02:00
Mads Rasmussen fb8c519f71 fixes: U4-10521 Creating new folders from the media picker no longer works
(cherry picked from commit 1cc3b39601)

# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/common/overlays/mediaPicker/mediapicker.html
2017-10-16 15:13:56 +02:00
Sebastiaan Janssen 80f172e3fb Bump version to 7.7.3 2017-10-16 14:56:43 +02:00
Sebastiaan Janssen 5eced19816 Merge branch 'dev-v7.6' into dev-v7
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/less/property-editors.less
#	src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker/mediapicker.controller.js
2017-10-16 14:24:18 +02:00
Warren Buckley 5df4d3509d Fix in PowerShell build - The 7Zip tool download was giving two paths & thus break the build script
(cherry picked from commit a2e6da2491)
2017-10-16 14:22:09 +02:00
Claus 4bd263e7bc U4-10524 Show warning in UI for the media/content picker that is referencing a trashed or deleted item
U4-10533 Show warning in UI for the link picker that is referencing a trashed or deleted item
cherrypicked from dev-v7.
2017-10-16 13:52:17 +02:00
Claus b094bfad29 U4-10533 Show warning in UI for the link picker that is referencing a trashed or deleted item 2017-10-16 13:05:20 +02:00
Sebastiaan Janssen e333f6c628 Merge pull request #2236 from umbraco/temp-U4-10521
fixes: U4-10521 Creating new folders from the media picker no longer …
2017-10-16 12:44:32 +02:00
Shannon 916bc6badb U4-10539 - reverts merge issue that reverted the fix for U4-9262
(cherry picked from commit 2a0cc71d06)
2017-10-16 08:38:17 +02:00
Sebastiaan Janssen 76ee23b933 Merge pull request #2243 from umbraco/temp-U4-10539
U4-10539 - reverts merge issue that reverted the fix for U4-9262
2017-10-16 08:36:56 +02:00
Shannon 2a0cc71d06 U4-10539 - reverts merge issue that reverted the fix for U4-9262 2017-10-16 17:05:33 +11:00
Warren Buckley a2e6da2491 Fix in PowerShell build - The 7Zip tool download was giving two paths & thus break the build script 2017-10-13 11:19:39 +01:00
Mads Rasmussen ba7d8b0955 Merge pull request #2240 from bjarnef/dev-v7-U4-10528
U4-10528 - Add better function to get initials from name
2017-10-13 10:13:00 +02:00
Shannon Deminick 7288bcf679 Merge pull request #2239 from umbraco/temp-U4-10524
U4-10524 Show warning in UI for any picker that is referencing a tras…
2017-10-13 17:08:16 +11:00
Shannon ca57b9c5e6 fixes issue with js exceptions 2017-10-13 16:50:39 +11:00
Shannon 62ce7f6132 U4-10519 Legacy create is broken 2017-10-13 16:33:49 +11:00
Bjarne Fyrstenborg b1f2c5d93a Add better function to get initials from name 2017-10-12 23:46:02 +02:00
Mads Rasmussen 1ec07aa205 fixes breadcrumbs and search when start node is set 2017-10-12 16:13:14 +02:00
Claus 13055ad1f2 U4-10524 Show warning in UI for any picker that is referencing a trashed or deleted item
fixing the trash flag not getting mapped via automapper.
fixing up the ui for mediapicker.
fixing a small ui issue with the contentpicker and trashed content.
2017-10-12 11:35:08 +02:00
Shannon d5447106a6 U4-10504 Previewing content results in the same PrepareDocument (expensive) procedure to be executed 3 times 2017-10-12 18:23:19 +11:00
Shannon c5d874464a Fixes PostAddFolder 2017-10-12 17:11:45 +11:00
Mads Rasmussen 1cc3b39601 fixes: U4-10521 Creating new folders from the media picker no longer works 2017-10-11 10:18:40 +02:00
Warren Buckley c5f4793d11 Merge pull request #2233 from umbraco/temp-U4-10503-2
U4-10503 Umbraco plugins cache files should be stored in the same local temp location as the umbraco xml cache file
2017-10-09 14:04:16 +01:00
Shannon 4175c0530f Merge branch 'dev-v7' into temp-U4-10503-2 2017-10-09 23:05:17 +11:00
Shannon cf97926f26 trying another test fix 2017-10-09 19:00:00 +11:00
Shannon 4b08c3a5c3 Reset PluginManager on each tests, no reason not to, this should resolve the issue 2017-10-09 18:20:07 +11:00
Shannon fbda4fc8d1 Fixes part of the failing tests 2017-10-09 17:49:01 +11:00
Shannon 312b994537 Merge branch 'dev-v7' into temp-U4-10503-2 2017-10-09 16:42:21 +11:00
Shannon dd1bfe9cbf Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2017-10-09 16:08:14 +11:00
Shannon de17b69564 U4-10452 Unable to create new User Groups programmatically - publicizes UserGroup 2017-10-09 16:07:55 +11:00
Shannon 7f44f4a030 readonly field 2017-10-09 16:01:49 +11:00
Shannon 422219ab21 Updates the cache file paths to be resolved behind a lazy so that there's proper locking in place for accessing the value, this also makes the code a little nicer. 2017-10-09 16:01:22 +11:00
Shannon Deminick 9986a3c2c2 Merge pull request #2162 from Bitmapped/U4-9081-external
U4-10369: Split out ConfigureUmbracoAuthentication method
2017-10-09 15:50:45 +11:00
Shannon ce81416368 Ensures the DistCache file is stored in the same configured temp location as the plugin cache files 2017-10-09 14:50:34 +11:00
Shannon 04e04ae47a Ensures that the local folder does not also get created when using the env temp storage location, this is also a tiny bit better for perfs 2017-10-09 14:40:23 +11:00
Warren Buckley 0f6e7d26c9 Merge pull request #1596 from StefanoChiodino/U4-7721
U4-7721 install button miss aligned
2017-10-06 15:00:09 +01:00
Warren Buckley 51ceba6fea Merge pull request #1780 from bjarnef/dev-v7-U4-9599
U4-9599 - Fix caret in font size select
2017-10-06 14:25:55 +01:00
Sebastiaan Janssen 5dde2efe0d U4-10506 Importing a specially crafted document type file can cause XXE attack 2017-10-06 15:14:41 +02:00
Sebastiaan Janssen fe2b86b681 Html encode nodenames to prevent XSS attacks. Fixes U4-10497 XSS Vulnerability in page name. 2017-10-06 14:38:21 +02:00
Warren Buckley 368fec4ac1 Merge pull request #2231 from umbraco/temp-U4-10503
U4-10503 Umbraco plugins cache files should be stored in the same local temp location as the umbraco xml cache file
2017-10-06 13:27:22 +01:00
Shannon 9016147118 Streamlines temp folder name so it's consistent, ensure the folder exists before writing to it 2017-10-06 12:11:20 +11:00
Shannon bee75803f7 Adds file exist checks 2017-10-06 11:51:27 +11:00
Shannon 7b3f7f4ad4 U4-10503 Umbraco plugins cache files should be stored in the same local temp location as the umbraco xml cache file 2017-10-06 11:47:25 +11:00
Shannon Deminick f6c25f29c0 Merge pull request #2229 from keroberts/dev-v7-U4-10496
Fix Typo in Email Property Editor
2017-10-06 01:01:48 +11:00
keroberts 6de3b920eb Fix Typo in Email Property Editor 2017-10-05 14:04:02 +01:00
Sebastiaan Janssen 76dc311586 Merge branch 'dev-v7.6' into dev-v7
# Conflicts:
#	src/Umbraco.Tests/Web/Mvc/HtmlStringUtilitiesTests.cs
#	src/Umbraco.Web/HtmlStringUtilities.cs
2017-10-02 13:51:21 +02:00
Sebastiaan Janssen 581f15b172 Manually applying change from U4-10478 7.7.1 HtmlStringUtilities Truncate throws an IndexOutOfRange when input word is shorter than "…" and crash the entire site to 7.6.9 too. 2017-10-01 12:05:40 +02:00
Robert daf01fb0fa Merge pull request #2226 from erikarenhill/U4-10478
U4-10478: Bugfix where it would throw an IndexOutOfBounds
2017-09-30 00:32:57 +02:00
Zsolt 588640037c Merge pull request #2054 from bjarnef/dev-v7-U4-7044
U4-7044 - Adjust icon and heading to fix issue with icon position in IE
2017-09-29 10:28:10 +02:00
Zsolt 7b106caf95 Merge pull request #2214 from bjarnef/dev-v7-U4-10461
U4-10461 - Format dates using culture of current backoffice user
2017-09-29 10:14:27 +02:00
Zsolt 828a94bc4f Merge pull request #2213 from bjarnef/dev-v7-U4-10462
U4-10462 - Localize dropdown filters
2017-09-29 09:28:42 +02:00
Shannon efd1ea5b86 bumps version 2017-09-29 13:18:58 +10:00
Shannon 376d93de61 Merge remote-tracking branch 'origin/dev-v7.6' into dev-v7 2017-09-29 13:18:17 +10:00
Shannon 33d7598d3c Adding key fallback to list view select functions to fix issue when selecting multiple items with an ID of int.MaxValue 2017-09-29 13:16:53 +10:00
Shannon Deminick 6a74967a49 Merge pull request #2212 from callumbwhyte/U4-10464
U4-10464: Fixes selecting multiple list view items when item ID is int.MaxValue
2017-09-29 13:13:31 +10:00
Shannon 79351efd36 Fixes the JS errors with recent changes 2017-09-29 13:08:47 +10:00
Shannon Deminick 70c9da93e9 Merge pull request #2211 from callumbwhyte/U4-10463
U4-10463: Fixes Backoffice opening custom section on login instead of content section
2017-09-29 12:30:16 +10:00
Shannon Deminick 521acc0618 Merge pull request #2220 from umbraco/temp-U4-10437
U4-10437 Listview children not showing after upgrade to 7.7
2017-09-29 12:24:02 +10:00
Shannon 95c3a7386d simplifies logic 2017-09-29 12:21:48 +10:00
Sebastiaan Janssen 448a99d5a4 Fix "Item already exists in dictionary" when selecting items in the list view 2017-09-28 22:00:25 +02:00
Sebastiaan Janssen 83f705e19f Merge branch 'dev-v7' into temp-U4-10437 2017-09-28 20:07:27 +02:00
Sebastiaan Janssen 880ae5cb95 Merge remote-tracking branch 'origin/dev-v7.6' into dev-v7 2017-09-28 20:01:44 +02:00
Sebastiaan Janssen 476773fce5 Merge pull request #2224 from umbraco/temp-U4-5222
U4-5222 Rollback Feature fails to update the UI to show the rolled ba…
2017-09-28 20:00:13 +02:00
Sebastiaan Janssen 953355cddd Merge pull request #2222 from umbraco/temp-U4-10364-2
U4-10364 SQL error occurs when we attempt to sort media items by "Cre…
2017-09-28 19:39:19 +02:00
Zsolt e0801cd05a Merge branch 'dev-v7' into dev-v7-U4-10462 2017-09-28 16:33:25 +02:00
erikarenhill b363a1711a U4-10478: Bugfix where it would throw an IndexOutOfBounds when passing a word shorter than … to Truncate. Now checks whether the input wanted an elipsis and also if it reached the end. 2017-09-28 15:52:13 +02:00
negyven6 45fca02dd1 Merge pull request #2210 from bjarnef/dev-v7-U4-10442
U4-10442 - Localization of users section
2017-09-28 15:18:15 +02:00
Sebastiaan Janssen b426f92e4f Update README.md 2017-09-28 13:53:18 +02:00
Sebastiaan Janssen 3e3372752a Update README.md 2017-09-28 13:52:16 +02:00
negyven6 4104ffc699 Merge pull request #2204 from bjarnef/dev-v7-fix-cropper-zindex
U4-10440 - Fix image cropper z-index with focal point behind sticky bar
2017-09-28 11:36:43 +02:00
negyven6 f63aa2e2ed Merge pull request #2207 from bjarnef/dev-v7-U4-10446
U4-10446 - Fix IE issues with action button in tree
2017-09-28 10:35:07 +02:00
negyven6 57553a5956 Merge pull request #2206 from bjarnef/dev-v7-U4-10445
U4-10445 - Fix IE issues with user boxes
2017-09-28 10:22:21 +02:00
Shannon d2d43255aa U4-5222 Rollback Feature fails to update the UI to show the rolled back content - requires refresh 2017-09-28 02:38:53 +10:00
Shannon 9ad767a285 removes regex configuration bits 2017-09-27 23:13:02 +10:00
Shannon b39e218d51 U4-10364 SQL error occurs when we attempt to sort media items by "Created by" column 2017-09-27 23:04:53 +10:00
Shannon 22ff362521 Changes email validation in c# to use the email address attribute like we do elsewhere in the codebase, adds unit test assertions to verify it validates the new odd email addresses 2017-09-27 22:50:47 +10:00
Shannon Deminick 3bbeb6670b Merge pull request #2215 from umbraco/temp-U4-10439
U4-10439 Email validation in installer, User and Member editor need t…
2017-09-27 22:34:47 +10:00
Shannon Deminick 581b1b6fbf Merge pull request #2208 from Sam7/U4-10444
Fix for: U4-10444 - External Logins have stopped working since the 7.…
2017-09-27 22:27:35 +10:00
Shannon 4053c52dfb U4-10437 Listview children not showing after upgrade to 7.7 2017-09-27 22:17:50 +10:00
Sebastiaan Janssen 6a80cc5708 The order matters.. go figure! 2017-09-27 13:32:03 +02:00
Sebastiaan Janssen 01ba781e75 Make sure to expose the regex during install so the validation actually works 2017-09-27 13:06:43 +02:00
Sebastiaan Janssen b477ed726d Change input types to email instead of text 2017-09-27 12:45:44 +02:00
Sebastiaan Janssen 147d6aa638 Revert to the previous regex we had, which was actually working great 2017-09-27 12:36:43 +02:00
Sebastiaan Janssen efca0a904d Adds a test for gmail syntax email aliases 2017-09-27 12:11:47 +02:00
Sebastiaan Janssen 7e25501ac5 Merge remote-tracking branch 'origin/dev-v7.6' into dev-v7
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-27 10:08:44 +02:00
Sebastiaan Janssen 4b581a2182 Merge pull request #2217 from umbraco/temp-U4-10470
U4-10470 Missing transform for the scripts tree when upgrading
2017-09-27 10:06:08 +02:00
Claus 581eac5369 U4-10470 Missing transform for the scripts tree when upgrading 2017-09-27 10:04:07 +02:00
Shannon Deminick c941ff093c Merge pull request #2216 from rasmusjp/patch-1
Fix incorrect closed div
2017-09-27 08:30:07 +10:00
Rasmus 60f9490892 Fix incorrect closed div 2017-09-26 22:28:13 +02:00
Sebastiaan Janssen 7c864fe2e9 Whoops change hardcoded regex to one provided by the configuration 2017-09-26 15:27:35 +02:00
Sebastiaan Janssen 8a52865d22 U4-10439 Email validation in installer, User and Member editor need to be the same 2017-09-26 15:23:47 +02:00
Niels Hartvig 78e5d6d3ad Merge pull request #2203 from umbraco/temp-U4-10435
U4-10435 Unable to Change Username (Reverts After Save)
2017-09-26 11:15:39 +02:00
Sebastiaan Janssen 33cf983cae Bump version 2017-09-25 11:19:36 +02:00
Shannon 3ce6eb09aa Ensures HealthCheckController is authorized to user with developer access
(cherry picked from commit 7c4eb71f07)
2017-09-25 10:48:15 +02:00
Stephan 963015cf4a Fix LocalDb detection on 32/64 bits systems
(cherry picked from commit a239e92bc0)
2017-09-25 10:47:38 +02:00
Sebastiaan Janssen cc35af4eab Merge pull request #2209 from umbraco/temp-deploy-401
deploy-401 - fix id reservations
2017-09-25 10:46:05 +02:00
Shannon 7c4eb71f07 Ensures HealthCheckController is authorized to user with developer access 2017-09-25 14:49:59 +10:00
Bjarne Fyrstenborg 9282312305 Format dates using culture of current backoffice user 2017-09-24 23:02:45 +02:00
Bjarne Fyrstenborg fc46569cd9 Add comment 2017-09-24 22:11:12 +02:00
Bjarne Fyrstenborg 30f42f4ea8 Fix dropdown issue with checkbox because of long label text 2017-09-24 21:57:05 +02:00
Bjarne Fyrstenborg fa777c46b1 Localize user filters 2017-09-24 21:43:23 +02:00
Callum Whyte a01f69807c Adding key fallback to list view select functions to fix issue when selecting multiple items with an ID of int.MaxValue 2017-09-24 19:11:58 +01:00
Callum Whyte e12498ccae Moving default or empty check for section routeParam into routing resolve function so it's handled earlier in the pipeline 2017-09-24 18:34:16 +01:00
Bjarne Fyrstenborg 4fc51e4a8b Translate last login 2017-09-23 02:19:55 +02:00
Bjarne Fyrstenborg 4c3e66e58d Ensure localization is used like in other tree controllers 2017-09-23 02:17:29 +02:00
Bjarne Fyrstenborg 17abd53b1b More localization of labels 2017-09-23 02:10:08 +02:00
Bjarne Fyrstenborg 202a3e10b5 Localize cancel link in dialog 2017-09-22 23:30:07 +02:00
Bjarne Fyrstenborg 925f64c79d Localize "select user group" dialog heading 2017-09-22 23:26:09 +02:00
Bjarne Fyrstenborg c28e5f4d55 Localize user group delete button 2017-09-22 23:25:19 +02:00
Bjarne Fyrstenborg 439c460220 Localize user management heading 2017-09-22 23:12:33 +02:00
Bjarne Fyrstenborg ae1702c62a Remove unused translation keys 2017-09-22 23:03:38 +02:00
Bjarne Fyrstenborg 1ed29fb8bb Add translations of new user management and fix other translations 2017-09-22 23:01:43 +02:00
Sebastiaan Janssen c9ea1a5504 Copy Azure Gallery script to output folder 2017-09-22 17:03:20 +02:00
Sebastiaan Janssen 10da318989 Get-FileHash is now unused 2017-09-22 16:54:34 +02:00
Sebastiaan Janssen 74e3308017 Adds Azure Gallery release script - no more need for WebPI builds 2017-09-22 16:52:04 +02:00
Stephan 349d89e4d7 deploy-401 - fix id reservations 2017-09-22 13:08:05 +02:00
Sam Sperling 201ac076c3 Fix for: U4-10444 - External Logins have stopped working since the 7.7.1 update when using auto linking 2017-09-22 13:55:15 +10:00
Bjarne Fyrstenborg bc2e9936d8 Fix issue in IE10 where width 100% pushed action button (dots) out of tree section 2017-09-22 00:01:34 +02:00
Bjarne Fyrstenborg e8e9f5ca49 Fix squeezed action button (dots) in IE 2017-09-22 00:00:39 +02:00
Bjarne Fyrstenborg b938685db0 Ensure longer text in user box is wrapped in IE, e.g. "Migrated Section Access Group 1" 2017-09-21 23:25:40 +02:00
Bjarne Fyrstenborg 39498ad362 Center avatar horizontally in IE 2017-09-21 23:24:10 +02:00
Sebastiaan Janssen 92b6e276bf U4-10443 Remove xmlrpcnet from nuspec 2017-09-21 08:44:59 +02:00
Stephan a239e92bc0 Fix LocalDb detection on 32/64 bits systems 2017-09-21 08:32:49 +02:00
Sebastiaan Janssen e0025db56d Merge remote-tracking branch 'origin/dev-v7.7' into dev-v7 2017-09-21 08:26:59 +02:00
Bjarne Fyrstenborg 1238c10b3d Ensure close button is behind sticky bar 2017-09-20 18:39:51 +02:00
Bjarne Fyrstenborg 35177eea9f Fix image cropper z-index with focal point behind sticky bar 2017-09-20 18:01:51 +02:00
Sebastiaan Janssen 7cd632302b Only sync the email and username when UsernameIsEmail is true - U4-10435 Unable to Change Username (Reverts After Save) 2017-09-20 13:34:19 +02:00
Shannon Deminick 7142222234 Merge pull request #2201 from wanddy/dev-v7
Improve Chinese translation
2017-09-20 09:36:30 +10:00
Sebastiaan Janssen fd35d89949 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-19 18:51:23 +02:00
Sebastiaan Janssen 1b3fc9fb21 Oops! Add -docs for all the log file pipes 2017-09-19 18:37:00 +02:00
Sebastiaan Janssen 2e98651d62 Create the out and tmp folders correctly 2017-09-19 18:16:19 +02:00
Sebastiaan Janssen 704e981284 Always do the node/bower/gulp build to get docs, start with node build first 2017-09-19 18:15:31 +02:00
Sebastiaan Janssen 0070d8b913 Bump version 2017-09-19 14:23:58 +02:00
Sebastiaan Janssen 9c0500325d Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-19 14:23:26 +02:00
Sebastiaan Janssen eda7f1e527 Bump version 2017-09-19 14:17:19 +02:00
Sebastiaan Janssen 018a066f86 U4-10428 Can't drag Image in Image Cropper (in Umbraco 7.6.7) 2017-09-19 14:10:20 +02:00
Sebastiaan Janssen e33a28ac19 Making sure we don't build Belle twice for the documentation 2017-09-19 11:38:20 +02:00
Wanddy Huang(黄仁祥) 0f17a27d86 Improve Chinese translation
Improve Chinese translation.
2017-09-19 15:56:47 +08:00
Wanddy Huang(黄仁祥) 9c24dc71a4 Merge pull request #2 from umbraco/dev-v7
Merge from origin source
2017-09-19 15:49:16 +08:00
Shannon 6205d8a9f9 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web/Editors/AuthenticationController.cs
2017-09-19 13:34:08 +10:00
Shannon 0ef57d819c removes uneeded null checks from AuthenticationController for raising UserManager events 2017-09-19 13:31:43 +10:00
Sebastiaan Janssen 0dfbe4d4eb Bump version 2017-09-18 23:08:32 +02:00
Sebastiaan Janssen d0e99bf5d9 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-18 22:31:20 +02:00
Sebastiaan Janssen c321d6dd44 Adds files missing from build output 2017-09-18 16:52:43 +02:00
Sebastiaan Janssen 48f2aa4f15 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-18 14:19:47 +02:00
Sebastiaan Janssen 5d74e61bcf Bump version 2017-09-18 14:16:57 +02:00
Shannon 029ace796d Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Security/BackOfficeUserManager.cs
#	src/Umbraco.Web/Security/Providers/UsersMembershipProvider.cs
2017-09-18 20:04:05 +10:00
Shannon 8b39f495e5 Simplifies the UnlockUser method so we don't have to have it in the BackOfficeUserManager 2017-09-18 19:59:23 +10:00
Shannon a5581ba13e ensures the UsersController raises the appropriate event when an admin user changes another user's password 2017-09-18 19:42:49 +10:00
Shannon e8e0664129 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7, removes the UnlockUser method of BackOfficeUserManager since the membership provider is no longer used to perform any unlocking 2017-09-18 19:38:10 +10:00
Shannon d468e346f1 reverts changes made to UmbracoMembershipProvider and adds another virtual internal method that the UsersMembershipProvider overrides, so now all of the event raising is done in the user specific provider. 2017-09-18 19:01:00 +10:00
Shannon 2a10eed059 Moves raising events for reseting/changing password out of the MembershipHelper ChangePassword method and to the places where it is being called 2017-09-18 16:56:43 +10:00
Shannon 4ec04c779a Adds notes about the UnlockUser method as we'll need to change this in 7.7 2017-09-18 16:29:29 +10:00
Shannon 26034fa33f Changes ResetAccessFailedCountAsync in BackOfficeUserManager to use Identity APIs 2017-09-18 16:24:23 +10:00
Shannon 97ddbdb1f0 Makes IdentityAuditEventArgs immutable and injects all required values, makes the events strongly typed. 2017-09-18 16:17:54 +10:00
Shannon 20290582d9 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-18 15:37:23 +10:00
Shannon Deminick 731c51bfc7 Merge pull request #2200 from abjerner/patch-21
Just had to have #2200 (Danish translations for the user section in Umbraco 7.7)
2017-09-18 15:05:43 +10:00
Shannon Deminick 78cb085e00 Merge pull request #2199 from abjerner/patch-20
Added missing Danish translation for "searchNoResult" in "general
2017-09-18 15:05:01 +10:00
Shannon Deminick f2ea4596d7 Merge pull request #2198 from abjerner/patch-19
Added translations for labels when creating a new partial view
2017-09-18 15:04:10 +10:00
Shannon Deminick f9d5de7af4 Merge pull request #2197 from abjerner/patch-18
Added Danish translation for "remove" in "general"
2017-09-18 15:03:38 +10:00
Anders Bjerner 04c6fd0947 Added Danish translation for "enabled" in the "actions" section
Also used in the new users section
2017-09-17 22:47:05 +02:00
Anders Bjerner 8bcf35734d Added some missing Danish translations for the new user section
There appears to be some hardcoded labels here and there, which may be for another pull request.
2017-09-17 22:45:38 +02:00
Anders Bjerner 4de7da2ac1 Added missing translation for "searchNoResult"
Used in Umbraco's list views when the search query doesn't match any items
2017-09-17 22:24:22 +02:00
Anders Bjerner 67d12ae2ca Added translations for labels when creating a new partial view
I think "partial view" and "snippet" still makes sense in Danish, so I've only translated the text around it.
2017-09-17 22:17:37 +02:00
Anders Bjerner e8ba069051 Added Danish translation for "remove" in "general"
The Danish translation is missing in both 7.6 and 7.7 beta. The label is used by the new content picker (and probably other parts of Umbraco as well):

![image](https://user-images.githubusercontent.com/3634580/30523147-64c23ce0-9bdc-11e7-9a48-8d2de93fce72.png)
2017-09-17 19:15:02 +02:00
Sebastiaan Janssen bb88eb155f Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Security/BackOfficeSignInManager.cs
#	src/Umbraco.Core/Security/BackOfficeUserManager.cs
#	src/Umbraco.Web/Editors/AuthenticationController.cs
#	src/Umbraco.Web/Security/MembershipHelper.cs
#	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
2017-09-15 16:34:51 +02:00
Sebastiaan Janssen a3457d2498 Merge pull request #1923 from umbraco/temp-U4-8634
U4-8634 Usermanagement - Proper auditing of user events instead of just adding log entries
2017-09-15 15:13:14 +02:00
Sebastiaan Janssen 388d660e11 Raise event when login succeeds after 2FA challenge. Raise event when locked out during 2FA attempts. 2017-09-15 15:12:40 +02:00
Sebastiaan Janssen b6dbc245e2 Merge branch 'dev-v7' into temp-U4-8634 2017-09-15 13:57:46 +02:00
Sebastiaan Janssen 3efba6b576 Update title of preview window 2017-09-15 13:52:26 +02:00
Sebastiaan Janssen 3803785569 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-15 13:51:23 +02:00
Sebastiaan Janssen 54407a66a4 Fixes canvas designer 2017-09-15 13:50:43 +02:00
Sebastiaan Janssen 3f82781c0f Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-14 16:15:43 +02:00
Sebastiaan Janssen bca46f11ad Makes the sort order input same size as the one on tabs 2017-09-14 16:11:23 +02:00
Warren Buckley a86b8f786d Merge pull request #1817 from marcemarc/temp-U4-6738
Relates to Issue U4-6738 - Allow viewing/sorting of composition properties.
2017-09-14 14:55:48 +01:00
Warren Buckley ac3eaf43cb Forgot to revert the logic for the extra button/label click to show the sort order on properties 2017-09-14 14:16:47 +01:00
Robert f6d4170010 Merge pull request #1633 from bjarnef/dev-v7-U4-9149
fixes: U4-9149 - Fix z-index of focal point
2017-09-14 15:15:51 +02:00
Warren Buckley 2b0ea45da9 Remove the extra button/click in the UI & show the property sortOrder value when we are sorting 2017-09-14 14:13:42 +01:00
Warren Buckley 07d05c9e0d Revert "toggle the show ordinals label button to hide, when in show ordinal mode"
This reverts commit 51215f11af.
2017-09-14 14:09:00 +01:00
Warren Buckley 26a5682a14 Revert "add language translations keys for showOrdinals and hideOrdinals"
This reverts commit 8ab2f7c257.
2017-09-14 14:08:00 +01:00
Sebastiaan Janssen 5ab364781b Sync en and en_us language 2017-09-14 14:29:53 +02:00
Sebastiaan Janssen c2d328685d Remove wrong and misleading translation key that's unused 2017-09-14 14:29:26 +02:00
Mads Rasmussen c013be4f36 add missing language keys for en_us.xml 2017-09-14 14:04:25 +02:00
Sebastiaan Janssen f3fc2bcfb8 Merge pull request #2177 from umbraco/temp-U4-10384
U4-10384 Error when changing content type on media item
2017-09-14 13:46:32 +02:00
Robert c8d49ed5a7 Merge pull request #2195 from umbraco/temp-U4-10413
fixes: U4-10413 Composition/Reorder bar gets in the way when editing …
2017-09-14 11:41:04 +02:00
Mads Rasmussen 9c2b0a3ef6 fixes: U4-10413 Composition/Reorder bar gets in the way when editing or adding a property 2017-09-14 11:04:34 +02:00
Shannon 703c3eefe8 Fixes issue with trying to log in as a user that is disabled. 2017-09-14 19:00:59 +10:00
Shannon 4ab67d8cff fix build 2017-09-14 18:28:02 +10:00
Shannon f8d165599d Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-14 18:10:59 +10:00
Stephan 9355a81716 comments 2017-09-14 10:08:35 +02:00
Per Ploug 87575e9067 Reverting grid config 2017-09-14 10:04:04 +02:00
Sebastiaan Janssen a5b31e94b6 Merge pull request #2194 from umbraco/temp-U4-10409
temp - vsts troubleshooting
2017-09-14 09:32:04 +02:00
Shannon 3815a6c607 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-14 16:17:44 +10:00
Shannon Deminick f9e094a00a Merge pull request #2193 from gunnim/dev-v7
U4-9562 - HealthCheckResolver from internal to public
2017-09-14 15:36:13 +10:00
Gunnar Már Óttarsson 053175a5a6 Fix http://issues.umbraco.org/issue/U4-9562
Change HealthCheckResolver to public allowing DI
2017-09-13 19:24:46 +00:00
Stephan ce7488a924 temp - vsts troubleshooting 2017-09-13 18:23:19 +02:00
Sebastiaan Janssen 6cd2a15964 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/UdiEntityType.cs
2017-09-13 17:34:35 +02:00
Sebastiaan Janssen f442599633 Merge pull request #2191 from umbraco/temp-U4-10409
U4-10409 UDI Parsing should not require scanning assemblies
2017-09-13 17:28:33 +02:00
Sebastiaan Janssen 37b6b42570 Merge branch 'temp-U4-10409' of https://github.com/umbraco/Umbraco-CMS into temp-U4-10409 2017-09-13 17:20:49 +02:00
Stephan f1149fb826 U4-10409 - revert unwanted files 2017-09-13 17:20:06 +02:00
Sebastiaan Janssen 3f8f96e8c3 Merge branch 'dev-v7' into temp-U4-10409 2017-09-13 17:18:09 +02:00
Sebastiaan Janssen 8ebbfca17d Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-09-13 13:15:28 +02:00
Sebastiaan Janssen 076a8e0e23 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/umbraco.sln
2017-09-13 13:09:20 +02:00
Stephan 44da6c9f97 Merge pull request #2188 from umbraco/temp-U4-10401
U4-10401 Being able to rename Data Type folders
2017-09-13 13:08:09 +02:00
Sebastiaan Janssen a75181bd7f Update sln to not refer to old build scripts any more 2017-09-13 13:07:22 +02:00
Stephan 058ad9f99a Merge branch 'dev-v7.7' into temp-U4-10401 2017-09-13 12:12:10 +02:00
Sebastiaan Janssen dd440eb9d5 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
2017-09-13 12:09:17 +02:00
Sebastiaan Janssen 00b469b61b Easy ps script to just update the Umbraco version without having to do a full build 2017-09-13 12:07:29 +02:00
Sebastiaan Janssen 83f08538c2 U4-10407 We should log unhandled exceptions that occur in webapi controllers and always have detailed errors returned to users even when not in debug mode
# Conflicts:
#	src/Umbraco.Web/WebApi/UmbracoAuthorizedApiController.cs
2017-09-13 12:05:02 +02:00
Sebastiaan Janssen aafe0e1c6c Merge pull request #2189 from umbraco/temp-U4-10407
U4-10407 We should log unhandled exceptions that occur in webapi controllers and always have detailed errors returned to users even when not in debug mode
2017-09-13 12:04:29 +02:00
Stephan ef91e152b4 U4-10409 - udi parsing and assembly scanning 2017-09-13 12:00:56 +02:00
Stephan add0685d3f U4-10409 - udi parsing 2017-09-13 09:35:17 +02:00
Shannon 27fc3a9bb3 U4-10409 UDI Parsing should not require scanning assemblies 2017-09-13 14:16:43 +10:00
Shannon Deminick bbc625f65d Merge pull request #2190 from abryukhov/temp-U4-10404
U4-10404 - v7.7 - added & changed UI localization keys sync for RU language
2017-09-13 09:44:53 +10:00
Alexander Bryukhov 8b34ab24f4 v7.7 - added & changed UI localization keys sync for RU language 2017-09-12 23:54:17 +07:00
Stephan e8faf54edf Merge pull request #2187 from umbraco/temp-U4-10118
temp u4 10118
2017-09-12 16:05:55 +02:00
Stephan 8548ee7761 u4-10118 - don't create a FS provider manager just to reset it 2017-09-12 16:05:35 +02:00
Claus ac391f3bcd Merge branch 'temp-unittests-for-urls' into dev-v7 2017-09-12 15:04:08 +02:00
Claus 0700e37830 adding unit tests for urls.
adding unit test for creating child content without identity.
cleaning up some usings ...
2017-09-12 14:44:01 +02:00
Shannon 7a71f64978 U4-10407 We should log unhandled exceptions that occur in webapi controllers and always have detailed errors returned to users even when not in debug mode 2017-09-12 21:54:55 +10:00
Shannon 643d0012c6 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-12 20:22:21 +10:00
Shannon Deminick 5f4985b4eb Merge pull request #2185 from tomvanenckevort/U4-10184
U4-10184 - Fixed string splitting in MultipleTextStringValueConverter.
2017-09-12 20:19:32 +10:00
Sebastiaan Janssen 14ff7cbcc7 Comment out tests that are described in the file not to be working - so build server doesn't fail 2017-09-12 12:18:06 +02:00
Sebastiaan Janssen 4d7f66736d Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-12 11:41:37 +02:00
Stephan d179792cc3 perfs - fix IsPublishable silly bug 2017-09-12 11:39:34 +02:00
Sebastiaan Janssen 4cb7b29f60 Try to make build server do the npm/gulp tasks on it's own 2017-09-12 11:20:46 +02:00
Sebastiaan Janssen fb2f9cea64 Make VSTS responsible for padding the build number 2017-09-12 11:03:56 +02:00
Sebastiaan Janssen 394f21f4be Make it possible for the build server to set an alpha build version 2017-09-12 10:38:22 +02:00
Claus 32cd9d44cb Merge pull request #1831 from leekelleher/issue/U4-9678
Fixes U4-9678 - XPath Syntax Parser slowdown
2017-09-12 10:19:36 +02:00
Robert 7aeed3ae2f Changed to dataType constant guid 2017-09-12 10:19:31 +02:00
Robert 8269203a47 Added missing "$" and missing rename icon to the DataTypeTreeController 2017-09-12 09:35:15 +02:00
Sebastiaan Janssen 1eea4867af Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-12 09:21:39 +02:00
Sebastiaan Janssen 237b7176bf I see, we explicitly need to tell MsBuild not to build belle, fine 2017-09-12 09:19:34 +02:00
Tom van Enckevort 1fa2c16668 U4-10184 - Fixed string splitting in MultipleTextStringValueConverter. 2017-09-12 08:15:14 +01:00
Sebastiaan Janssen 63343d89de Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-12 09:05:28 +02:00
Sebastiaan Janssen 1c5e2b5f73 No need for UmbracoBuild=True - the build scripts already manually build Belle once, this would just cause it to run again during MSBuild 2017-09-12 09:02:57 +02:00
Sebastiaan Janssen 26cce02984 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web.UI.Client/test/config/karma.conf.js
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-12 08:52:10 +02:00
Sebastiaan Janssen 30af8cb928 Only build Belle when UmbracoBuild is set (from powershell input), lib folder doesn't exist or on rebuild 2017-09-12 08:47:36 +02:00
Robert 9fd0e7771d Rename logic in place 2017-09-12 08:28:18 +02:00
Shannon 68a30c3906 fixes issue when referencing a key that doesn't exist 2017-09-12 16:25:12 +10:00
Shannon 65b44137d4 Fixes JS unit test runner 2017-09-12 16:02:40 +10:00
Shannon 81155c2ff8 collate is not supported in sqlce 2017-09-12 15:24:17 +10:00
Shannon 59afcd8be7 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-12 13:38:34 +10:00
Shannon Deminick 41eeb38c5f Merge pull request #2043 from umbraco/TEMP-u4-10135
Added TruncateByWords method + overloads
2017-09-12 13:36:00 +10:00
Shannon 4356d3f94a publicizes class, fixes up some naming and removes unneeded DirectoryInfo allocations 2017-09-12 13:30:57 +10:00
Shannon Deminick ba072aec7c Merge pull request #2183 from umbraco/temp-U4-10400
U4-10400 Clear CDF temp files during upgrades
2017-09-12 13:26:41 +10:00
Shannon 68f1120b4f U4-10118 Umbraco.Core.IO.FileSystemProviderManager is simply not testable and cannot be properly used or setup in tests 2017-09-12 13:18:34 +10:00
Shannon b884bed7cf updates db migrations to deal with very rare/old existing tables and indexes along with dealing with non standard collations 2017-09-12 12:43:21 +10:00
Shannon 1f083ca21c removes the Belle build stuff from the csproj 2017-09-12 12:41:39 +10:00
Shannon b9ecb7e1d8 updates the upgrade nuget readme 2017-09-12 11:43:54 +10:00
Sebastiaan Janssen ad8ef56920 Update version 2017-09-11 16:27:43 +02:00
Sebastiaan Janssen 1ff352ddc4 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-11 16:24:44 +02:00
Sebastiaan Janssen f1d3b1a6d3 Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2017-09-11 16:23:08 +02:00
Sebastiaan Janssen 45f9919e57 Don't include pdb files in the built zip files 2017-09-11 16:21:51 +02:00
Sebastiaan Janssen 3275f03aff Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	.gitignore
#	build/UmbracoVersion.txt
#	src/Umbraco.Web.UI.Client/src/views/content/content.edit.controller.js
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-11 15:46:54 +02:00
Sebastiaan Janssen 857b7cc608 Merge pull request #2003 from umbraco/temp-u4-10006
U4-10006 - VSTS/PS migration
2017-09-11 15:43:50 +02:00
Sebastiaan Janssen c23160f915 Merge remote-tracking branch 'origin/dev-v7' into temp-u4-10006
# Conflicts:
#	src/Umbraco.Web.UI.Client/test/unit/app/content/edit-content-controller.spec.js
#	src/Umbraco.Web.UI.Client/test/unit/app/media/edit-media-controller.spec.js
#	src/Umbraco.Web.UI.Client/test/unit/app/propertyeditors/content-picker-controller.spec.js
#	src/Umbraco.Web.UI.Client/test/unit/common/services/content-factory.spec.js
2017-09-11 15:08:15 +02:00
Mads Rasmussen 3e3a180fe4 found better check for unit test fixes 2017-09-11 14:35:17 +02:00
Sebastiaan Janssen c55cf75ada Use HttpContext from the controller 2017-09-11 13:30:06 +02:00
Mads Rasmussen fb60647b5a fix failing unit test: fix karma syntax for spyOn 2017-09-11 12:55:46 +02:00
Sebastiaan Janssen 23950c0cac U4-10400 Clear CDF temp files during upgrades 2017-09-11 12:22:38 +02:00
Shannon d808438288 moves the rename menu item above delete (shouldn't be last) 2017-09-11 20:03:50 +10:00
Shannon 909319184c adds null check during folder rename 2017-09-11 19:51:28 +10:00
Claus 082e399293 Merge pull request #1215 from IurieM/Add-error-calback-handler-for-unpublish-even-in-contetn.edit.controller
Add error callback handler for unpublish event in content.edit.controller
2017-09-11 11:51:09 +02:00
Robert 026e46cec0 Merge pull request #2166 from umbraco/lars-erik-U4-7580-rename-containers
Make U4-7580 (DocTypes/MediaTypes folder re-nameable feature) work with Deploy
2017-09-11 11:19:30 +02:00
Shannon 7e794dd021 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-11 19:14:01 +10:00
Shannon 0b14f255d2 syncs more translation bits 2017-09-11 19:00:11 +10:00
Mads Rasmussen c4ab25f1ac fixing first round of unit tests 2017-09-11 10:50:54 +02:00
Shannon e6edaf1c3a Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-09-11 18:44:17 +10:00
Shannon c4810ba45a fixes quirk with change password directive and new members - fixes merge issue where the controller for the directive was cleared 2017-09-11 18:44:02 +10:00
Mads Rasmussen b669741adb fixes missing language keys in invite user 2017-09-11 10:26:44 +02:00
Shannon c232fa2add fixes tree header localization for the default (US) language, was missing partial views 2017-09-11 16:34:29 +10:00
Mads Rasmussen 29f3acc23e Merge pull request #2163 from umbraco/temp-U4-10275
U4-10275 Render 'site' nodes for the content/media trees for users with non root access
2017-09-10 18:04:59 +02:00
Sebastiaan Janssen 3f55abaf59 Create directories only when they don't exist 2017-09-09 16:48:13 +02:00
Sebastiaan Janssen 001e15f83c Documentation build goes through gulp now too 2017-09-09 16:41:02 +02:00
Sebastiaan Janssen 34e3257ddb Ignore failing unit tests to check if VSTS will continue 2017-09-09 15:54:24 +02:00
Sebastiaan Janssen 2b64cfb4b9 Update with the new gulp build 2017-09-09 15:15:56 +02:00
Sebastiaan Janssen a499744084 Move BUILD.md to root, adds build.bat 2017-09-09 15:09:34 +02:00
Sebastiaan Janssen c72ecda18c VS is always install in {major}.0 - currently so when running 15.3, don't use the minor version in the path 2017-09-09 15:08:08 +02:00
Sebastiaan Janssen 3423d8b2cc Merge branch 'dev-v7' into temp-u4-10006
# Conflicts:
#	.gitignore
#	build/Build.bat
#	build/Build.proj
#	build/BuildBelle.bat
#	build/UmbracoVersion.txt
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-09 14:54:48 +02:00
Sebastiaan Janssen e6bf4e6c69 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-09 00:02:36 +02:00
Sebastiaan Janssen 37c4fc5f74 Don't try to remove directories that don't exist 2017-09-09 00:02:08 +02:00
Sebastiaan Janssen ac8a0ddc58 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-08 23:52:23 +02:00
Sebastiaan Janssen 406a206b03 Apparently we still have a node_modules folder, but no more xslt folder though! 2017-09-08 23:50:15 +02:00
Sebastiaan Janssen e7fc252f4c Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-08 23:29:58 +02:00
Sebastiaan Janssen 55e0af118a Weirdly this errored out on 7.7 with a "Task 'cli' is not in your gulpfile" error..
not sure why this exact same file works in this branch
2017-09-08 23:29:16 +02:00
Sebastiaan Janssen c66a763406 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-08 18:58:48 +02:00
Sebastiaan Janssen 718ed19fb9 Forgot to remove this.. Seb is getting tired! 2017-09-08 15:05:15 +02:00
Sebastiaan Janssen 32999b7e19 Correction, we don't need this file after all :-) 2017-09-08 14:58:50 +02:00
Sebastiaan Janssen ce63251206 Adds missing file to gulp build 2017-09-08 14:53:33 +02:00
Sebastiaan Janssen 7b641f4771 Adds missing files for the build server 2017-09-08 14:45:00 +02:00
Sebastiaan Janssen 708d060c3b Fix up BuildBelle.bat 2017-09-08 14:12:54 +02:00
Sebastiaan Janssen e254dddbd4 Copy the js and lib files from the correct directories 2017-09-08 14:12:54 +02:00
Sebastiaan Janssen 87c2c5455c We don't have node_modules in this directory any more 2017-09-08 14:12:54 +02:00
Sebastiaan Janssen 8544aa685b VS loves managing whitespace.. go ahead then 2017-09-08 14:12:53 +02:00
Sebastiaan Janssen 09c23e93c2 Looks for the build output app.js to determine if we need to call BuildBelle.bat 2017-09-08 14:12:53 +02:00
Sebastiaan Janssen 9946d36d00 Ignore npm-debug.log 2017-09-08 14:12:53 +02:00
Sebastiaan Janssen 7012633fdd Install gulp before gulp-cli 2017-09-08 14:12:53 +02:00
Claus 6e348a3a1a Merge branch 'HarveyWilliams-patch-4' into dev-v7 2017-09-08 13:59:35 +02:00
Claus 733c920867 using string.replace instead of regex.
adding unit test.
2017-09-08 13:57:28 +02:00
Mads Rasmussen 35fc997d9f fix stylesheets for canvas designer/preview 2017-09-08 13:13:26 +02:00
Claus 921e8a2529 Merge pull request #2180 from umbraco/temp-U4-10392
U4-10392 Culture and hostnames with special characters can register a…
2017-09-08 11:27:25 +02:00
Claus 22bd6cd989 U4-10392 Culture and hostnames with special characters can register as collisions 2017-09-08 11:25:41 +02:00
Shannon 5398d24f58 disables deleting translator group 2017-09-08 16:07:58 +10:00
Shannon d06c92d249 fixes send to translate to lookup the translate group by the correct alias 2017-09-08 16:00:04 +10:00
Shannon 719d520a82 null check for change password 2017-09-08 15:59:35 +10:00
Shannon 75ace2b162 Fixes deleting a template - uses the correct way to delete stuff with angular and not relying on legacy code 2017-09-08 15:45:10 +10:00
Shannon 7ae95e31a1 Ensures the root node is not shown in the copy/media dialogs for content/media when start ndoes are assigned, fixes entity searching since there was js errors (maybe from a bad merge) 2017-09-08 15:16:13 +10:00
Shannon 81ba2069af fixed media start node mapping for user 2017-09-08 15:11:39 +10:00
Shannon 858c21c79f Ensures Content header node isn't shown in copy/move dialogs when the user has a start node set that is not the root 2017-09-08 14:28:18 +10:00
Shannon 504f32f25b Merge branch 'dev-v7.7' into temp-U4-10275 2017-09-08 13:53:02 +10:00
Shannon 38c961209e Ensure the user's administratively reset password doesn't get re-shown in the UI - that was based on an actual password reset 2017-09-08 13:48:32 +10:00
Shannon c39e1175fd Fixes up some more password changing quirks 2017-09-08 13:43:38 +10:00
Shannon 1d5348763d Fixes up invite message, fixes reset password quirk, ensures password values are cleared after changing password, ensures that the confirm password value is not posted to the server 2017-09-08 13:15:03 +10:00
Shannon 3c6ab8d34f Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-09-08 12:49:36 +10:00
Shannon 0713f12ba6 makes new classes internal 2017-09-08 12:02:20 +10:00
Shannon 8981fd23a8 makes new classes internal 2017-09-08 11:41:49 +10:00
Shannon ab3407a1aa Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Web.UI.Client/src/less/components/umb-packages.less
#	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
#	src/Umbraco.Web/Umbraco.Web.csproj
2017-09-08 11:31:04 +10:00
Sebastiaan Janssen dad4eafebd Enable RDP to figure out gulp build problem 2017-09-07 22:25:45 +02:00
Mads Rasmussen 96c9ecbdd7 fix calc functions 2017-09-07 21:39:41 +02:00
Sebastiaan Janssen e7e04de22e Merge pull request #2179 from umbraco/temp-dperfs
deploy-383 - dperfs
2017-09-07 20:46:31 +02:00
Sebastiaan Janssen 7003ef8d26 Remove circular dependency 2017-09-07 20:42:26 +02:00
Mads Rasmussen a5c78f6325 fix bower.json after merge - copy correct clipboard.js file 2017-09-07 20:27:52 +02:00
Shannon 6ea92daa70 fixes merge removes unused file 2017-09-07 23:03:01 +10:00
Shannon 65ece33ca9 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Models/UmbracoObjectTypes.cs
#	src/Umbraco.Web.UI.Client/bower.json
#	src/Umbraco.Web.UI.Client/gruntFile.js
#	src/Umbraco.Web.UI.Client/src/installer/_module.js
#	src/Umbraco.Web.UI.Client/test/config/karma.conf.js
2017-09-07 22:43:03 +10:00
Shannon Deminick 85758011b5 Merge pull request #2140 from umbraco/temp-U4-10268_2
U4-10268 7.7 Beta - Changing password should be safe by default
2017-09-07 22:38:45 +10:00
Shannon Deminick 49a48bbfce Merge pull request #2169 from umbraco/temp-deploy-391
deploy-391 - allow for id reservation
2017-09-07 22:35:21 +10:00
Warren Buckley 663d9fcfe8 Merge pull request #2075 from defsteph/U4-10197
U4-10197 Added missing translations for Swedish
2017-09-07 13:33:55 +01:00
Stephan d6f8b878d2 perfs - cleanup 2017-09-07 13:45:56 +02:00
Claus 598944d3d8 ensuring id is only set if unset. 2017-09-07 13:13:03 +02:00
Claus 3caecf5161 U4-10384 Error when changing content type on media item 2017-09-07 12:57:06 +02:00
Stephan b02b2a61f0 perfs - deploy context isCancelled 2017-09-07 12:44:08 +02:00
Claus 60f7211a80 Merge branch 'patch-4' of git://github.com/HarveyWilliams/Umbraco-CMS into HarveyWilliams-patch-4 2017-09-07 10:36:49 +02:00
Sebastiaan Janssen 56dc10a4f7 Merge pull request #2158 from umbraco/temp-gulp-spike
U4-10261 Change frontend build setup from grunt to gulp
2017-09-06 23:52:48 +02:00
Stephan dbda6689b6 perfs - suspendable 2017-09-06 18:50:54 +02:00
Stephan 8d6c8ef282 perfs - support LocalDb 2017-09-06 18:50:41 +02:00
Mads Rasmussen 12b4587828 null check for change password 2017-09-06 14:33:01 +02:00
Warren Buckley df8c75438a Merge pull request #2168 from ronaldbarendse/U4-9374
U4-9374 Navigation panel header and editor panel header don't line up properly in Firefox
2017-09-06 12:37:45 +01:00
Mads Rasmussen 77d240c69a don't show disallow cursor on the more button on a tree item (the three dots) 2017-09-06 13:31:13 +02:00
Warren Buckley 2d53da55a7 Merge pull request #2173 from tomfulton/u4-8886-2
U4-8886 - TinyMCE - highlight media picker toolbar icon when image selected
2017-09-06 12:25:01 +01:00
Mads Rasmussen 119dd5af29 auto expand tree to nodes with access 2017-09-06 13:11:58 +02:00
Robert 18d0fec014 Added some trimming and test to StripHtmlTags 2017-09-06 12:03:15 +02:00
Claus e1de9452b2 Merge pull request #2170 from umbraco/temp-U4-10333
U4-10333 Invite user needs extensibility points to work with Umbraco Cloud when no SMTP is set
2017-09-06 11:29:05 +02:00
Robert 851d587d1f Added Html Strip tests 2017-09-06 11:28:44 +02:00
Claus 25cb76e842 Merge remote-tracking branch 'origin/dev-v7.7' into temp-U4-10333
# Conflicts:
#	src/Umbraco.Web/Editors/UsersController.cs
2017-09-06 11:25:11 +02:00
Robert 6a3f94d0e1 Forgot to clean test names 2017-09-06 11:19:30 +02:00
Robert b1358936b4 Cleaning up tests and useless TruncateByWords functions 2017-09-06 11:17:06 +02:00
Robert b2798e38f7 Replaced html stripping with already existing function, removing unused code 2017-09-06 11:12:14 +02:00
Mikkel Holck Madsen b9baeea1a1 Merge pull request #2171 from umbraco/temp-U4-10368
U4-10368 Need option to set username different than e-mail for AD compatibility
2017-09-06 10:59:23 +02:00
Mikkel Holck Madsen dfa1a098c8 Merge pull request #2172 from umbraco/temp-U4-10214
U4-10214 Disable ability to delete admin group
2017-09-06 09:39:25 +02:00
mikkelhm 3b741d3075 Disallow selection of the admin group, as it should never be allowed 2017-09-06 09:37:35 +02:00
Claus 5ac0841ee4 Merge pull request #2175 from umbraco/temp-U4-10325
U4-10325 Media insert in grid should use UDIs
2017-09-06 09:24:02 +02:00
Claus 63b2d10e86 Merge pull request #2164 from umbraco/temp-U4-10374
U4-10374 EntityService, ContentService and MediaService should use a …
2017-09-06 09:12:12 +02:00
Shannon 616b9b0e92 U4-10325 Media insert in grid should use UDIs 2017-09-06 14:50:44 +10:00
Bitmapped 606abd8ac7 Restructure per discussion in U4-10369 2017-09-06 00:43:27 -04:00
Shannon 2efe2cc88a Ensures that a user that has multiple start nodes cannot select the root start node in the tree dialogs 2017-09-06 12:54:32 +10:00
Shannon 8b17d69d32 Merge branch 'temp-U4-10389' into temp-U4-10275 2017-09-06 12:03:55 +10:00
Shannon 8ad1d247fa U4-10389 Some webforms editors do not authorize on the user's path access or permissions set for the editing node 2017-09-06 11:49:00 +10:00
Shannon 6cc4ab9348 Ensure the user can still refresh nodes they don't have access to when viewing 'site'/branch nodes with multiple start nodes 2017-09-06 10:45:38 +10:00
Shannon a603fd0c46 Merge branch 'TEMP-u4-10135' of https://github.com/umbraco/Umbraco-CMS into TEMP-u4-10135
# Conflicts:
#	src/Umbraco.Web/HtmlStringUtilities.cs
2017-09-06 10:05:00 +10:00
Shannon 4b5c49907c switches to constant - comments out what seems to be a totally unused variable 2017-09-06 10:01:39 +10:00
Tom Fulton 1578bc8cc7 U4-8886 - TinyMCE - highlight media picker toolbar icon when image selected 2017-09-05 13:20:18 -04:00
Shannon c860069215 Updates logic to ensure that if we are rendering site nodes that we don't render all of their children, we will filter out any nodes that do not belong to the user's start nodes' branches 2017-09-06 00:38:31 +10:00
Shannon 186fd1166a Merge branch 'dev-v7.7' into temp-U4-10275 2017-09-05 23:48:11 +10:00
Shannon d32093136f U4-10214 Disable ability to delete admin group 2017-09-05 23:41:58 +10:00
Shannon f3f31f2569 Gets invite and create user working with new setting and allowing specifying a separate username. 2017-09-05 23:31:26 +10:00
Stephan e7c231c5a8 Support IdReservation in IdkMap 2017-09-05 15:23:18 +02:00
Shannon 456b5fcee0 updates config template 2017-09-05 22:46:13 +10:00
Shannon 0dee1f0fac U4-10368 Need option to set username different than e-mail for AD compatibility 2017-09-05 22:35:40 +10:00
Shannon 1f7a5ff90a bumping version 2017-09-05 19:28:18 +10:00
Shannon f209ad2019 Merge branch 'dev-v7.7' into temp-U4-10333 2017-09-05 19:23:45 +10:00
Shannon 66affa7f85 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-09-05 19:22:37 +10:00
Shannon 2590ee51ec cleans up event args and makes internal 2017-09-05 19:20:33 +10:00
Shannon 4b7bd6482e Creates new EmailSender which should take the place throughout the codebase for sending emails in the Core. Have replaced most places where SMTP is used directly (but not the notifications part since that is more complicated right now). Added the internal event and special usage so we can raise an event to send an email if smtp is not configured. 2017-09-05 18:52:03 +10:00
Shannon 8ff89c4f48 U4-10385 Examine indexing performance bottleneck: IUserService.GetProfileById which is not cached 2017-09-05 16:41:06 +10:00
Sebastiaan Janssen a9cda9d651 Merge branch 'dev-v7' into temp-gulp-spike 2017-09-04 21:37:49 +02:00
Sebastiaan Janssen ad19eb8dff Update node version and remove unused npm reference 2017-09-04 20:14:31 +02:00
Sebastiaan Janssen e511554a42 Adds less as a dependency so that the build can complete 2017-09-04 20:10:19 +02:00
Stephan 84fd5dc2ee perfs - IContentService.IsPublishable 2017-09-04 19:49:28 +02:00
Stephan 344b52d10f deploy-391 - allow for id reservation 2017-09-04 17:04:48 +02:00
Sebastiaan Janssen 2121b7c8a0 Node version 2017-09-04 14:07:06 +02:00
Shannon af9441010c Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-09-04 22:04:27 +10:00
Shannon 7926a0c676 Simplifies the change password logic with the back office so an admin user can easily change another user's password if they have access to the users section. Updates the controllers to populate the modelstate correctly, changes name of HasAppAccess to HasSectionAccess. Ensure we don't have duplicate ysod dialogs when there is an error. 2017-09-04 22:03:03 +10:00
Stephan 511e9bd3a4 Merge pull request #2160 from umbraco/temp-deploy-360
deploy-360 - add IUniqueIdentifyingServiceConnector
2017-09-04 13:52:49 +02:00
mikkelhm 895faf41b1 Update version to 7.6.7 2017-09-04 12:28:16 +02:00
Shannon a0306f9d55 Fixes ability to reset your own password in the user section 2017-09-04 20:15:46 +10:00
Ronald Barendse 207d6b53b5 Fixed .umb-panel-header-content-wrapper height
The .umb-panel-header-content-wrapper was 1 pixel higher than the parent .umb-panel-header, now both heights are 99px.
2017-09-04 11:22:56 +02:00
Shannon 0e0ab81155 Changes AllowManuallyChangingPassword by default to be false 2017-09-04 17:26:45 +10:00
Shannon a608577a4f Merge branch 'dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Constants-Security.cs
#	src/Umbraco.Core/Security/BackOfficeUserStore.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/UserService.cs
#	src/Umbraco.Tests/App.config
#	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
2017-09-04 16:51:20 +10:00
Robert 972d5f8296 Reverted back to last commit, invalid html check added 2017-09-03 21:17:53 +02:00
Robert ccfcabc707 Event added to trigger deploy/courier 2017-09-01 11:07:09 +02:00
Shannon 6a95da31b0 U4-10374 EntityService, ContentService and MediaService should use a prefix query for GetDescendants instead of a Contains query 2017-09-01 00:55:30 +10:00
Shannon 66da774bf7 Revert "Change EntityService GetDescendents to lookup the item path to use in the LIKE query to be a 'prefix' query not a 'contains' query which will be much better for SQL"
This reverts commit ecc761a232.
2017-09-01 00:46:01 +10:00
Shannon 1cec38c679 Gets site nodes showing for users with multiple root nodes and updates UI to support showing them what they have and don't have access to, also updates the content/media tree controllers performance for when looking up entities and if the user has access to the path. 2017-09-01 00:32:01 +10:00
Shannon 51e9b98857 Updates Content and Media services GetAncestors to use a prefix query intead of contains, fixes tests 2017-08-31 22:54:30 +10:00
Shannon ecc761a232 Change EntityService GetDescendents to lookup the item path to use in the LIKE query to be a 'prefix' query not a 'contains' query which will be much better for SQL 2017-08-31 22:19:01 +10:00
Robert 73937172dc Added check for invalid HTML and sanitization on said HTML
Added HtmlSanitization package
Added check for invalid HTML and sanitization on WordsToLength and Truncate methods
Addes some extra comments
2017-08-31 11:43:06 +02:00
Robert 8c1996a7a1 Changed from the String object qualifier to type qualifier 2017-08-31 09:15:02 +02:00
Shannon 57a8df8309 fixes tests 2017-08-31 16:47:52 +10:00
Shannon 342ce7e507 updates user authz logic and adds more tests (and fixes test) 2017-08-31 15:53:15 +10:00
Shannon Deminick 7d227a8cd8 Merge pull request #2161 from umbraco/temp-U4-6929
U4-6929 User permissions security issue
2017-08-31 15:11:37 +10:00
Bitmapped 65db5396cf Spelling fix 2017-08-30 20:06:20 -04:00
Bitmapped 32d5a0a57c Add method for configuring external logins so things can be granularly overriden. 2017-08-30 20:04:30 -04:00
Robert 742c3236c7 Merge branch 'U4-7580-rename-containers' of git://github.com/lars-erik/Umbraco-CMS into lars-erik-U4-7580-rename-containers 2017-08-30 15:13:19 +02:00
Stephan e83d278b9a deploy-360 - missing file 2017-08-30 13:43:16 +02:00
Mads Rasmussen ede6664e7f allow admins to edit all groups 2017-08-30 13:27:52 +02:00
Stephan 54c4e3b422 deploy-360 - add IUniqueIdentifyingServiceConnector 2017-08-30 12:17:04 +02:00
Sebastiaan Janssen cf951e7055 Merge pull request #2107 from leekelleher/temp-U4-10260
U4-10260 - Umbraco.7.7 beta - NestedContent with ModelsBuilder disabled throws error
2017-08-30 10:04:24 +02:00
Robert 039ab8f1d2 Null check for firstTrim added and fixed typo 2017-08-30 09:18:45 +02:00
Shannon e18c91dedc fixing tests 2017-08-30 12:10:02 +10:00
Shannon Deminick e34e536dad Merge pull request #2156 from umbraco/temp-U4-10326
Creating a new content node using Content Templates (Blueprints) always places node at root.
2017-08-30 11:35:47 +10:00
Shannon 209273ba64 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Tests/Umbraco.Tests.csproj
#	src/Umbraco.Web.UI.Client/src/init.js
#	src/Umbraco.Web.UI/umbraco_client/Application/Extensions.js
2017-08-30 11:08:36 +10:00
Mads Rasmussen 06a87bc341 update readme 2017-08-29 14:56:17 +02:00
Mads Rasmussen b10e646ade remove grunt file 2017-08-29 14:53:44 +02:00
Mads Rasmussen 110a3b2a12 add small interval to file watcher to keep windows calm 2017-08-29 14:35:54 +02:00
Mads Rasmussen 1bda9f32c1 only copy minified version of font-awesome 2017-08-29 14:27:43 +02:00
Mads Rasmussen ce8390768e Source maps gets cached really hard in the browser so I will remove them for now until we find a solution to clear them 2017-08-29 14:17:41 +02:00
Mads Rasmussen 7ccfc79080 update BuildBelle.bat to use gulp build task 2017-08-29 12:40:57 +02:00
Mads Rasmussen ed850629da Merge branch 'dev-v7' into temp-gulp-spike 2017-08-29 11:47:17 +02:00
Mads Rasmussen 1307cb1173 add themes for tinymce - they are needed for loading it 2017-08-29 11:39:16 +02:00
Mads Rasmussen 70231fcee2 fix codemirror folder structure 2017-08-29 10:26:11 +02:00
Robert 67489d496a Creating a node using Blueprints now places the node under the parrent that was created 2017-08-29 09:30:22 +02:00
Shannon 7571dab4cc Updates the user auth helper and adds unit tests for it's scenarios 2017-08-29 15:13:07 +10:00
Shannon f37307d540 fixes path access checks to include root ... but now i need to figure out another problem. 2017-08-29 01:16:37 +10:00
Shannon 6995c184e3 Updates user editor, non-admins can see all user groups but cannot edit them, they can save user that contain groups that they don't have access to if they were already there but cannot add new ones they dont' have access to 2017-08-29 01:00:08 +10:00
Mads Rasmussen aa5d7fc9fc only use source maps when developing 2017-08-28 15:42:31 +02:00
Stephan cf450bebc3 Bugfix CombineStartNodes 2017-08-28 15:26:27 +02:00
Shannon 241fbb2144 combine start node tests 2017-08-28 23:06:31 +10:00
Mads Rasmussen 5cbe2b6ce0 Add tasks for karma testing 2017-08-28 14:41:54 +02:00
Shannon 513aa0b95d Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-28 22:41:14 +10:00
Robert 2ec91a075d Merge pull request #2150 from umbraco/temp-U4-10264
fixes: U4-10264 Umbraco 7.7 beta - UX - 'Set permission' above 'Close'
2017-08-28 11:21:16 +02:00
Robert 68fd74897f Replaced the Regex parse with HtmlAgilityPack parser 2017-08-28 10:52:53 +02:00
Robert 047a41c05e Having a space in a tag is now taken as a char length and not as a space between words 2017-08-28 10:14:16 +02:00
Sebastiaan Janssen 7197c9cbb4 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Core/Models/UserExtensions.cs
2017-08-25 16:39:06 +02:00
Sebastiaan Janssen b9614f9393 Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-08-25 16:22:26 +02:00
Mads Rasmussen 0089f79bd7 add tasks for ngdocs 2017-08-25 14:22:42 +02:00
Mads Rasmussen c468e4736e bower name should be lowercase 2017-08-25 14:19:25 +02:00
Robert 84f684ed31 Truncate with trimming should now work, added some mpore tests for truncate by words methods
Fix: Original Truncate method show now be able to trim
Add: Added some more tests for Truncate by words to cater for tagsAsContent parameter
Fix: In original truncate, currentTextLength prop will be increased everytime a tag is added, this will fix an issue when tagsAsContent is set to true (it would have added an extra char per tag, which would have went over to the next word)
2017-08-25 11:39:13 +02:00
Mads Rasmussen ea3f0d6157 fixing edge case model change 2017-08-25 09:31:13 +02:00
Shannon 9b327dd27e Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-25 09:54:36 +10:00
Shannon Deminick 21ed9989f3 Merge pull request #2139 from umbraco/temp-U4-2449
U4-2449 Feature request: Change the default admin users lang to en-us
2017-08-25 09:40:05 +10:00
Sebastiaan Janssen 780776072d Update umbracoDefaultUILanguage to en-US 2017-08-24 21:03:31 +02:00
Sebastiaan Janssen 49bf7e43a4 Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-08-24 20:58:56 +02:00
Sebastiaan Janssen db63e70a99 Merge pull request #2141 from umbraco/temp-U4-10258
U4-10258 Add documentation for umbUserGroupPreview component
2017-08-24 20:10:56 +02:00
Sebastiaan Janssen 5ed4d9ccae Merge pull request #2117 from umbraco/temp-U4-10201
U4-10201 Exception when deleting a user's start node - adds FKs, fixe…
2017-08-24 20:04:44 +02:00
Sebastiaan Janssen 6eb4c066c6 Merge pull request #2136 from umbraco/temp-U4-10249
U4-10249 FolderAndFilePermissions HealthCheck causes the application …
2017-08-24 18:49:29 +02:00
Mads Rasmussen ba8fe93693 localize discard changes notification 2017-08-24 15:10:42 +02:00
Mads Rasmussen cb4de2a6a1 Add discard changes notification to rights/permissions dialog 2017-08-24 15:00:11 +02:00
Mads Rasmussen e0b014afad fix styling on dialog footer so it looks like the editor footer and the right side overlay footer 2017-08-24 14:59:02 +02:00
Mads Rasmussen fcc0198910 make heading on alert form bold 2017-08-24 14:52:12 +02:00
Shannon Deminick 3c17e30133 Merge pull request #2144 from umbraco/temp-U4-10348
U4-10348 Show readonly user profile information on user editor
2017-08-24 20:03:01 +10:00
Shannon ee6dbcef17 minor copy updates, removes test json 2017-08-24 20:02:41 +10:00
Shannon 1b369b5ba9 Adds back a backwards compatibility API 2017-08-24 19:45:48 +10:00
Shannon 7636f54ffd Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Tests/Umbraco.Tests.csproj
2017-08-24 19:07:21 +10:00
Lars-Erik Aabech 0bfa90714c Removed clever comment 2017-08-23 18:23:18 +02:00
Lars-Erik Aabech c18c936820 Per-approved re-usability.
Only issue is controller being under documenttypes.
2017-08-23 18:19:31 +02:00
Lars-Erik Aabech c116da7545 Also solves U4-9143 2017-08-23 18:19:17 +02:00
Lars-Erik Aabech 00d00dac26 Localized for english 2017-08-23 18:19:03 +02:00
Lars-Erik Aabech 0a7bcbcc69 Getting localization fixed - trying to tokenize 2017-08-23 18:18:27 +02:00
Lars-Erik Aabech 2f088d0562 Renaming document type containers 2017-08-23 18:18:00 +02:00
Mads Rasmussen ff45f1f9cc show calculated start nodes on the user profile 2017-08-23 15:21:19 +02:00
Mads Rasmussen f50898ee6d add description to umb-box component 2017-08-23 15:20:23 +02:00
Mads Rasmussen 6796f4d4f5 U4-10348 Show readonly user profile information on user editor 2017-08-23 13:08:25 +02:00
Shannon Deminick 1abbc31348 Merge pull request #2145 from umbraco/temp-deploy-367
Improve EnsureUniqueNodeName perfs?
2017-08-23 16:18:47 +10:00
Shannon f48ffd28c0 reverts files that shouldn't have been committed 2017-08-23 15:59:47 +10:00
Shannon c5e1fc5a20 U4-10348 Show readonly user profile information on user editor 2017-08-23 15:45:42 +10:00
Shannon 04ac744277 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-23 15:23:04 +10:00
Shannon f457edfada fixes tests 2017-08-23 15:20:12 +10:00
Shannon 8982f7b933 U4-10346 Whenever you visit either the users or the groups section BOTH controllers: Users and Groups initialize 2017-08-23 15:10:10 +10:00
Shannon 9261f46ad1 fixes various report issues with new security policies 2017-08-23 14:56:42 +10:00
Shannon 3106c22287 UAASSCRUM-1045 Umbraco 7.7: New sites created have an "Administrator” user visible in the back office. 2017-08-22 17:55:28 +10:00
Shannon 98bd044823 Updates logic so that non-admins cannot see any admins in the user editor 2017-08-22 17:27:16 +10:00
Shannon 5afe16ae0e Updates user and user group editors security policies 2017-08-22 16:09:06 +10:00
Shannon 8033c6807f Ensures admin can access anything 2017-08-22 13:06:56 +10:00
Shannon 0059f703c5 Adds authorization so that a user cannot access a group it does not belong to 2017-08-22 13:03:59 +10:00
Shannon e802af109f Adds authorization for create/invite 2017-08-22 12:47:17 +10:00
Shannon 8d93485a08 Adds authorization logic for saving the user 2017-08-22 12:39:21 +10:00
Zsolt 9fabfa92ea changing back the previous test 2017-08-21 13:48:35 +02:00
Zsolt 48cff73537 testfzfzfg 2017-08-21 13:33:20 +02:00
Robert 54f86c06f0 Fix TruncateByWords to work with tags 2017-08-21 12:30:16 +02:00
Shannon 2d089033d0 U4-10268 7.7 Beta - Changing password should be safe by default 2017-08-21 17:01:18 +10:00
Shannon 83e7e198f8 WIP, adds notes, starts updating server side logic checks 2017-08-21 16:53:58 +10:00
Shannon e775c19e7c U4-2449 Feature request: Change the default admin users lang to en-us 2017-08-21 16:14:07 +10:00
Shannon 1fcc93ff7e Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-21 14:37:13 +10:00
Mads Rasmussen 955334fa0f add load indicator to user groups overview 2017-08-18 14:56:19 +02:00
Mads Rasmussen 45fbb531de Merge pull request #2137 from umbraco/temp-U4-10265
U4-10265 7.7 Beta - Tree keeps refreshing + saving fails
2017-08-18 14:05:30 +02:00
Zsolt 04d73eedfe documentation for umbUserGoupPreview directive 2017-08-18 10:56:38 +02:00
Shannon c5338da37d If the user does not have Update permissions, then the preview functionality cannot call save! 2017-08-18 16:45:23 +10:00
Shannon e4296f6ea4 U4-10265 7.7 Beta - Tree keeps refreshing + saving fails 2017-08-18 16:30:33 +10:00
Shannon 9ce87ea4e8 doh, fixes merge issue 2017-08-18 15:26:15 +10:00
Shannon bdb991f6dc U4-10249 FolderAndFilePermissions HealthCheck causes the application to restart 2017-08-18 14:50:20 +10:00
Shannon 4cebec0d39 U4-10279 User states filter in user overview is broken 2017-08-18 14:17:31 +10:00
Shannon 1fc49ccf59 Merge remote-tracking branch 'origin/temp-U4-10299' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web/Trees/LegacyTreeParams.cs
2017-08-18 14:11:41 +10:00
Shannon 7184838546 U4-10278 Administrator user group is missing access to Forms section 2017-08-18 12:02:52 +10:00
Shannon 254d4e2067 updates to latest examine 2017-08-18 11:54:39 +10:00
Shannon 2817a77c5a Null check fix - required for old trees, fixes backwards compat shim for AddApplication 2017-08-18 11:15:23 +10:00
Shannon 7b61070f8e COU-610 addApplication method is no longer available - puts back some backward compat hacks 2017-08-18 10:13:23 +10:00
Stephan a157e1d596 Revert PublishedContentWrapped.Content rename 2017-08-17 20:40:32 +02:00
Claus f2ff1636ff ensuring query string is cleaned when switching sections with no custom routePath. 2017-08-17 11:23:08 +02:00
Claus 9169e64e39 cleanup and annoying line endings. 2017-08-17 11:22:05 +02:00
Mads Rasmussen 9b1fa2ee23 Merge pull request #2134 from umbraco/temp-U4-10256
U4-10256 Make umb-box component + add documentation
2017-08-17 09:20:04 +02:00
Mads Rasmussen f925309e1f Merge branch 'dev-v7.7' into temp-U4-10256
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/users/user.html
2017-08-17 09:07:29 +02:00
Shannon a50386aaf1 fixes test 2017-08-17 14:36:52 +10:00
Shannon 777d634fe2 Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-08-17 12:18:23 +10:00
Shannon 049435a5e6 Puts back some APIs on the IUser interface to try to avoid more breaking changes. 2017-08-17 12:18:08 +10:00
Mads Rasmussen 87f4cd24a0 fix link 2017-08-16 21:40:35 +02:00
Zsolt 9e0d0de846 created documentation for the newly added directives + testing 2017-08-16 15:45:57 +02:00
Mads Rasmussen b5acd53889 Add a bit of text formatting to the content templates intro text + describe how to add content templates from the settings section 2017-08-16 13:59:35 +02:00
Claus ff29493203 missing null check causing legacy trees to break if theres no querystring data. 2017-08-16 13:43:48 +02:00
Claus 5fff884798 making sure title is added to trees.config - not sure if its needed but lets just do it. 2017-08-16 13:43:21 +02:00
Claus 3885454b26 updating name of usersResource for v. 7.7 2017-08-16 13:42:19 +02:00
Mads Rasmussen fec85491b6 Merge pull request #2129 from umbraco/temp-U4-10248
U4-10248 Change content and media start node pickers to use new picker layout
2017-08-16 09:27:20 +02:00
Mads Rasmussen 26e590a260 don't wait for node path to return before we show the picked node in the UI 2017-08-16 09:25:22 +02:00
Zsolt bf2fdc409b created umb-box components and changed all html tags for it in the users section 2017-08-15 16:32:30 +02:00
Zsolt bd0cceb517 Clean-up with Mads 2017-08-15 14:41:04 +02:00
Claus bb01eca7b7 added a few tests for the new UmbracoHelper methods. 2017-08-15 13:08:30 +02:00
Shannon Deminick b02b130793 Merge pull request #2125 from umbraco/temp-U4-10280
U4-10280 Add markers to required fields in user section
2017-08-15 12:36:07 +10:00
Shannon Deminick d3e73e9e30 Merge pull request #2122 from umbraco/temp-U4-10243
U4-10243 Umbraco 7.7.  Difference between "Enable/Disable" and "LockedOut"
2017-08-15 12:31:50 +10:00
Shannon 1de79cf473 updated to use ASPNET Identity APIs for managing lockouts 2017-08-15 12:31:32 +10:00
Shannon 42d65a36bc Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-08-15 11:55:17 +10:00
Zsolt 69c242074a In cms I changed the media picker to the new layout + deleting previously commented code 2017-08-14 13:08:01 +02:00
Harvey Williams 13f76d2af9 Updated ReplaceLineBreaksForHtml to include \r
I was surprised when this method did not replace a `\r` character with an HTML break. I have updated it to not only replace `\n`, but also `\r\n` and just `\r`.

I think these cases should be considered because of [this SO thread](https://stackoverflow.com/questions/4824621/is-a-new-line-n-or-r-n).

The updated code will not replace `\n\r` with one break but with two.

I used [this SO answer](https://stackoverflow.com/a/8196219/2963111) to update the method.

```
[TestMethod]
public void ReplaceLineBreaksForHtmlTest()
{
    var result = "foo\rbar\nbaz\r\nbiff\n\r".ReplaceLineBreaksForHtml();

    Assert.AreEqual(result, "foo<br />\rbar<br />\nbaz<br />\r\nbiff<br />\n<br />\r");
}
```
2017-08-11 11:42:35 +01:00
Mads Rasmussen f426e3c500 U4-10280 Add markers to required fields in user section 2017-08-11 12:14:10 +02:00
Claus 028576d93c Merge pull request #2120 from umbraco/temp-U4-10227
U4-10227 Users section should start in the user tree
2017-08-11 10:31:20 +02:00
Mads Rasmussen b607c9cd87 add documentation to users.resource 2017-08-10 16:14:11 +02:00
Claus 5cb766d387 Merge pull request #2115 from umbraco/temp-U4-10220
fixes: U4-10220 Missing the ability to create Content Templates (blue…
2017-08-10 15:57:46 +02:00
Claus 076ee7e3d8 Merge pull request #2110 from umbraco/temp-U4-10233
fixes: U4-10233 Umbraco 7.7 beta - format user last login date
2017-08-10 15:49:02 +02:00
Claus d149438e56 Merge pull request #2088 from umbraco/temp-snippets-update
Updates partial view snippets to not re-iterate all of the time and t…
2017-08-10 15:26:29 +02:00
Claus 90213ec90d no need to check twice if we just dont send any hidden children to the render method. 2017-08-10 15:26:03 +02:00
mikkelhm 0db4993900 Bump version to beta003 2017-08-10 13:53:26 +02:00
Mads Rasmussen 979a0c9e25 remove capitalise from badges 2017-08-10 13:40:56 +02:00
Mads Rasmussen 3104e6d11c fixes: U4-10243 Umbraco 7.7. Difference between "Enable/Disable" and "LockedOut" 2017-08-10 13:39:33 +02:00
Jeavon 850ec2d78f Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-08-10 11:41:42 +01:00
Jeavon d1109fb9ad Fix CustomErrorsCheck so that success message can contain "On" as well as "RemoteOnly" as it's also a success value 2017-08-10 11:41:19 +01:00
mikkelhm 12eb496939 Adds the avatar column as a table to update in the 7.7.0 migration, and sets its length to 500 2017-08-10 12:37:11 +02:00
Claus 4578f097dc Merge branch 'dev-v7.7' of github.com:umbraco/Umbraco-CMS into dev-v7.7 2017-08-10 11:27:57 +02:00
Claus 5f0765a39a Merge branch 'temp-U4-10263' into dev-v7.7 2017-08-10 11:27:38 +02:00
Mikkel Holck Madsen 823e3d1b4e Merge pull request #2109 from umbraco/temp-U4-10244
U4-10244 Umbraco 7.7-beta - Migration fails when upgrading users
2017-08-10 10:43:36 +02:00
Shannon 97f2b40f4b fixes tests 2017-08-10 17:59:17 +10:00
Shannon 9be275cf40 Updates the routes to also redirect if there isn't any dashboard to view for the user 2017-08-10 17:49:21 +10:00
Shannon 72495b3eaf U4-10227 Users section should start in the user tree 2017-08-10 17:25:16 +10:00
Claus d7d6b7f128 Merge pull request #2116 from umbraco/temp-deploy-350
changes needed for blueprints to differentiate them from content items.
2017-08-10 08:37:26 +02:00
Shannon 62e467d860 Merge branch 'temp-U4-10272' into dev-v7.7 2017-08-10 14:27:47 +10:00
Shannon 021010d7ea Merge branch 'dev-v7.7' into temp-U4-10272
# Conflicts:
#	src/Umbraco.Web/HealthCheck/NotificationMethods/EmailNotificationMethod.cs
2017-08-10 14:27:37 +10:00
Shannon d756f884a7 fixes test 2017-08-10 12:02:23 +10:00
Shannon a97a5dc3fd Removes need for the IdkMap for content/media services since we have a wrapping repo now, adds tests to verify that caching is active for both INT and GUID 2017-08-10 10:52:31 +10:00
Shannon bdf621049f adds GetByIds for UDIs 2017-08-10 01:11:59 +10:00
Shannon 2c219576f6 update test 2017-08-10 01:08:29 +10:00
Shannon 8f121c4d93 update test 2017-08-10 01:01:34 +10:00
Shannon 558a284750 U4-10263 Missing UDI + GUID friendly MediaService.GetByIds, ContentService.GetByIds 2017-08-10 01:01:07 +10:00
Shannon 0bb27b8ebd U4-10263 Missing UDI + GUID friendly MediaService.GetByIds, ContentService.GetByIds 2017-08-10 00:22:15 +10:00
Shannon 3263e496aa U4-10201 Exception when deleting a user's start node - adds FKs, fixes delete scripts, adds migrations for FKs 2017-08-10 00:02:27 +10:00
Shannon 4a21675a0a removes null check on email since this will cause the log to fill up, we already check for null below anyways. 2017-08-09 23:42:31 +10:00
Claus 73bc5c6ec9 changes needed for blueprints to differentiate them from content items. 2017-08-09 15:29:12 +02:00
Shannon 98a545bdc6 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
2017-08-09 23:18:51 +10:00
Shannon c27e9e9c77 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-09 19:45:58 +10:00
Shannon Deminick cbf5e25e1f Merge pull request #2112 from umbraco/temp-U4-10271
U4-10271 Adds contextual err message for GetValue
2017-08-09 19:40:35 +10:00
Shannon Deminick 41e555881f Merge pull request #2100 from umbraco/temp-U4-10059
U4-10059 Localize users and user groups
2017-08-09 19:35:40 +10:00
Warren Buckley b60c700e05 Updated to return nulls as opposed to the ex being caught with a meaningful message 2017-08-09 10:23:55 +01:00
Mads Rasmussen 60ffd20e20 Merge branch 'dev-v7.7' into temp-U4-10059 2017-08-09 11:01:05 +02:00
Mads Rasmussen 2c2a9cc916 fixes: U4-10220 Missing the ability to create Content Templates (blueprints) from the blueprints tree directly when none exist 2017-08-09 10:47:41 +02:00
Stephan a851cef70f Improve EnsureUniqueNodeName perfs? 2017-08-08 18:54:15 +02:00
Jeavon fb4af74916 Fix so that health check notifications without config don't cause all notification methods to fail 2017-08-08 16:50:17 +01:00
Warren Buckley 8b962cff0c Catches a dictionary key not found exception & gives better error message with context 2017-08-08 16:07:16 +01:00
Mads Rasmussen 55a4214a5c fixes: U4-10233 Umbraco 7.7 beta - format user last login date 2017-08-08 13:05:46 +02:00
Mads Rasmussen fc8c750fb0 fixes permissions click area - only show pointer cursor where you can click 2017-08-08 10:22:44 +02:00
Shannon Deminick 4d7fa64a6c Merge pull request #2108 from umbraco/temp-U4-10257
U4-10257 Add "invite user" success state
2017-08-08 13:20:42 +10:00
Shannon bbe8271c35 Fixes invite user and setting the model correctly. Fixes server side validation to ensure any created user MUST have a group assigned. 2017-08-08 13:20:21 +10:00
Shannon 2d42a6ca16 Merge branch 'dev-v7.7' into temp-U4-10257
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html
2017-08-08 13:02:57 +10:00
Shannon Deminick 4879215146 Merge pull request #2104 from umbraco/temp-U4-10236
fixes: U4-10236 Umbraco.7.7 beta - add larger click area of permissio…
2017-08-08 12:57:13 +10:00
Shannon Deminick 48a6929077 Merge pull request #2106 from umbraco/temp-U4-10235
fixes: U4-10235 Umbraco 7.7 beta - misleading placeholder text in pro…
2017-08-08 12:52:12 +10:00
Shannon Deminick efc52e26e5 Merge pull request #2105 from umbraco/temp-U4-10230
fixes: U4-10230 Umbraco 7.7 beta - hover on table row affect datepicker
2017-08-08 12:49:35 +10:00
Shannon 1258148e37 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/pl.xml
2017-08-08 12:36:16 +10:00
Shannon 2c7f0c54bb Updates unit tests to show usages of UDIs for pickers instead of INT 2017-08-08 12:35:12 +10:00
Shannon 121b184941 U4-10244 Umbraco 7.7-beta - Migration fails when upgrading users 2017-08-08 11:01:45 +10:00
Mads Rasmussen 405d8e8253 fix line indention 2017-08-07 21:32:19 +02:00
Mads Rasmussen b335ca0a10 change input type to email 2017-08-07 21:19:30 +02:00
Per Ploug babcbd2f7a Updates from dev-v7 2017-08-07 15:29:34 +02:00
Mads Rasmussen 6658ecf6e3 add success state for "invite user" 2017-08-07 15:24:19 +02:00
leekelleher e5e174d334 Nested Content with ModelsBuilder disabled will throw a null-reference exception.
The fix is to check if the `Current` instance as a `Value`.
For more details, see ticket: http://issues.umbraco.org/issue/U4-10260
2017-08-07 14:06:03 +01:00
Mads Rasmussen cfee55d0db fix line indention 2017-08-07 14:35:54 +02:00
Mads Rasmussen 80d49f9bc8 fix line indention 2017-08-07 14:33:55 +02:00
Per Ploug ba82885b6d Merge remote-tracking branch 'refs/remotes/origin/dev-v7' into temp-gulp-spike
# Conflicts:
#	build/BuildBelle.bat
2017-08-07 14:05:53 +02:00
Mads Rasmussen 6efc6dfe6a fixes: U4-10235 Umbraco 7.7 beta - misleading placeholder text in profile email 2017-08-07 13:45:42 +02:00
Mads Rasmussen 51624cee57 Merge pull request #2096 from skttl/patch-8
U4-10231 Avatar is slightly off center
2017-08-07 13:38:02 +02:00
Mads Rasmussen 701082a909 fixes: U4-10230 Umbraco 7.7 beta - hover on table row affect datepicker 2017-08-07 13:20:01 +02:00
Mads Rasmussen 81b2e4e050 fixes: U4-10236 Umbraco.7.7 beta - add larger click area of permission items 2017-08-07 12:27:21 +02:00
Mads Rasmussen be9fbf14f1 Merge pull request #2095 from skttl/patch-7
U4-10228: Overflowing text in group dropdown in permissions menu
2017-08-07 12:08:58 +02:00
Shannon f453ee2623 U4-10244 Umbraco 7.7-beta - Migration fails when upgrading users 2017-08-07 17:21:35 +10:00
Shannon e31ec37c9e Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-07 17:17:38 +10:00
Zsolt 5b00265394 Change content start node picker 2017-08-04 14:38:37 +02:00
Mads Rasmussen 3ba3d8977f don't show start node data in the content permission dialog 2017-08-04 11:23:36 +02:00
Mads Rasmussen 19af28dd93 localize content permissions dialog 2017-08-04 11:21:43 +02:00
Mads Rasmussen 91cda667a2 U4-10221 When creating content that has Content Templates (blueprints) created for it, we should distinguish between "Blank' and Blueprints - swap class to one with no padding 2017-08-03 14:56:11 +02:00
mikkelhm 1c59c0b164 Dont output the Healthcheck.Release.config file when publishing the webapp, i.e. for nu nuget package 2017-08-02 23:57:37 +02:00
Søren Kottal 9fc87a3986 Changes styling for avatar
A div has been introduced, and is aligning the avatar to the left of the 40x40 block.

This moves the sizing and border-radius to the surrounding div, and adds a margin to center it.
2017-08-02 20:31:35 +02:00
Søren Kottal 3a44f70cee Removes inline width on dropdown for groups 2017-08-02 19:55:05 +02:00
Stephan 74b9a43685 Blueprint fixes 2017-08-02 17:43:39 +02:00
Shannon 23e16a9182 Merge branch 'dev-v7.7' of https://github.com/umbraco/Umbraco-CMS into dev-v7.7 2017-08-03 01:27:38 +10:00
Shannon a3cf41284b fixes test 2017-08-03 01:27:13 +10:00
Stephan 2907b0dd1a Blueprint fixes 2017-08-02 17:14:45 +02:00
Sebastiaan Janssen c89f44bb3d Let's aim for only 1 beta ;) 2017-08-02 16:52:08 +02:00
Jeavon 3a13cd82ed Fix customerrorscheck success message as it expect only 1 token not 2 2017-08-02 15:35:53 +01:00
Stephan 90e6815164 Blueprint fixes 2017-08-02 16:11:54 +02:00
Shannon Deminick f59bd481f4 Merge pull request #1983 from umbraco/temp-U4-9984
U4-9984 - Adds option to run Health Checks on a schedule and provide options for notifications
2017-08-02 23:58:16 +10:00
Shannon d459246519 oops 2017-08-02 23:41:31 +10:00
Shannon efbfef74c2 localizes email, fixes issues with smtp and async 2017-08-02 23:39:31 +10:00
Stephan 1ee131db81 IContent.IsBlueprint required for blueprints 2017-08-02 15:02:34 +02:00
Shannon cb9e631d7b changes get/set to private set, should not be mutable 2017-08-02 22:38:55 +10:00
Shannon 9ced53c9a9 Merge branch 'temp-U4-9984' of https://github.com/umbraco/Umbraco-CMS into temp-U4-9984 2017-08-02 22:32:54 +10:00
Shannon df287f291e Updates health check config to work the Umbraco/Testable way 2017-08-02 22:32:28 +10:00
Jeavon fc861fecbc Make the setters in NotifcationMethodBase readonly and make AllChecksSuccessful public 2017-08-02 12:54:37 +01:00
Jeavon 6aeb1a8845 Adjust all HealthCheck constants to correct naming convention 2017-08-02 12:26:35 +01:00
Jeavon 8c493a1ff9 Adding interfaces for all HealthCheck configuration to allow for testing 2017-08-02 12:22:51 +01:00
Sebastiaan Janssen 9b7b0d8923 Merge pull request #2092 from umbraco/temp-machine-key-install
U4-10222 Install a custom machine key during umbraco installation
2017-08-02 12:32:12 +02:00
Jeavon 51f51c1762 Revert this csproj change, not sure when VS added it 2017-08-02 11:29:31 +01:00
Jeavon b6e377a560 Removing further NuGet packages that were added by the Slack package 2017-08-02 11:25:28 +01:00
Shannon Deminick 4534581b29 Merge pull request #2093 from umbraco/temp-U4-10119
fixes: U4-10119 ISearchableTree UI updates
2017-08-02 20:21:46 +10:00
Jeavon b915f723f5 Removing Slack Health Check notification 2017-08-02 11:20:00 +01:00
Mads Rasmussen 36768a19c1 fixes: U4-10119 ISearchableTree UI updates 2017-08-02 12:18:06 +02:00
Jeavon bf5a48c5f5 Merge branch 'dev-v7.7' into temp-U4-9984 2017-08-02 10:58:53 +01:00
Shannon 040aae2429 fixes upgrade script 2017-08-02 19:57:14 +10:00
Jeavon c7f6416a0b Fix the merge 2017-08-02 10:53:50 +01:00
Jeavon 8259024e20 Merge branch 'dev-v7.7' into temp-U4-9984
# Conflicts:
#	src/Umbraco.Web/HealthCheck/Checks/Security/HttpsCheck.cs
2017-08-02 10:48:43 +01:00
Shannon 31ea03a7cc adds notes 2017-08-02 17:06:57 +10:00
Shannon 150e2b12e8 adding back the functionality to install a machine key during installation 2017-08-02 16:16:59 +10:00
Shannon e29ac4d17c Fixes issue with the change made to WebSecurity.ValidateBackOfficeCredentials ... not sure what i was thinking 2017-08-02 16:04:37 +10:00
Shannon Deminick ae30245a9b Merge pull request #2089 from umbraco/temp-77-upgrade-sqlce
The try catch for getting a user when we are in Upgrading state also …
2017-08-02 15:31:36 +10:00
Shannon 595e26e41f U4-10221 When creating content that has Content Templates (blueprints) created for it, we should distinguish between "Blank' and Blueprints 2017-08-02 15:30:17 +10:00
Shannon dda19e292a U4-10217 Blueprints: When clicking "Create Blueprint", add explanation on what it is and what will happen 2017-08-02 13:28:50 +10:00
Shannon 08f07ff3b7 Moves blueprint localization copy into it's own section in the lang files 2017-08-02 12:58:31 +10:00
Shannon Deminick e9e8d0d4b1 Merge pull request #2090 from umbraco/temp-blueprint-rename
Implements U4-10219 and U4-10218
2017-08-02 12:30:12 +10:00
Shannon 9d3a1fe529 updates design so it works and some wording for blueprints intro 2017-08-02 12:26:33 +10:00
Shannon 4f396222dc Merge branch 'dev-v7.7' into temp-blueprint-rename 2017-08-02 12:13:04 +10:00
Shannon 68f5a141c5 ensure when the user upgrades that the admin and editor have blueprint permissions 2017-08-02 12:11:42 +10:00
Shannon Deminick 9c0ca85c41 Merge pull request #2091 from umbraco/temp-U4-10202
U4-10202 Make it more obvious when no content or media start nodes ar…
2017-08-02 12:10:09 +10:00
Shannon 5cd314335c formatting 2017-08-02 11:56:11 +10:00
Shannon 241d486e97 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web/Security/Identity/FormsAuthenticationSecureDataFormat.cs
2017-08-02 11:55:15 +10:00
Mads Rasmussen b0f1b19385 allow current user to see but not edit its access rights 2017-08-01 20:06:19 +02:00
Mads Rasmussen b6de92167b remove "lorem ipsum" + fix title on node permissions overlay 2017-08-01 19:40:11 +02:00
Niels Hartvig 7e49cc0f25 Implements U4-10219 and U4-10218 2017-08-01 16:19:32 +02:00
Mads Rasmussen 1c5bcbc5bb U4-10202 Make it more obvious when no content or media start nodes are selected the user has access to the root node. 2017-08-01 16:18:57 +02:00
Stephan 5fab5102d9 Fix UmbracoObjectTypes enum bkwd compatibility issue 2017-08-01 15:51:23 +02:00
mikkelhm 6655be5f5e Updates the trees.config.install.xdt to update the tree.config with the new User section 2017-08-01 14:24:04 +02:00
Mads Rasmussen 60cd82884f add localizationService as dependency to userGroupPicker controller 2017-08-01 14:13:02 +02:00
mikkelhm eb93c0de11 Removes c#6 exception filter syntax 2017-08-01 12:33:57 +02:00
mikkelhm 8cb29182f4 The try catch for getting a user when we are in Upgrading state also needs to work for SqlCe 2017-08-01 12:19:26 +02:00
Mads Rasmussen 0786d0849c fix js errors in user controller after merge 2017-08-01 10:34:19 +02:00
mikkelhm 005bee7650 Updates web.config.install.xdt to have the latest assemblyBindings for the Katana libs(Owin), v 3.1.0.0 2017-08-01 10:29:22 +02:00
mikkelhm 39ce2067ef Removes references to deleted uninstall files, uninstall.core.ps1, uninstall.ps1 and web.config.uninstall.xdt 2017-08-01 10:22:17 +02:00
Shannon 98c1f9820f Updates partial view snippets to not re-iterate all of the time and to remove any non-required iterations, adds required namespace imports 2017-08-01 17:47:33 +10:00
Shannon 59db5b0081 Obsoletes more dynamic published content extension methods and models 2017-08-01 17:04:16 +10:00
Shannon 44b90e2ce6 removes old template editor webforms files 2017-08-01 17:03:33 +10:00
Shannon 6829660720 removes old scripting templates 2017-08-01 17:02:45 +10:00
Shannon 67a69d2e11 bumps version, fixes install with setting built in group start nodes 2017-08-01 16:21:11 +10:00
Shannon 80364fc4d2 Fixes last unit test ( i think ) 2017-08-01 12:58:18 +10:00
Shannon Deminick e02c6591d9 Merge pull request #2080 from umbraco/temp-U4-10202
fixes: U4-10202 Make it more obvious when no content or media start n…
2017-08-01 12:42:26 +10:00
Shannon 2e6fb8e3e5 Fixes merge issues, ensures "Content root" and "Media root" are localized 2017-08-01 12:41:22 +10:00
Shannon cee3f456d1 Merge branch 'dev-v7.7' into temp-U4-10202
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/components/users/umb-user-group-preview.html
#	src/Umbraco.Web.UI.Client/src/views/users/user.controller.js
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
2017-08-01 12:40:47 +10:00
Shannon Deminick 46bb0cca2d Merge pull request #2084 from umbraco/temp-U4-10059
U4-10059 Localize users and user groups
2017-08-01 12:09:32 +10:00
Shannon 2beba8067e updates the wording of a few items and updates the en.xml lang file too 2017-08-01 12:02:35 +10:00
Shannon 175da06d60 Merge branch 'dev-v7.7' into temp-U4-10059
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/users/group.html
#	src/Umbraco.Web.UI.Client/src/views/users/user.html
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
2017-08-01 11:31:52 +10:00
Shannon 7769a0ba42 Updates logic to show if the user or group has not start nodes defined (which does not anymore indicate root access) 2017-08-01 11:19:31 +10:00
Shannon fd65380367 Merge branch 'dev-v7.7' into temp-U4-10202
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/users/user.html
2017-08-01 10:35:37 +10:00
Shannon Deminick 9880e9b6a5 Merge pull request #2086 from umbraco/temp-U4-10212
fixes: U4-10212 Clean up test css classes
2017-08-01 10:32:53 +10:00
Shannon Deminick 134033bc3d Merge pull request #2085 from umbraco/temp-U4-10210
fixes: U4-10210 Add title and filter to user groups overview
2017-08-01 10:31:05 +10:00
Shannon Deminick 8bf3835212 Merge pull request #2070 from umbraco/temp-U4-10155
fixes: U4-10155 Prompt the user before deleting user groups in the us…
2017-08-01 10:16:02 +10:00
Shannon 6782e71841 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-08-01 09:41:21 +10:00
Shannon Deminick 7b449b4bad Merge pull request #2079 from umbraco/temp-U4-10095
U4-10095 Need to be able to remove a user's avatar
2017-08-01 09:40:47 +10:00
Mads Rasmussen c539db39ec fixes: U4-10212 Clean up test css classes 2017-07-31 14:58:17 +02:00
Mads Rasmussen 2cc881883b fixes: U4-10210 Add title and filter to user groups overview 2017-07-31 13:20:33 +02:00
Shannon bcf4a84725 fixes more tests, gotta be close now 2017-07-31 19:47:02 +10:00
Mads Rasmussen 164f1e253e only show "remove photo" button if the user has an avatar 2017-07-31 11:39:59 +02:00
Mads Rasmussen 5c0af42d00 add descriptions to permissions 2017-07-31 11:24:11 +02:00
Mads Rasmussen 38ae9d6d52 update lorem ipsum texts 2017-07-31 10:52:45 +02:00
Shannon b8971f0dd1 decouple user repo from the membershi providers, lets see what happens with unit tests on the server 2017-07-31 18:15:30 +10:00
Mads Rasmussen 939d429b8b localise user group picker and user group controller 2017-07-31 09:23:20 +02:00
Shannon d103151159 fixing tests 2017-07-31 17:11:12 +10:00
Shannon 796708075c Fixes JS errors when loading in a textbox editor when there is no config supplied (i.e. rendering a Forms Macro in the RTE) 2017-07-31 16:23:44 +10:00
Shannon cfd473bfe5 Fixing tests 2017-07-31 16:18:55 +10:00
Shannon b20e3c7435 ensure the user cannot access the media list dashboard if they don't have root access 2017-07-31 16:03:31 +10:00
Shannon 6de2cea9c5 U4-10023 - rte link picker disable media uploading if no start node access 2017-07-31 15:53:21 +10:00
Shannon 9db9112407 U4-10023 - rte media picker disable uploading if no start node access 2017-07-31 15:49:44 +10:00
Shannon cc8adae593 Updates ISearchableTree implementation so that a new instance is created per request 2017-07-31 15:07:09 +10:00
Nik 7367c8ef67 Re-do min max number of items in the grid after rebasing 2017-07-30 02:09:38 +01:00
Stephan 19d55c8df0 U4-2676 - fix 2017-07-28 14:49:11 +02:00
Mads Rasmussen 7707bfe700 more localisation of users and user groups 2017-07-28 14:12:35 +02:00
Mads Rasmussen 47290cd801 init localise on users and groups 2017-07-28 13:25:29 +02:00
Stephan b10d370b16 Merge branch dev-v7.7 into user-group-permissions 2017-07-28 12:54:13 +02:00
Stephan 71a640de74 Merge pull request #2063 from umbraco/temp-isearchabletree
U4-2676 implement ISearchableTree to abstract search for each tree into it's own logic
2017-07-28 12:48:22 +02:00
Stephan 9c27a6c69a Merge branch 'dev-v7.7' into temp-isearchabletree 2017-07-28 12:33:13 +02:00
Stephan adac29c655 Merge pull request #2059 from umbraco/temp-U4-8643
U4-8643 Usermanagement - Store password algorithm in Usertable
2017-07-28 12:26:41 +02:00
Stephan e52adfdd07 Merge branch user-group-permissions into temp-U4-8643 2017-07-28 10:38:43 +02:00
Mads Rasmussen 43bb9ab69b set default title on user picker overlay and section picker overlay 2017-07-28 10:37:30 +02:00
Stephan 239a7632b0 Merge pull request #2057 from umbraco/temp-U4-10138
U4-10138 Cannot upgrade to 7.7 due to user groups
2017-07-28 09:55:41 +02:00
Shannon Deminick 04a7e2e04e Merge pull request #2078 from umbraco/temp-U4-10107
fixes: U4-10107 Weird UI bugs with filter dropdowns
2017-07-28 16:43:21 +10:00
Shannon 27d7bc2ae1 Adds ability to remove gravatar 2017-07-28 16:02:46 +10:00
Shannon 5ba07d56e7 Fixes model mapping for calculated start nodes and how that data gets into the user ticket. 2017-07-28 14:27:32 +10:00
Shannon 0ffd02fc61 Merge branch 'temp-U4-10175' into temp-U4-10138 2017-07-28 14:02:16 +10:00
Shannon 2eabcef69b Revert "Fix back-office identity"
This reverts commit 2d5f56cbff.

# Conflicts:
#	src/Umbraco.Core/Models/Identity/BackOfficeIdentityUser.cs
2017-07-28 14:01:45 +10:00
Shannon 960cc32da1 Ensures the user validator doesn't execute unless the username or email addres is changed (since that is all the validator validates) 2017-07-28 12:20:10 +10:00
Mads Rasmussen ef20deb9cb fixes: U4-10202 Make it more obvious when no content or media start nodes are selected the user has access to the root node. 2017-07-27 14:55:23 +02:00
Stephan fdf206038a Merge branch user-group-permissions into temp-U4-10138 2017-07-27 13:37:49 +02:00
Stephan 6faadce477 U4-10175 - fix 2017-07-27 12:46:02 +02:00
Stephan 2d5f56cbff Fix back-office identity 2017-07-27 12:37:21 +02:00
Stephan 4569a52806 U4-10175 - fix 'edit user' link 2017-07-27 12:37:09 +02:00
Mads Rasmussen ca2896aaaa Didn't want to remove that 2017-07-27 11:03:03 +02:00
Mads Rasmussen 0b77e604f6 add button to remove avatar 2017-07-27 10:55:38 +02:00
Mads Rasmussen f50153728d manually show/hide filters 2017-07-26 15:21:30 +02:00
Stephan 52a46a2fe0 Merge branch 'user-group-permissions' into temp-U4-10175 2017-07-26 15:18:37 +02:00
Stephan da9fd1a9e8 Merge pull request #2061 from umbraco/temp-U4-10084
U4-10084 Cleanup all unused/legacy webforms editors, tinymce files and affiliated services
2017-07-26 14:49:05 +02:00
Mads Rasmussen 1692000117 umb-keyboard-list polish 2017-07-26 14:12:55 +02:00
Stephan 9972f95a10 Merge branch user-group-permissions into temp-U4-10084 2017-07-26 13:22:43 +02:00
Mads Rasmussen 964a8b400f close umb-dropdown on esc press 2017-07-26 12:16:54 +02:00
Stephan 0762bd7e76 U4-10023 - also in grid media picker 2017-07-26 11:31:19 +02:00
Stephan 15c5900a24 U4-10023 - virtual root start node in mediapicker 2017-07-26 10:44:42 +02:00
Mads Rasmussen 1ec63c3f85 add documentation to umbDropdown, umbDropdownItem and umbKeyboardList 2017-07-26 10:36:02 +02:00
Shannon fad090658f Fixes more tests 2017-07-26 18:33:09 +10:00
Shannon 61c3816bb9 Fixes a bunch of tests 2017-07-26 18:26:25 +10:00
Shannon b8e2e49a44 Updates to latest Katana libs 2017-07-26 17:50:58 +10:00
Shannon 6d9190bdb3 ensures all built in groups have -1 as start nodes for media, fixes automapper tests 2017-07-26 17:24:26 +10:00
Shannon 72998e1a6e Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-07-26 17:18:28 +10:00
Shannon ff87d8b414 Make sure the migration explicitly specifies that -1 is that start node for all built in groups 2017-07-26 17:18:05 +10:00
Stephan a8c29644d4 U4-10023 - multiple start nodes 2017-07-26 08:35:08 +02:00
Stephan bb9ec82060 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-07-25 18:39:47 +02:00
Mads Rasmussen 6e055f0d03 allow outside click to run when you click links and buttons 2017-07-25 15:59:28 +02:00
Mads Rasmussen 9b1f2352bd update view to use the new dropdown component and the list navigation directive 2017-07-25 15:58:14 +02:00
Mads Rasmussen abbee60c9c add directive to navigate a list with arrow up and down 2017-07-25 15:56:51 +02:00
Mads Rasmussen 97ec0ecd08 add umb-dropdown component 2017-07-25 15:48:04 +02:00
Stephan Lonntorp d4a2244190 Added missing translations 2017-07-25 13:28:46 +02:00
Shannon d232aa1f00 U4-10175 User avatar should refresh in top left corner when it's changed 2017-07-25 20:51:58 +10:00
Shannon Deminick 56b1e0902e Merge pull request #2068 from umbraco/temp-U4-10109
fixes: U4-10109 Need to indicate that granular permission entries can…
2017-07-25 18:54:25 +10:00
Shannon 17d17cfb82 Puts back in some old APIs that were removed to maintain some backwards compat with < 7.7 for users 2017-07-25 18:39:23 +10:00
Shannon fa89bef11a Merge branch 'dev-v7.7' into user-group-permissions 2017-07-25 15:16:37 +10:00
Shannon 39e4bf4579 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web/PublishedContentExtensions.cs
2017-07-25 15:15:56 +10:00
Mads Rasmussen 5ade95d797 fixes: U4-10155 Prompt the user before deleting user groups in the user group list 2017-07-24 15:22:22 +02:00
Mads Rasmussen f043a2e4ee fixes: U4-10109 Need to indicate that granular permission entries can be edited 2017-07-24 14:18:36 +02:00
Stephan 14de3fee46 Merge branch dev-v7 into temp-u4-10006 2017-07-21 13:27:56 +02:00
Stephan 17d3548bbb Merge branch dev-v7 into temp-u4-10006 2017-07-21 10:04:25 +02:00
Stephan 9754c4511b U4-10006 - temp debug 2017-07-21 09:35:32 +02:00
Stephan 442d359ab0 U4-10006 - temp debug 2017-07-21 09:14:46 +02:00
Stephan bbed2fa8f6 U4-10006 - temp debug 2017-07-21 09:08:21 +02:00
Stephan 3089a0ab3a U4-10006 - temp debug 2017-07-21 08:48:09 +02:00
Stephan fedd9e2897 Fix User deep-cloning 2017-07-20 16:52:13 +02:00
Shannon c456c0a396 Changes the result of SearchableTreeResolver to be readonly 2017-07-20 23:02:58 +10:00
Shannon 525254efd4 Merge branch 'dev-v7.7' into temp-isearchabletree
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
#	src/Umbraco.Web/Trees/ContentTreeController.cs
2017-07-20 22:21:59 +10:00
Shannon a92288cd61 Fixes implementation of the role store on the BackOfficeUserStore 2017-07-20 22:12:13 +10:00
Shannon 97471f667d Updates the BackOfficeIdentityUser to property support ASP.NET Identity Roles 2017-07-20 22:02:32 +10:00
Shannon 7aca656919 Merge branch 'user-group-permissions' into temp-U4-10138
# Conflicts:
#	src/Umbraco.Core/Models/Identity/BackOfficeIdentityUser.cs
#	src/Umbraco.Core/Models/Identity/IdentityModelMappings.cs
2017-07-20 20:00:05 +10:00
Shannon c309e5edaf Removes even more 2017-07-20 19:23:46 +10:00
Shannon e76ad837b9 Fixes script and partial views trees 2017-07-20 19:16:28 +10:00
Shannon 0b6ed42201 Removes a bunch more files 2017-07-20 19:15:45 +10:00
Shannon a875ede3da Removes a ton of old unused legacy files 2017-07-20 18:55:38 +10:00
Shannon 69fc7c4b7c reverts removing cook computing dll and ensures we still ship with it, removes publish.aspx 2017-07-20 16:44:28 +10:00
Shannon e9e2a86e2e U4-5546 Remove user 'channels', weblog api, and all code / db tables relevant to those 2017-07-20 15:47:26 +10:00
Shannon 540c338967 ensure the password config values are saved when the user is created/updated 2017-07-20 14:09:51 +10:00
Shannon b58799eb3d Gets everything implemented and it all works - still uses the old hashing mechanism but everything is ready to be plugged in to support any new types of hashing. 2017-07-20 13:58:42 +10:00
Shannon 85e5b023b7 Gets UserAwareMembershipProviderPasswordHasher there, updates defaults for MembershipProvider, updates default web.config so the new hashing can be used 2017-07-20 13:44:37 +10:00
Shannon 63befa55d5 Updates password changing for users to use ASP.NET Identity, there's still some more work here to do to implement the IUserAwarePasswordHashing and to result some of the TODOs. Also moved all password changing logic to PasswordChanger even for legacy membership providers. 2017-07-20 12:53:09 +10:00
Stephan 964f3bae60 Optimize start nodes calc 2017-07-19 19:26:25 +02:00
Shannon 5c75285543 U4-8643 Usermanagement - Store password algorithm in Usertable 2017-07-19 20:05:47 +10:00
Shannon ee3f977565 Fixes issue that when we re-update the user ticket we also need to refresh the CSRF tokens 2017-07-19 19:42:12 +10:00
Shannon 8f984c8dc8 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions
# Conflicts:
#	src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
2017-07-19 19:26:26 +10:00
Shannon 8df00d5525 Fixes U4-10111 Changing email on a user doesn't show the username field 2017-07-19 19:22:43 +10:00
Shannon Deminick 05d9eca904 Merge pull request #2056 from umbraco/temp-u4-10173
u4-10173
2017-07-19 19:11:12 +10:00
Stephan 2851216b88 U4-10173 - fix 2017-07-19 10:49:10 +02:00
Stephan 92dc70fc0c Merge branch temp-u4-10173 2017-07-19 10:47:05 +02:00
Shannon 38cd3dcf94 Removes the AllStartNodeIds properties from IUser, updates all unit tests to work with the new methods, ensures the calculation is cached to the user object 2017-07-19 16:15:16 +10:00
Shannon ba46430ad1 Adds notes for ActiveDirectoryBackOfficeUserPasswordChecker and throws an exception since it doesn't support auto-linking yet 2017-07-19 14:24:57 +10:00
Shannon db957c8eaa removes unused method 2017-07-19 14:15:30 +10:00
Shannon b32325bbaa Adds all change tracking to the BackOfficeIdentityUser ensures values are not persisted that are not changed, adds required null checks, removes internal method GetOrCreateBackOfficeUser 2017-07-19 14:13:42 +10:00
Stephan f28136de91 U4-10173 - fix 2017-07-18 15:54:22 +02:00
Stephan 8c3f6dfc25 U4-10173 - refactor start nodes 2017-07-18 15:09:34 +02:00
Shannon 73b107ee2a Fixing U4-10138 Cannot upgrade to 7.7 due to user groups and U4-7907 With non OAuth external login providers we should have an 'auto-link' / 'auto-create' callback option 2017-07-18 19:53:34 +10:00
Stephan 945050858e Cleanup 2017-07-18 09:11:12 +02:00
Shannon 32dc9bd275 wires up the skip button 2017-07-18 14:48:19 +10:00
Shannon f87245f73d Fixes UI for U4-9914 UserController method to upload an avatar and set password when receiving invite 2017-07-18 14:45:09 +10:00
Shannon 0008afb455 Merge branch 'dev-v7.7' into user-group-permissions
# Conflicts:
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
2017-07-18 13:31:04 +10:00
Shannon 6f74fcf24a Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web/Umbraco.Web.csproj
2017-07-18 13:27:03 +10:00
Shannon a0d3c18acc Fixes build script to work with VS 2017 (only) and fixes BuildBelle since it didn't work and is missing tools 2017-07-18 13:10:17 +10:00
Shannon Deminick bd848b00ff Merge pull request #2046 from umbraco/temp-U4-10075
U4-10075 Inherited permissions for content nodes
2017-07-18 11:56:08 +10:00
Bjarne Fyrstenborg bfb5dd91cc Adjust icon and heading to fix issue with icon position in IE 2017-07-18 01:17:47 +02:00
Stephan 3ac64f18d2 Bugfix UserModelMapper 2017-07-17 15:08:45 +02:00
Shannon 193682cd4c Ability to select the root node for the users start node 2017-07-17 20:09:00 +10:00
Shannon d99f7b6ff6 Ability to select the root node for the users start node 2017-07-17 19:51:51 +10:00
Shannon d1d74203ea Ability to select root node in user group picker so the user group can explicitly allow root access or not. 2017-07-17 19:40:45 +10:00
Stephan b3ac3a03f3 U4-10006 - temp debug 2017-07-17 11:30:33 +02:00
Shannon e135291980 Fixes issue with user group start nodes, they are allowed to have null and by default this will be the case but we couldn't remove them and the ROOT node wasn't being mapped. 2017-07-17 18:23:20 +10:00
Stephan bd0ca43b83 U4-10006 - use Invoke-WebRequest, misc 2017-07-17 09:46:09 +02:00
Stephan f39531216c U4-10006 - fix npm/node issues 2017-07-14 20:21:29 +02:00
Stephan 04daaef7b7 Merge branch 'user-group-permissions' into temp-U4-10075 2017-07-14 20:15:51 +02:00
Stephan 29aaa26022 U4-10023 - fix media picker for multiple start nodes 2017-07-14 20:13:57 +02:00
Stephan f24effdf0e U4-10006 - misc fixes 2017-07-14 10:17:40 +02:00
Stephan e9a4321ee8 U4-10006 - revert unwanted changes to tree.config 2017-07-14 10:17:13 +02:00
Shannon Deminick 3f6ec6e36f Merge pull request #2045 from umbraco/temp-U4-10106
U4-10106 Cannot delete user groups
2017-07-14 10:53:27 +10:00
Shannon 8347d8f23b Merge remote-tracking branch 'origin/user-group-permissions' into temp-U4-10106
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
2017-07-14 10:53:07 +10:00
Shannon db863a4592 update sln to stop building the damn UI project 2017-07-14 10:49:10 +10:00
Shannon ca104347b3 Merge branch 'user-group-permissions' into temp-U4-10106 2017-07-14 10:43:45 +10:00
Shannon 9fbf1aedac adds both post and delete verbs 2017-07-14 10:43:12 +10:00
Shannon Deminick dfbd064de6 Merge pull request #2044 from umbraco/temp-U4-10096
U4-10096 Ability to bulk assign users to groups in the user list
2017-07-14 10:35:49 +10:00
Stephan 2bff1bfbb6 U4-10121 - properly dispose context 2017-07-13 14:20:29 +02:00
Stephan ab1dade468 U4-10121 - properly dispose context 2017-07-13 13:11:46 +02:00
Warren Buckley 9ea2fa9d8c Couple of tiny typos in the XML Comments/Docs 2017-07-13 10:15:41 +01:00
Shannon 1643eec62c Fixes cache refreshing for user groups since user cache need to be cleared for that too. Updates cache refreshers to use json.net for serializing which is way faster. adds better support for querying multiple user groups and entity ids for permissions, updates tests 2017-07-13 18:47:10 +10:00
Claus 6a48c1646d checking for uses of userType. 2017-07-13 09:26:48 +02:00
Shannon 6e89202002 Fixes usages of IUserService.GetPermission since before it was doing a FirstOrDefault() since that's just how the old APIs worked, now we need to get all permissions based on groups. Also updated the usages of ToString for char for the permissions to be culture invariant everywhere. 2017-07-13 14:32:43 +10:00
Shannon 69a6a80ffd Updates logic and test for getting all node permissions for a user that have explicit permissions defined 2017-07-13 14:16:13 +10:00
Shannon c472463f37 Removes all user permissions cache refreshing and events and obsoletes assocated clsses 2017-07-13 11:02:34 +10:00
Shannon 76f9e2c22a Updates user permissions lookup to do one query instead of one query per user group 2017-07-13 10:43:42 +10:00
Shannon df18cdc7f7 Merge remote-tracking branch 'origin/user-group-permissions' into temp-U4-10075 2017-07-13 01:58:18 +10:00
Shannon 87dcdc596e Gets last unit tests written for returning all permissions for either user or group when not specifying Ids 2017-07-13 01:56:22 +10:00
Shannon 044120ffd2 Gets inherited permissions working, adds lots of unit tests, few more tests to write now. 2017-07-13 00:07:51 +10:00
Claus 0acb0d48a1 Merge pull request #1858 from Jeavon/RelatedLinks-Tweaks
Tweaks to RelatedLinks
2017-07-12 15:26:53 +02:00
Claus c8828b968c found an extension method :) 2017-07-12 13:56:18 +02:00
Claus 2e28ff3ccf U4-10106 Cannot delete user groups 2017-07-12 13:43:00 +02:00
Robert cddc6f3116 Cleared useless methods 2017-07-12 12:28:40 +02:00
Stephan f18b7110c9 Minor fix in DataTypeValidateAttribute 2017-07-12 12:26:51 +02:00
Claus 44bb7e84db U4-10142 Adding a user - does not show up until refresh 2017-07-12 11:52:08 +02:00
Claus 06f68b1417 U4-10096 Ability to bulk assign users to groups in the user list 2017-07-12 11:31:34 +02:00
Robert 769f0d97d2 Added TruncateByWords method + overloads 2017-07-12 10:35:09 +02:00
Shannon 7115d85440 Removes unused and unneeded APIs on IUserService, updates code comments to describe implicit vs explicit permissions 2017-07-12 14:06:30 +10:00
Shannon d9937fb276 Stop trying to build the UI.Client project as part of the sln build 2017-07-12 14:01:36 +10:00
Claus 7f98f99eaa Merge pull request #2039 from umbraco/temp-u4-10121
U4-10121 - Scheduled Publishing as background task
2017-07-11 11:37:46 +02:00
Shannon 53bce239c3 Gets implicit/inherited permissions 'working', well at least with one test, now need to test the rest. 2017-07-11 19:19:38 +10:00
Shannon 50a896a6cc Doesn't send async if not using a network based SMTP server 2017-07-11 15:06:18 +10:00
Shannon 3c31e33000 Fixes U4-10133 Investigate issues with SMTP Invite and async 2017-07-11 14:46:51 +10:00
Shannon 9462f8ad85 Fixes password reset when there is invalid other password properties 2017-07-11 13:57:33 +10:00
Shannon cb4e1d324d Removes the NoCredentials enum (we don't use it or need it) 2017-07-11 12:18:12 +10:00
Stephan 13d26eb435 Merge branch dev-v7.7 into user-group-permissions 2017-07-10 17:48:51 +02:00
Stephan f7d11bf936 U4-10006 - fix 2017-07-10 17:41:58 +02:00
Stephan 0fc868c9ba U4-10006 - verify NuGet 2017-07-10 15:58:22 +02:00
Claus 6a06a9e400 small tweak to skip a check if not needed. 2017-07-10 15:27:15 +02:00
Claus 1149129c6f U4-10104 Dashboards are not showing up in backoffice 2017-07-10 15:21:24 +02:00
Claus ad886efa62 cleanup and lineendings. 2017-07-10 15:20:17 +02:00
Stephan 79df75c415 U4-10121 - Scheduled Publishing as background task 2017-07-10 13:39:40 +02:00
Claus c0a6c58a07 U4-10134 Disabled doesn't override Invited 2017-07-10 13:38:39 +02:00
Claus deaece7cfc more clauses. 2017-07-10 13:37:57 +02:00
Claus a3bb11e4b0 I got a feeling you did this on purpose :P 2017-07-10 13:05:33 +02:00
Claus f2b52585e1 U4-10111 Changing email on a user doesn't show the username field 2017-07-10 12:22:35 +02:00
Claus 8b308fa1ea hide the count until the property is set. 2017-07-10 12:22:12 +02:00
Stephan a3f4275b30 U4-10006 - build docs 2017-07-09 18:45:29 +02:00
Stephan cfd3301965 U4-10006 - fix build.ps1, update build.md doc 2017-07-09 17:29:06 +02:00
Stephan 48041c3163 U4-10006 - add build.ps1 2017-07-07 16:41:21 +02:00
Sebastiaan Janssen e9072aa6c9 Merge pull request #2031 from umbraco/temp-U4-10117
Adds a missing index to the cmsDictionary.key column with migrations since the column size needs to be reduced.
2017-07-06 15:31:05 +02:00
Claus 779306d90f typos. 2017-07-06 15:08:01 +02:00
Claus 7540f49a5e fixing a bunch of mismatching mappings.
aligning property names with what they actually are.
2017-07-06 14:41:05 +02:00
Claus 2e29d112e5 reformatting. 2017-07-06 13:14:24 +02:00
Claus fe451154d1 fixing some markup errors 2017-07-06 13:14:17 +02:00
Claus 271056f997 mapping media start nodes instead of mapping content twice. 2017-07-06 12:48:47 +02:00
Shannon 9b0f2145d0 Fixes user state filtering to do an OR 2017-07-06 19:51:59 +10:00
Shannon f355b27d1f Merge branch 'dev-v7.7' into user-group-permissions 2017-07-06 12:56:17 +10:00
Shannon 8e861eab43 Adds a missing index to the cmsDictionary.key column with migrations since the column size needs to be reduced. 2017-07-06 12:45:58 +10:00
Shannon 7e9afe7720 bumps version 2017-07-06 12:31:26 +10:00
Shannon a050a73c31 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-07-06 12:28:51 +10:00
Shannon 403a210c1c Fixes issue with assigning default permissions for a new user group 2017-07-05 19:25:48 +10:00
Shannon 03c7429653 FIxes SQL statement when upgrading with SQLCE and fixes GetAll when passing in an array of ints to ensure that we check if the int array is empty or not 2017-07-05 18:23:51 +10:00
Shannon bba7b15125 Fixes installer angular module loading - this would have never worked without errors, not sure how we've missed this. 2017-07-05 18:22:45 +10:00
Shannon 1d9e33dadf Granular permissions in group editor are all working, we could do with an edit button but for now it's ok, selecting the same node will perform an 'edit' 2017-07-04 15:40:33 +10:00
Shannon 316ec5d20f gets granular permissions showing correctly in group editor 2017-07-04 15:07:11 +10:00
Shannon 82bd11e66d Gets filtering on user state working 2017-07-03 19:27:48 +10:00
Shannon 94b0cb04da fix tests 2017-07-03 17:58:04 +10:00
Shannon ff02b28d26 Fixes tree for single tree sections, fixes creating a user group so you can select default permissions 2017-07-03 16:31:47 +10:00
Shannon 247ca906aa Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-07-03 15:10:10 +10:00
Mads Rasmussen bcffc37287 revert this for now 2017-06-30 21:29:24 +02:00
Mads Rasmussen 8d2a9d1d81 fixes: U4-10060 Make UI for user groups overview 2017-06-30 13:33:59 +02:00
Mads Rasmussen 2aaf104856 change text on cancel button to close 2017-06-30 10:51:23 +02:00
Shannon 224d1bcf6e U4-10053 Review anywhere else in the codebase that may reference User Type
and removes all old editors, trees, etc...
2017-06-30 18:38:02 +10:00
Mads Rasmussen 6ebacf118e fix grunt build 2017-06-30 10:36:55 +02:00
Shannon e4edd8f692 U4-10053 Review anywhere else in the codebase that may reference User Type
This also removes some totally unused and ancient code
2017-06-30 18:14:44 +10:00
Shannon 8fe904cea7 changing spaces back to 4, finally in sync with mads 2017-06-30 17:24:48 +10:00
Shannon 3a17002ec4 fixes build after merge 2017-06-30 17:21:40 +10:00
Shannon 804c60653e Merge branch 'dev-v7.7' into user-group-permissions
# Conflicts:
#	src/Umbraco.Core/Services/UserService.cs
#	src/Umbraco.Tests/Services/ContentServiceTests.cs
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/nl.xml
2017-06-30 16:57:22 +10:00
Shannon 29c6d547db Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7 2017-06-30 16:55:04 +10:00
Shannon 546999e470 U4-9946 Update the ExternalSignInAutoLinkOptions to support groups - currently still using UserType 2017-06-30 16:50:44 +10:00
Shannon 0da75f4e78 Updates content permissions dialog to show the explicit permissions assigned and removing them will reset them. 2017-06-30 16:32:01 +10:00
Shannon e69957e580 Merge remote-tracking branch 'origin/user-group-permissions' into user-group-permissions 2017-06-30 14:45:07 +10:00
Shannon a072d4edb3 adds security to changing premissions in the content dialog 2017-06-30 14:42:08 +10:00
Stephan 872530296f U4-10006 - fix 2017-06-29 19:26:51 +02:00
Mads Rasmussen 968f93f769 stop toggles from closing the dialogs 2017-06-29 15:28:38 +02:00
Mads Rasmussen 0c6c3f6d51 add notifications to content permissions dialog 2017-06-29 15:12:12 +02:00
Mads Rasmussen a082b72f50 set change password button size to the same as the other buttons 2017-06-29 12:30:50 +02:00
Mads Rasmussen 69791a3616 use userGroups resource in userGroups picker 2017-06-29 12:25:28 +02:00
Shannon 72bdc0f070 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-29 19:15:22 +10:00
Shannon 4f28cb1917 Gets content permissions saving per user group 2017-06-29 19:15:04 +10:00
Claus 6cb104cd4f Merge pull request #2023 from umbraco/drbldgtl-dev-v7-U4-5804
U4-5804 Remove all the old images that are no longer used in the umbraco and umbraco_client folders
2017-06-29 10:50:09 +02:00
Claus af3665c0f9 Merge branch 'dev-v7-U4-5804' of git://github.com/drbldgtl/Umbraco-CMS into drbldgtl-dev-v7-U4-5804
# Conflicts:
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
2017-06-29 10:48:04 +02:00
Mads Rasmussen ed78082693 aligning UI for pickers 2017-06-29 10:15:10 +02:00
Mads Rasmussen 91e15d4b64 use userGroupsResource in users and groups overview 2017-06-29 09:57:24 +02:00
Shannon 5dec4a4a94 Moves logic to separate UserGroupsController from the user controller, refactors a few model mappings to reduce a few lines of code, default permissions on user groups now save 2017-06-29 14:39:11 +10:00
Shannon 5d5b852e5a moves the change password part of the user to where the design had it 2017-06-29 13:17:19 +10:00
Shannon 454684e108 updates user models to not return so much info when not needed 2017-06-29 13:13:32 +10:00
Shannon 4fc5279a78 ok, tests fixed now? 2017-06-29 12:38:33 +10:00
Shannon abb393c335 fixes tests 2017-06-29 12:31:23 +10:00
Mads Rasmussen 225cf8f8f5 fix content permissions dialog 2017-06-28 22:11:02 +02:00
Mads Rasmussen 0bc2e93230 fix grunt build 2017-06-28 21:52:33 +02:00
Shannon 7ca7b6f922 Allows for the mini profiler in the back office (again) 2017-06-29 01:04:20 +10:00
Shannon 923ceadd02 fixes new permissions model mapping on dialog 2017-06-29 01:03:27 +10:00
Shannon c5111f9ba8 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/content/rights.html
2017-06-29 01:01:54 +10:00
Shannon 85d988e75e Adds GetDetailedPermissions to the content controller which is used in the permissions dialog 2017-06-29 01:00:52 +10:00
Stephan 71b5e5223f U4-10006 - fix 2017-06-28 16:26:27 +02:00
Mads Rasmussen 49f2892ff1 group.controller.js: a bit of clean up 2017-06-28 16:12:58 +02:00
Mads Rasmussen c7c0793a0a fix line indention 2017-06-28 16:06:54 +02:00
Mads Rasmussen 3d847b0ea9 fixes: U4-10054 Prototype granular permissions on user group 2017-06-28 16:03:33 +02:00
Shannon 3cd39fee94 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-28 23:38:51 +10:00
Shannon 8023a89b10 Returns the default permissions as a model as part of the UserGroupDisplay and wires this up in the user group editor 2017-06-28 23:38:42 +10:00
Claus 4f6ecf5e91 Merge branch 'temp-old-client-files-clean-up-2' into dev-v7.7 2017-06-28 15:27:34 +02:00
Claus eb4588780e Hartvig removing a lot of old client files used only in v6.
Reverted on dev-v7 and cherrypicked onto dev-v7.7.
2017-06-28 15:01:56 +02:00
Stephan f3935b5007 Merge branch 'dev-v7' into temp-u4-10006 2017-06-28 13:10:05 +02:00
Mads Rasmussen de00b2ef00 fixes: U4-10061 Add functionality for show/hide/copy password when creating new user 2017-06-28 10:29:16 +02:00
Per Ploug e35a748c92 Fixes issues with missing angular modules and adds sourcemap support 2017-06-27 17:00:00 +02:00
Mads Rasmussen 2294940038 bring back the avatar in the edit user editor 2017-06-27 12:53:41 +02:00
Shannon e8e2e2c91d Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-27 19:55:21 +10:00
Shannon d78dcb51c0 Gets the invite fully working along with choosing an avatar, adds more security so that the link can't be used again, 2017-06-27 19:55:03 +10:00
Mads Rasmussen 8eb4d2ed20 fixes: U4-10062 Restrict current user permissions 2017-06-27 11:40:04 +02:00
Mads Rasmussen bc19c8358d update to edit user to support state key instead of state alias 2017-06-27 11:31:41 +02:00
Jeavon ce38320c6a Tidy up usings 2017-06-27 09:58:12 +01:00
Mads Rasmussen 439df3b52c user group preview - only show edit button if edit is allowed 2017-06-27 10:07:16 +02:00
Shannon ab71fa3101 adds the IsCurrentUser flag to the UserDisplay model 2017-06-27 15:44:55 +10:00
Shannon 8e21bc3c74 Create user now generates a password 2017-06-27 15:30:32 +10:00
Jeavon 3083f185d0 Merge branch 'dev-v7.7' into temp-U4-9984 2017-06-26 18:01:57 +01:00
Jeavon 07356db30e Adding MachineName to Slack Notification username so you tell where it came from in different environments 2017-06-26 16:34:38 +01:00
Jeavon f615125c24 Remove Slack options from HealthCheckResults as it now looks after itself 2017-06-26 16:28:44 +01:00
Jeavon 29da5ed843 Fix HttpsCheck to use HealthCheckContext instead of HttpContext so it works with scheduled checks 2017-06-26 16:26:18 +01:00
Jeavon 587ce8fc4f My "and" as in the wrong place 2017-06-26 16:05:15 +01:00
Jeavon 833c787414 Adding message text with totals 2017-06-26 15:53:15 +01:00
Jeavon 1f2e1e4e93 Warnings are success with Warning so should be counted as success 2017-06-26 15:48:44 +01:00
Jeavon d7bd711d9a Switch Health Check Slack notification to use Slack Attachments 2017-06-26 15:25:11 +01:00
Mads Rasmussen f309e3587b fix user group filter + add UI for user states filter 2017-06-26 15:00:32 +02:00
Mads Rasmussen 493873a8d0 permissions dialog: add edit button to selected user group 2017-06-25 22:48:49 +02:00
Mads Rasmussen 7beec02a3f permissions dialog: fix save button text 2017-06-25 21:54:32 +02:00
Mads Rasmussen 86cb750ca1 permissions dialog: filter out selected groups from dropdown 2017-06-25 21:51:17 +02:00
Mads Rasmussen f92e119060 hardcode group names 2017-06-25 20:27:14 +02:00
Mads Rasmussen 13a0621f89 localize strings 2017-06-25 20:26:44 +02:00
Shannon 0cd871241f Gets password reset working, gets more server side validation wired up 2017-06-23 16:38:39 +10:00
Shannon 3eba5e5c19 Merge branch 'dev-v7.7' into user-group-permissions
# Conflicts:
#	src/Umbraco.Core/Persistence/Migrations/Initial/BaseDataCreation.cs
#	src/Umbraco.Tests/Services/UserServiceTests.cs
#	src/Umbraco.Web.UI.Client/src/common/services/util.service.js
#	src/Umbraco.Web.UI/config/trees.config
#	src/Umbraco.Web/Umbraco.Web.csproj
2017-06-23 16:37:56 +10:00
Shannon 754dbc9621 Merge remote-tracking branch 'origin/dev-v7' into dev-v7.7
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
2017-06-23 15:15:55 +10:00
Shannon d936105cfe Gets the user states set correctly 2017-06-23 15:14:46 +10:00
Shannon ea2f808c1e fixes tests 2017-06-23 14:58:00 +10:00
Shannon 3ece9175a0 Moves the enable/disable user notifications and localization alerts to server side, adds server side validation so that the current user cannot disable themsevlves. 2017-06-23 14:49:04 +10:00
Shannon 692dc66684 You can now change the user password in the user editor 2017-06-23 14:08:58 +10:00
Shannon 25a79bc2fa fixing tests 2017-06-23 11:43:58 +10:00
Shannon 8cd413ba8f ensures group start nodes are set to null on install 2017-06-23 11:24:06 +10:00
Shannon 1eeae770b4 Fixes issue with calculating all user start nodes, improves perf too 2017-06-23 11:23:40 +10:00
Mads Rasmussen 0e2c94c079 fix remove user from user group 2017-06-22 14:59:03 +02:00
Mads Rasmussen 99da2e923d move toggle to the left of the permission text 2017-06-22 13:30:36 +02:00
Mads Rasmussen c9200d54b5 update umb-toggle to show icons as default instead of labels 2017-06-22 13:28:01 +02:00
Shannon 8f51f574ae fixing build 2017-06-22 17:02:46 +10:00
Shannon 90d4153e87 updates some of the sub view routing with users/groups so the routing is always there 2017-06-22 16:47:45 +10:00
Shannon 6380d1d538 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-22 16:33:00 +10:00
Shannon b43ca64ac7 Ensures that the auth cookie data contains all of the user's start nodes, fixes persisting the user group icon 2017-06-22 16:32:44 +10:00
Mads Rasmussen 7825040e4d sync tree 2017-06-21 15:55:57 +02:00
Mads Rasmussen f27b456eb4 users overview tlc + cleanup. Changed click to open instead of select 2017-06-21 15:40:52 +02:00
Mads Rasmussen bd7aba5ea2 fix umb-toggle labels + add documentation 2017-06-21 11:35:53 +02:00
Mads Rasmussen 9786ae8428 wip content permissions dialog 2017-06-20 15:35:02 +02:00
Mads Rasmussen f28c4cdaa5 load new permissions dialog 2017-06-20 15:19:42 +02:00
Mads Rasmussen cc41447ff7 prototype default permissions on edit user group 2017-06-20 15:19:06 +02:00
Mads Rasmussen 2e239939fc add umb-toggle component 2017-06-20 14:52:32 +02:00
Stephan 4cdb30fed0 Merge branch dev-v7 into dev-v7.7 2017-06-20 14:27:25 +02:00
Shannon 9dc34f0c98 Updating a bunch of start node checking logic to ensure that it takes the user and user group start nodes into account 2017-06-20 18:38:31 +10:00
Shannon cec829774e Merge remote-tracking branch 'origin/dev-v7' into user-group-permissions
# Conflicts:
#	src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs
#	src/Umbraco.Web/Cache/DataTypeCacheRefresher.cs
2017-06-20 17:09:52 +10:00
Shannon 94e958bd7a Ensures the user's combined start nodes are used when checking path access 2017-06-20 17:04:00 +10:00
Shannon 957c8e917f fixes tests 2017-06-20 16:49:24 +10:00
Shannon d7e65dd088 User groups can now be created/saved 2017-06-20 15:10:42 +10:00
Shannon 4e1e2c5332 fix unit tests 2017-06-20 14:37:49 +10:00
Shannon 7689ee73d4 Wires up saving the user group 2017-06-20 14:33:24 +10:00
Shannon af7a5187f2 Adds the user count to IUserGroup 2017-06-20 13:19:14 +10:00
Shannon e276c7a1bf Wires up getUserGroupScaffold 2017-06-20 12:34:33 +10:00
Shannon 7797ad4130 localizes invite email 2017-06-20 12:25:27 +10:00
Shannon 78bfc087fb Fixes up all of the user sorting to work properly 2017-06-20 11:55:21 +10:00
Shannon 146a865882 fixes UserState values to be what they were before 2017-06-20 11:21:31 +10:00
Jeavon b0827b75b2 Rename Results to GetResultsForStatus and only calculate the result set required 2017-06-19 13:03:29 +01:00
Jeavon 824eee80b3 Adding a Results method to the HealthCheckResults so that Notification Methods can construct specific messages with different result sets 2017-06-19 12:18:47 +01:00
Jeavon 0638786075 A Resultype of info only isn't considered a failure 2017-06-19 12:16:01 +01:00
Mads Rasmussen 79e9394b62 wire up enable users and disable users bulk actions 2017-06-19 11:51:38 +02:00
Jeavon ebef6b5d42 A few tweaks to the HealthChecks.Release.config to show different options 2017-06-19 10:11:57 +01:00
Shannon 054fd46555 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-19 18:45:53 +10:00
Shannon 9ab9007821 SQL fix for SQLCE for user states 2017-06-19 18:45:38 +10:00
Mads Rasmussen a7a7909a25 fix header icon width 2017-06-19 10:21:21 +02:00
Jeavon ac1aa719b6 Updating HealthChecks.Release.config to new format 2017-06-19 09:18:00 +01:00
AndyButland 9f68bd4e52 Amended registration of health check scheduled notifiers (email and Slack) to use a resolver method and allow others to be added without modifying core 2017-06-18 16:41:46 +02:00
Mads Rasmussen 41ee187637 increase font small for small buttons 2017-06-16 14:14:05 +02:00
Mads Rasmussen 3ec9c9a348 fix animation on block buttons 2017-06-16 14:13:44 +02:00
Mads Rasmussen efaa24fb51 add UI feedback when enabling/disabling user 2017-06-16 14:03:06 +02:00
Mads Rasmussen 00659711d9 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-15 20:28:39 +02:00
Shannon 021e083b75 Fixes issue with email confirmation date, adds invite date, adds user state counts 2017-06-15 16:47:51 +02:00
Stephan a3af1d478d U4-10006 - revert unrelated changes 2017-06-15 16:08:51 +02:00
Shannon 0f89b1dea7 Fixes up how formctrl are required for various directives, adds validation to invite/create user, fixes up back end and is all now working 2017-06-15 15:59:29 +02:00
Stephan 7d8fdff6c1 U4-10006 - adjust projects to new build 2017-06-15 15:50:50 +02:00
Stephan a813c0bfea U4-10006 - import some documentation 2017-06-15 15:15:53 +02:00
Stephan 4870554f47 U4-10006 - from build.bat to Umbraco.Build PS module 2017-06-15 13:32:00 +02:00
Shannon 5b8d314a29 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-15 12:47:40 +02:00
Shannon f33d21b8f6 Gets all the localization for the invite setup and error checking based on the password provider information 2017-06-15 12:45:53 +02:00
Mads Rasmussen 2361d7878e add word-wrap to user-card name 2017-06-15 11:27:01 +02:00
Mads Rasmussen 613a9de858 show user state after save 2017-06-15 11:20:19 +02:00
Mads Rasmussen 9f234f1669 start on create user group 2017-06-15 11:07:57 +02:00
Mads Rasmussen 7353591f4c in sections panel: show avatar initials if no avatar 2017-06-15 11:06:10 +02:00
Shannon 439c30e2fd changes name from versionHash to cacheBuster 2017-06-15 09:20:46 +02:00
Shannon 0858e04345 tidy up how a user is created when invited, ensure the special empty password is used. 2017-06-15 00:46:23 +02:00
Shannon 6d22f7f86f Getting the invite password setting done with validation, almost there 2017-06-15 00:05:12 +02:00
Shannon c13b2fae4b Fixes issue of rendering the umb version in the html markup 2017-06-15 00:04:42 +02:00
Shannon 51b19bedc8 Merge remote-tracking branch 'origin/dev-v7' into user-group-permissions
# Conflicts:
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web/Editors/GravatarController.cs
#	src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
2017-06-14 22:30:36 +02:00
Shannon 582e36c517 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-14 21:30:08 +02:00
Shannon a62426a763 Gets email sending ensures user is logged in with verifying but is only partially logged in and cannot access the back office, they can only access the verification screen 2017-06-14 16:21:56 +02:00
Mads Rasmussen 898f00cbf1 fix avatar sizes 2017-06-14 14:07:07 +02:00
Mads Rasmussen 12de575dfb update user picker to match new data model 2017-06-14 13:12:49 +02:00
Mads Rasmussen cd8418a8c0 remove fake loading of user groups 2017-06-14 12:52:12 +02:00
Mads Rasmussen 89dcb6a0e2 fix start node pickers 2017-06-14 12:51:41 +02:00
Shannon cd1e88d151 Gets email sending using razor view 2017-06-14 11:29:15 +02:00
Shannon e757868d09 Moves logic back to user service for inviting a user since its much simpler. 2017-06-13 18:47:20 +02:00
Shannon f09f17e496 getting email invite working and with identity apis 2017-06-13 18:38:16 +02:00
Shannon 3fac1b05ae Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-13 15:48:04 +02:00
Shannon 716629235e issue with mapping ysod 2017-06-13 15:47:39 +02:00
Mads Rasmussen e40a904896 clean up groups overview controller 2017-06-13 15:39:14 +02:00
Mads Rasmussen 5aeb8ed74d get all sections in section picker 2017-06-13 15:27:58 +02:00
Mads Rasmussen 5273644a7e split up groups and status filter + add additional filter options to order by 2017-06-13 15:12:54 +02:00
Mads Rasmussen 56e6722880 fix user group load spinner 2017-06-13 11:47:35 +02:00
Mads Rasmussen fb3ac86d8c add section picker 2017-06-13 11:30:48 +02:00
Jeavon Leopold 01a2ba8ad6 Added failureOnly setting to both email and Slack health check notifications - thanks to feedback at #cg17! 2017-06-10 09:59:37 +02:00
Jeavon Leopold 36a659f3da Incorrect class for logging within the HealthCheckNotifier 2017-06-10 09:34:35 +02:00
Jeavon Leopold f6cc06356c Adding new verbosity attribute to transform for health check config 2017-06-06 12:24:16 +02:00
AndyButland 7929b460c3 Added option for summary or detailed results in health check notifications 2017-06-06 10:32:26 +02:00
Mads Rasmussen 379b8c3719 fix render in users list view 2017-06-06 02:16:21 +02:00
Shannon 174e336512 fixes sections 2017-06-06 02:13:14 +02:00
Shannon 9bf61bb487 real data for user group 2017-06-06 02:05:17 +02:00
Shannon 5a5bdb6328 user doesn't need to be not approved for invite 2017-06-06 01:29:01 +02:00
Shannon 7f03a97a78 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-06 01:21:17 +02:00
Shannon 7533b0e704 ensures icons, ensures saving info for creating users 2017-06-06 01:21:03 +02:00
Mads Rasmussen d72af87790 rename content picker to media picker 2017-06-06 01:11:40 +02:00
Mads Rasmussen 1eba16579a remove search on user groups 2017-06-06 01:10:55 +02:00
Mads Rasmussen 1c373ca771 fix render in user group picker 2017-06-06 01:10:36 +02:00
Shannon f907385ac8 fix mapping issue 2017-06-06 01:06:19 +02:00
Shannon fbda8fe4a3 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-06 00:50:56 +02:00
Mads Rasmussen e8ceb2756d wire up start node preview 2017-06-06 00:49:48 +02:00
Shannon cfe90999d3 Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-06 00:49:43 +02:00
Shannon bbda93a06b updates mapping for start nodes 2017-06-06 00:49:36 +02:00
Mads Rasmussen a041fc47e0 view for user group preview 2017-06-06 00:49:07 +02:00
Mads Rasmussen 6da5fe6b3a fix sections, content and media start node in umbUserGroupPreview 2017-06-06 00:35:31 +02:00
Shannon 869f75af4a Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-06-06 00:14:26 +02:00
Shannon 76032cf5f7 maps name and icon for user groups 2017-06-06 00:13:46 +02:00
Mads Rasmussen c03e1420e0 fix user group name 2017-06-06 00:11:59 +02:00
Shannon 64975166e7 updates user models 2017-06-06 00:02:23 +02:00
Shannon 2ee34d5c48 updates user models 2017-06-05 23:25:33 +02:00
Lee Kelleher 44018b976a Merge pull request #1980 from leekelleher/temp-cgrt17-nc-tweaks-1
Nested Content amends + localization
2017-06-05 21:40:51 +02:00
leekelleher 1293730dd3 Merge remote-tracking branch 'upstream/dev-v7.7' into temp-cgrt17-nc-tweaks-1
# Conflicts:
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
2017-06-05 21:35:16 +02:00
Shannon Deminick fc30cdee31 Merge pull request #1984 from umbraco/temp-content-blueprints
Content blueprints
2017-06-05 21:26:35 +02:00
Shannon ca8e25f465 Merge remote-tracking branch 'origin/dev-v7.7' into temp-content-blueprints 2017-06-05 21:17:53 +02:00
Shannon f55d1328d0 Merge tag 'release-7.6.4' into temp-content-blueprints 2017-06-05 21:17:41 +02:00
leekelleher 685f7bcde8 Correct the Nested Content Editor directive name,
as it conflicted with the package version - which override the core version (wasn't good).
2017-06-05 21:08:43 +02:00
Sebastiaan Janssen 547767fc0f Fixes: when valid username is used, don't raise the unknown username event 2017-06-05 17:16:22 +02:00
Lars-Erik Aabech 6c78b8b60a Prevents saving blueprint with same name as other existing 2017-06-05 16:56:29 +02:00
Lars-Erik Aabech 8602aab6f7 Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-05 16:47:40 +02:00
Lars-Erik Aabech 88702f7e18 Can create blueprints from the tree 2017-06-05 16:46:30 +02:00
Jeavon Leopold 57bb47a78b Add xdt transforms for adding the HealthChecks config to Web.Config 2017-06-05 15:31:21 +02:00
leekelleher 57b037fda0 Switched to a better GUID generation method
Fixed issue with keys being generated on every publish rather than being remembered
2017-06-05 15:26:02 +02:00
leekelleher 7aad660ebf Renamed selectedDocTypeTabs to be docTypeTabs,
as it contains the tab names for all the doctypes. It was a misnomer.
2017-06-05 15:25:34 +02:00
leekelleher 181a5b847c Removed redundant reference from the Nested Content editor controller
`ncResources` wasn't being used in the `PropertyEditorController`
2017-06-05 15:24:37 +02:00
leekelleher 7a7f24ed78 Localized Nested Content's labels 2017-06-05 15:23:27 +02:00
leekelleher 0c8e5a2cc2 Added dictionary keys for Nested Content 2017-06-05 15:21:43 +02:00
leekelleher c43dda468c Renamed "nestedcontent.resources.js" to be singular "resource".
Aligns with the rest of the resource files
2017-06-05 15:21:21 +02:00
Jeavon Leopold 9edc20b1b1 Merge branch 'dev-v7.7' into temp-U4-9984 2017-06-05 15:00:42 +02:00
AndyButland 28247add3c Created unit tests for health check results 2017-06-05 14:37:50 +02:00
Shannon e4d96997d5 Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints 2017-06-05 14:35:07 +02:00
Jeavon Leopold dd84164ac5 Fix email subject to come from config for Health Check Notifier 2017-06-05 14:08:52 +02:00
Shannon 8bc033efde Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints 2017-06-05 14:02:23 +02:00
Jeavon Leopold a407f9aa19 Merge branch 'feature/health-check-scheduler' of https://github.com/AndyButland/Umbraco-CMS into temp-U4-9984
# Conflicts:
#	src/Umbraco.Web/HealthCheck/HealthCheckResults.cs
#	src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs
2017-06-05 14:02:12 +02:00
Shannon 1e90015253 updates to name ModelState and ensures tokenized localization 2017-06-05 14:02:11 +02:00
Lars-Erik Aabech 7f63919ba6 Merge branch 'temp-content-blueprints' of https://github.com/umbraco/Umbraco-CMS into temp-content-blueprints 2017-06-05 13:52:57 +02:00
Jeavon Leopold 57ce6d7f64 Break up the list of Health Checks to be more readable and change the Slack icons 2017-06-05 13:52:48 +02:00
Lars-Erik Aabech 0fff051cf6 Tests for the create content controller 2017-06-05 13:52:07 +02:00
AndyButland 0a997ae04e Switched health check resolver to use application scope 2017-06-05 13:40:38 +02:00
AndyButland bf194a819a Added try/catch around scheduled checks so one failure doesn't block the rest. Applied some formatting to email HTML notification. 2017-06-05 13:35:08 +02:00
Jeavon Leopold a102a7c094 Adding Slack.Webhooks to nuspec 2017-06-05 13:30:26 +02:00
Lars-Erik Aabech 346b29b827 Couple of unit tests for the create content dialog 2017-06-05 12:12:25 +02:00
Shannon 1bedc6a444 Wires up server side validation for name 2017-06-05 12:11:20 +02:00
Jeavon Leopold 826f916960 Health Check notifier now has different icons depending on if all checks are good or not 2017-06-05 12:10:19 +02:00
Sebastiaan Janssen 74126134b1 Some more cleanup 2017-06-05 12:07:45 +02:00
Jeavon Leopold d30b70ea12 Refactoring the HealthChecks Configuration to make it cleaner & easier to add futher notification providers 2017-06-05 11:57:03 +02:00
Sebastiaan Janssen 6136118699 Clean up some events being raised, add code comments, shuffle some code around to make it look nicer 2017-06-05 11:52:42 +02:00
AndyButland 0f7165dada Retrieved HTML fragment for health check notification email from results, minor reformatting 2017-06-05 11:45:42 +02:00
Stephan 31f8213460 Amazingly improve NestedContent non-support of some editors 2017-06-05 11:33:05 +02:00
Jeavon Leopold 6b419f4260 Adding check for server role to the HealthCheckNotifier so it only runs on the Master 2017-06-05 11:26:33 +02:00
Jeavon Leopold ddd693e120 Merge branch 'feature/health-check-scheduler' of https://github.com/AndyButland/Umbraco-CMS into temp-U4-9984 2017-06-05 11:17:01 +02:00
Jeavon Leopold 7047d3ebaa Adding support for Slack Markdown "light" 2017-06-05 11:16:03 +02:00
AndyButland 84d131e7f7 Removed disabled healthchecks from dashboard 2017-06-05 11:07:12 +02:00
AndyButland f75b66dda8 Send scheduled health checks results as email to configured address 2017-06-05 10:52:17 +02:00
Lars-Erik Aabech 1abec65f03 Saving blueprints keeps only save button 2017-06-05 10:47:52 +02:00
Shannon ac0a5bfe5d fixes cancel button 2017-06-05 10:46:37 +02:00
Sebastiaan Janssen 114b58c5ca Raise events for failed login attempts for unknown users 2017-06-05 10:43:57 +02:00
Jeavon Leopold 6e4ffcc068 Adding method to HealthCheckResults to return the results as Markdown 2017-06-05 10:40:20 +02:00
Shannon 121036ebb9 Merge branch 'dev-v7.7' into user-group-permissions
# Conflicts:
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI.Client/src/less/belle.less
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web/Umbraco.Web.csproj
2017-06-05 10:35:23 +02:00
Sebastiaan Janssen 3019d67922 Adds forgot password events 2017-06-05 10:25:05 +02:00
Shannon e2f9c90dc6 Merge branch 'dev-v7.7' into temp-content-blueprints 2017-06-05 10:23:10 +02:00
Jeavon Leopold 439d52e358 Merge branch 'feature/health-check-scheduler' of https://github.com/AndyButland/Umbraco-CMS into temp-U4-9984 2017-06-05 10:18:26 +02:00
Shannon 7d1aedc0d3 fixes unit tests 2017-06-05 10:17:18 +02:00
Jeavon Leopold 48864e3fa4 Initial addition of Slack Webhook Notifications for Health Check notifications 2017-06-05 10:15:26 +02:00
AndyButland 474dcf0779 Improved layout of scheduled healthcheck result logging 2017-06-05 10:14:47 +02:00
AndyButland 0366fa73c3 Remove requirement for configuring start time for scheduled health checks; if not provided, start with short delay after application start 2017-06-05 10:14:17 +02:00
AndyButland 9b6cad7d82 Fixed health check configuration following namespace refactor 2017-06-05 10:08:57 +02:00
Shannon 3a990d9cf0 Merge remote-tracking branch 'origin/temp-u4-8604-1' into dev-v7.7 2017-06-05 09:50:17 +02:00
Stephan 832ee47564 Fix nested content prevalue cache of all things 2017-06-05 09:28:52 +02:00
leekelleher dc3f96a292 Included a pull-request from NestedContent package
Fixes the prevalue-editor's doctype tabs dropdownlist from reverting to default post-save.

https://github.com/umco/umbraco-nested-content/pull/131
2017-06-05 09:28:52 +02:00
leekelleher 7806246a52 Added NestedContent to "lists" datatype group.
Set the icon to "icon-thumbnail-list".
2017-06-05 09:28:52 +02:00
leekelleher e136780947 Fixed JSLint warnings
Renamed "nestedcontent.filters.js" filename to be singular.
2017-06-05 09:28:52 +02:00
Stephan b9ac5a365a Sanitize editors names 2017-06-05 09:28:52 +02:00
Stephan 942d010264 Retreat Amazing Nested Content Work 2017-06-05 09:28:52 +02:00
Jeavon Leopold 643dab0238 Merge branch 'feature/health-check-scheduler' of https://github.com/AndyButland/Umbraco-CMS into temp-U4-9984 2017-06-05 09:26:39 +02:00
AndyButland 1445ff7a83 Implemented scheduled task for notification on status of health checks 2017-06-05 09:21:35 +02:00
Lars-Erik Aabech b70241e807 Allowing blank documents configurable 2017-06-05 00:49:06 +02:00
Lars-Erik Aabech 10761a2211 Selecting blueprints made configurable 2017-06-05 00:39:16 +02:00
Lars-Erik Aabech f392c32d63 More localization and validation of blueprints 2017-06-05 00:20:02 +02:00
Lars-Erik Aabech 95cfb6c56b More localization of blueprint actions 2017-06-04 23:44:12 +02:00
Shannon d59e3d34f9 fix double submit 2017-06-04 23:42:33 +02:00
Shannon 1a03c7f068 Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/views/content/content.createblueprint.controller.js
#	src/Umbraco.Web.UI.Client/src/views/content/createblueprint.html
2017-06-04 23:40:39 +02:00
Shannon f52e82296f required validation and styling working 2017-06-04 23:35:53 +02:00
Lars-Erik Aabech 16868d7b51 Colors and cancelling 2017-06-04 23:04:10 +02:00
Lars-Erik Aabech 59df08f956 Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-04 22:58:13 +02:00
Shannon 3c9041b00e adds refresh to content type node 2017-06-04 22:57:49 +02:00
Lars-Erik Aabech 09a39c1fe4 Right icon for "blueprint from content" action 2017-06-04 22:57:11 +02:00
Shannon 7377b7614e Renders blueprints underneath their associated document types, removes preview button 2017-06-04 22:52:18 +02:00
Shannon e2137c9a43 Gets updating blueprints working 2017-06-04 22:07:58 +02:00
Shannon f2b9963385 Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints 2017-06-04 21:21:30 +02:00
Shannon f5ad4a35cd blueprint scaffolding working 2017-06-04 21:21:16 +02:00
Lars-Erik Aabech b55aa7c16d Filtering out properties 2017-06-04 21:20:42 +02:00
Lars-Erik Aabech ee577da48e Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-04 21:01:31 +02:00
Lars-Erik Aabech affe3d688b English language elements for blueprints 2017-06-04 21:00:08 +02:00
Shannon addd8946e8 Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints 2017-06-04 20:59:13 +02:00
Shannon d2fe3e7406 editing blueprints now working 2017-06-04 20:58:56 +02:00
Lars-Erik Aabech 6b0ef0e289 Disabling content editor tests to not "break the build" 2017-06-04 18:32:34 +02:00
Lars-Erik Aabech 7c0acff9f8 Naming and correct name in notification 2017-06-04 18:29:10 +02:00
Lars-Erik Aabech b2279a30f7 Can create docs without blueprint 2017-06-04 18:15:31 +02:00
Lars-Erik Aabech 22758c6e12 Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-04 18:03:36 +02:00
Lars-Erik Aabech f8ed2a3db4 Blueprint dialogs done(ish) 2017-06-04 18:03:07 +02:00
Shannon c9f6778e31 Merge remote-tracking branch 'origin/dev-v7' into temp-content-blueprints 2017-06-04 17:57:15 +02:00
Shannon 494a7d54b8 Deleting works, wired up some validation for duplicate names 2017-06-04 17:57:06 +02:00
Lars-Erik Aabech 6dd9fc2780 Create dialog shows available blueprints and passes id to create page. 2017-06-04 17:49:21 +02:00
Shannon b99b9b7a6b adds blueprints dictionary to ContentTypeBasic result 2017-06-04 17:31:31 +02:00
Lars-Erik Aabech c06ac51b48 temp adding stubbed blueprints 2017-06-04 17:18:43 +02:00
Shannon abcd6e69f0 Merge remote-tracking branch 'lars/temp-content-blueprints' into temp-content-blueprints 2017-06-04 17:17:46 +02:00
Lars-Erik Aabech 5fe22a2231 Create blueprint from content integrated & working. 2017-06-04 17:14:12 +02:00
Sebastiaan Janssen 97518c837f Merge remote-tracking branch 'origin/dev-v7' into temp-U4-8634 2017-06-04 16:55:42 +02:00
Sebastiaan Janssen 727250d2ab Removing AccountCreated and AccountUpdated for now, is the responsibility of UserService 2017-06-04 16:55:23 +02:00
Shannon Deminick 03cb5bf9e5 Merge pull request #1979 from lars-erik/temp-content-blueprints
Temp content blueprints
2017-06-04 16:51:54 +02:00
Lars-Erik Aabech 79fa7db631 Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-04 16:44:53 +02:00
Lars-Erik Aabech 4574bf2de2 Reverting inadvertent file changes 2017-06-04 16:37:33 +02:00
Shannon 3351a3e112 Merge remote-tracking branch 'origin/temp-content-blueprints' into temp-content-blueprints 2017-06-04 16:29:53 +02:00
Shannon 584c3e4c19 adds parameters to the content editor directive 2017-06-04 16:27:59 +02:00
Shannon Deminick 479f6a1525 Merge pull request #1977 from lars-erik/temp-content-blueprints
Temp content blueprints
2017-06-04 16:14:29 +02:00
Lars-Erik Aabech 6f55515f11 Merge branch 'temp-content-blueprints' of https://github.com/umbraco/Umbraco-CMS into temp-content-blueprints 2017-06-04 16:07:51 +02:00
Lars-Erik Aabech 9f0639ba24 Create blueprint from content action
In process of adding blueprints to create content dialog
2017-06-04 16:07:11 +02:00
Shannon 028903c306 Creates endpoint to create a blueprint 2017-06-04 16:00:25 +02:00
Shannon adb02c96a7 Gets blueprint tree controller working, makes the content editor a directive :O 2017-06-04 15:54:51 +02:00
Sebastiaan Janssen 66e3a00e56 Raise unlocking and saving events from EditUser.aspx 2017-06-04 15:18:24 +02:00
Shannon f4d0de6665 get services/repos working for blueprints along with tests 2017-06-04 14:43:28 +02:00
Sebastiaan Janssen aebea2da31 Merge remote-tracking branch 'origin/dev-v7' into temp-U4-8634 2017-06-04 14:35:35 +02:00
Sebastiaan Janssen 1634789641 Fix firing of locked out event 2017-06-04 14:33:13 +02:00
Shannon 618c50f9da Ability to add/remove/replace an ISearchableTree 2017-05-31 22:52:16 +02:00
Shannon 106a06be2a Gets templates working 2017-05-31 13:09:26 +02:00
Shannon a70c9226fc Updates lots of trees for searching and gets results grouped 2017-05-31 12:25:05 +02:00
Mads Rasmussen f3763dffe5 prototype user picker 2017-05-30 17:04:41 +02:00
Mads Rasmussen be939b48f9 wire up users pagination 2017-05-30 11:57:41 +02:00
Mads Rasmussen b678eff484 wire up user state badges + create user confirmation 2017-05-30 11:31:43 +02:00
Mads Rasmussen 01ff16d00d add border to sidebar group 2017-05-30 10:12:44 +02:00
Mads Rasmussen a50f1e22c0 add progress bar to user avatar upload 2017-05-30 10:12:16 +02:00
Shannon 3ae16e717c Merge branch 'dev-v7-pluggable-ISearchableTree' of https://github.com/efabioli/Umbraco-CMS into efabioli-dev-v7-pluggable-ISearchableTree
# Conflicts:
#	src/Umbraco.Web/Editors/EntityController.cs
#	src/Umbraco.Web/Models/ContentEditing/EntityBasic.cs
2017-05-30 00:48:41 +02:00
Shannon 06aaa9718f fixes test 2017-05-29 17:25:44 +02:00
Shannon d3eeb45651 ensures the message is added to the email 2017-05-29 15:57:59 +02:00
Shannon 6cd52bbc3c Gets user invite generating the token, sending the email and then verifying the token 2017-05-29 15:55:36 +02:00
Shannon 273c934e26 wires up the invite user to the rest endpoint 2017-05-29 15:13:04 +02:00
Shannon 2087125d95 Fixes an issue with model mappings and group assignments 2017-05-29 14:16:48 +02:00
Shannon 7f27745d27 starting to get the invite email with token working 2017-05-29 09:36:07 +02:00
Shannon f493c254e8 Fixes up the users login date on the user list view, fixes tests 2017-05-26 12:47:31 +10:00
Shannon 362b98509b Updates path check to use all assigned user start nodes that are combined by their groups and directly assigned values 2017-05-26 12:09:06 +10:00
Shannon 4337036358 refactor users and how groups are added to them so we can know dynamically start nodes, etc... fixes tests 2017-05-26 11:17:06 +10:00
Shannon 271c771f1c fixing tests 2017-05-26 09:50:51 +10:00
Mads Rasmussen 7934ea14a3 wire up enable and disable user 2017-05-25 22:09:52 +02:00
Shannon 8aabb3e3d0 wires up custom user avatars 2017-05-26 02:15:37 +10:00
Shannon 528be48437 Adds UsersController.SetAvatar and ClearAvatar 2017-05-26 00:02:32 +10:00
Shannon a8220e0f62 gets user saving working 2017-05-25 12:17:32 +10:00
Mads Rasmussen cb097f11a1 add save user and create user 2017-05-25 00:13:11 +02:00
Mads Rasmussen 911fdf20a4 add watcher to avatar name 2017-05-24 22:53:25 +02:00
Mads Rasmussen 939d128662 fix load indicator on user 2017-05-24 22:43:51 +02:00
Mads Rasmussen b95ba2e9a7 wire up user group picker 2017-05-24 22:36:44 +02:00
Mads Rasmussen e9c917e60b add resource for getUserGroups 2017-05-24 22:35:47 +02:00
Shannon 2cd23cb24f Updates business logic to persist the start nodes for users 2017-05-25 02:46:21 +10:00
Shannon 59872b0e17 fixes ability to create new users with the legacy editor 2017-05-25 02:11:38 +10:00
Shannon 6e9ae485ea Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-05-25 02:03:58 +10:00
Shannon dec9422531 Updated DB and business logic to support multiple starts nodes for a user and for user groups to have start nodes - U4-9915 User Groups will have a start node assigned and Users can have multiple start nodes assigned 2017-05-25 02:03:41 +10:00
Mads Rasmussen 633bd847ea Merge branch 'user-group-permissions' of https://github.com/umbraco/Umbraco-CMS into user-group-permissions 2017-05-24 11:32:55 +02:00
Shannon 38837049f0 adds invite user endpoint with a controller test! 2017-05-24 19:01:01 +10:00
Mads Rasmussen 1a637961b7 bump avatar font size 2017-05-23 20:57:43 +02:00
Mads Rasmussen f792be9495 wire up language selector 2017-05-23 15:31:51 +02:00
Mads Rasmussen 41460d5500 rename from role to group 2017-05-23 11:02:52 +02:00
Mads Rasmussen d56bee8761 Merge branch 'temp-U4-9827' into user-group-permissions
# Conflicts:
#	src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js
#	src/Umbraco.Web.UI.Client/src/less/belle.less
2017-05-23 10:28:59 +02:00
Mads Rasmussen 4c852eab0b fix js error 2017-05-23 10:16:29 +02:00
Shannon 0cca342b83 updates user groups to contain the correct db columns for start nodes, updates mappings, fixes tests. 2017-05-23 15:48:08 +10:00
Shannon 45fa106c42 Adding required user group db columns and models, fixing tests 2017-05-23 15:23:10 +10:00
Shannon 6e9e2b99a4 U4-9944 User table needs to have created/update dates , adds more methods to the user controller for enabling/disabling users 2017-05-23 13:18:29 +10:00
Shannon 1be3f06bc4 Hides the user invite button if there is no email server configured 2017-05-23 12:28:41 +10:00
Shannon 86e4acef86 passes through the user id for the user editor 2017-05-23 12:13:01 +10:00
Mads Rasmussen b3118f742d increase breadcrumb font size 2017-05-22 14:25:57 +02:00
Mads Rasmussen 83d26fd91a add breadcrumb + back button to editor footer 2017-05-22 14:25:29 +02:00
Shannon 16c6fc70bf updates user resource to use the real endpoint 2017-05-22 21:26:46 +10:00
Shannon 517dc3abe3 updates more user properties 2017-05-22 21:23:04 +10:00
Mads Rasmussen 48432179be rename from user role to user group 2017-05-22 12:14:46 +02:00
Mads Rasmussen f3d925b509 wire up getPaged getPagedResults for users 2017-05-22 11:31:54 +02:00
Mads Rasmussen e590b20e75 remove some strokes and borders 2017-05-19 13:12:53 +02:00
Shannon 048112dcea Adds framework for testing our controllers (borrowed from the rest api project) adds a couple easy ones for the user controller 2017-05-19 20:17:50 +10:00
Shannon fce7adcc8e Merge branch 'dev-v7' into user-group-permissions 2017-05-19 13:21:27 +10:00
Shannon fcc71958e3 Merge remote-tracking branch 'origin/dev-v7' into user-group-permissions
# Conflicts:
#	.gitignore
#	build/UmbracoVersion.txt
#	src/SolutionInfo.cs
#	src/Umbraco.Core/Configuration/UmbracoVersion.cs
#	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web/umbraco.presentation/umbraco/users/PermissionEditor.aspx
2017-05-19 09:59:59 +10:00
Shannon bb431c7681 updates ignore 2017-05-19 09:57:53 +10:00
Mads Rasmussen aeabca87d7 init edit role editor 2017-05-18 15:25:05 +02:00
Mads Rasmussen fbed82219d init edit user editor 2017-05-18 15:23:38 +02:00
Mads Rasmussen d57a273c65 Add support for multiple styles on a button component 2017-05-18 13:33:57 +02:00
Mads Rasmussen d90ef2865b don't use bold for badges 2017-05-18 11:33:37 +02:00
Shannon 29177974eb adds the getPagedResults method to the usersResource 2017-05-18 16:38:14 +10:00
Shannon b130ccf9c1 removes userResource and adds the disableUser to the usersResource 2017-05-18 15:53:54 +10:00
Shannon 4c61cac9a8 rename to users controller 2017-05-17 22:58:32 +10:00
Shannon 57bd5178f7 Gets proper paging and filtering working for users 2017-05-17 21:40:17 +10:00
Mads Rasmussen ef51336a7e add text-transform to badge component 2017-05-17 12:12:49 +02:00
Mads Rasmussen d3dd84671f update mocked user object 2017-05-17 12:11:42 +02:00
Mads Rasmussen 5e3e9cce12 add setting for button sizes + allow icon on buttons 2017-05-17 12:10:50 +02:00
Shannon 9bb880f195 Starts getting the user service/repo to do paging filtering nicely 2017-05-17 19:47:16 +10:00
Mads Rasmussen c299edfe5a U4-9901 User role picker should show permission details 2017-05-16 15:08:49 +02:00
Mads Rasmussen 73d7915fb5 fixes: U4-9900 Add support for selecting an editor sub view trough route params 2017-05-16 13:14:29 +02:00
Shannon 225f657154 fixes tests for mappings 2017-05-16 18:18:10 +10:00
Shannon 4f80902ac2 Fixes unit tests - all but one 2017-05-16 17:17:02 +10:00
Shannon 26b8236eea fixes user query relator 2017-05-16 16:09:01 +10:00
Shannon ffd63a9103 fixes merge issues 2017-05-16 15:51:30 +10:00
Shannon bb436426a4 Merge remote-tracking branch 'origin/temp-U4-9776' into temp-U4-8632
# Conflicts:
#	src/Umbraco.Web.UI/config/trees.config
2017-05-16 15:19:45 +10:00
Shannon faa6a229e6 Updates UserGroupRepository to ensure that it persists things int he correct order and inside of a transaction, removes new code that is already obsolete, fixes tests 2017-05-15 20:27:40 +10:00
Mads Rasmussen 0e8b8e3aef set up some simple filtering of actions based on selection 2017-05-11 13:45:18 +02:00
Mads Rasmussen 7cf3f10afb missed two paths 2017-05-11 13:44:35 +02:00
Shannon 9b50d6d251 Gets a few tests fixed 2017-05-11 20:51:31 +10:00
Mads Rasmussen 6a4a84d8aa update files to match new tree path 2017-05-11 10:25:57 +02:00
Mads Rasmussen 89c4f7dffd Merge branch 'temp-U4-9776' of https://github.com/umbraco/Umbraco-CMS into temp-U4-9776 2017-05-11 09:54:34 +02:00
Mads Rasmussen 4e76b61251 rename section 2017-05-11 09:53:43 +02:00
Mads Rasmussen 03cce6e8f6 move badge + add title 2017-05-11 09:53:19 +02:00
Mads Rasmussen 956250004e add go back button to edit user 2017-05-11 09:48:16 +02:00
Mads Rasmussen 536be45bbf add go back button to edit role 2017-05-11 09:47:35 +02:00
Mads Rasmussen e5240575bd add bulk selection to user roles 2017-05-11 09:31:58 +02:00
Shannon 84c7f5046e Fixes the user group queries to be sorted since the relator requires this 2017-05-11 15:15:46 +10:00
Shannon d2d6b6654a Adds models and methods for the UserController 2017-05-11 13:11:41 +10:00
Mads Rasmussen 1dc30214cc remove margin from umb-users 2017-05-10 15:06:06 +02:00
Mads Rasmussen a84159a1ba setup scaffolding for edit user and user role 2017-05-10 15:05:34 +02:00
Mads Rasmussen 7bfe736e5e restructure so we can use subviews for users and user roles 2017-05-10 13:42:04 +02:00
Shannon 1ea06930f4 fixes some tests 2017-05-10 21:34:35 +10:00
Shannon 512f3237f0 larger refactor so we don't need to worry about 'loading' a users groups, it will all just be done, updated queries to fetch a user, it's groups and it's sections all at once, it might be a little heavy but we'll see. Adds/removes a few other methods that didn't seem right and uses group aliases for most things, adds Datbase unique indexes for group aliases and names (need to fix tests though) 2017-05-10 21:00:30 +10:00
Shannon f594006b95 fixes db table order 2017-05-10 18:07:39 +10:00
Shannon fc58c4f546 bumps version updates a few methods 2017-05-10 18:06:46 +10:00
Mads Rasmussen 645e28eefe add meta data to cards + set up create user form 2017-05-09 20:52:20 +02:00
Mads Rasmussen 71fdd1df85 remove red from clear button 2017-05-09 20:49:16 +02:00
Mads Rasmussen aa99657dea add table layout 2017-05-09 13:00:02 +02:00
Mads Rasmussen dfd240bd25 set up user group picker 2017-05-08 15:13:28 +02:00
Mads Rasmussen ff68f18a26 fix icon alignment in buttons 2017-05-08 14:37:50 +02:00
Mads Rasmussen b0b0f0056e remove save function 2017-05-08 14:20:20 +02:00
Mads Rasmussen f044c4dde1 add functionality for bulk actions 2017-05-08 14:16:02 +02:00
Mads Rasmussen 205a83dd3c add checkmark component 2017-05-08 14:13:51 +02:00
Mads Rasmussen 350bd75310 add filters, layout selector and invite/create user buttons 2017-05-08 10:56:21 +02:00
Mads Rasmussen b92eb9dcdd make users groups an array 2017-05-08 10:53:39 +02:00
Mads Rasmussen c0c1e2bc06 prototype user invite 2017-05-08 10:52:45 +02:00
Mads Rasmussen 631a9f92ea fix merge bug + add ignore list 2017-05-05 14:19:37 +02:00
Mads Rasmussen 229a15be4f add nonodes to gulp 2017-05-05 13:10:40 +02:00
Mads Rasmussen 28d7a4a6dc Merge branch 'dev-v7.6' into temp-gulp-spike
# Conflicts:
#	src/Umbraco.Web.UI.Client/bower.json
2017-05-05 13:01:24 +02:00
Mads Rasmussen 21f003e705 clean up ace builds 2017-05-05 12:26:04 +02:00
Mads Rasmussen 971f92301f add pagination to users 2017-05-04 11:45:58 +02:00
Mads Rasmussen e7137e9cce first steps on user dashboard 2017-05-04 11:34:09 +02:00
Mads Rasmussen 7001e791f7 add umb-badge component 2017-05-04 11:29:36 +02:00
Mads Rasmussen e327a971c2 update umb-avatar component include name and colors 2017-05-04 11:25:20 +02:00
Mads Rasmussen c8813c8584 add id to user groups data 2017-05-04 11:23:38 +02:00
Mads Rasmussen 0bbef8cf94 add temp resource for hardcoded data 2017-05-04 11:22:04 +02:00
Shannon 8f69efe331 It builds! 2017-05-04 19:16:52 +10:00
Shannon 24e2547656 Merge branch 'u4-8632b' of https://github.com/AndyButland/Umbraco-CMS into AndyButland-u4-8632b
# Conflicts:
#	src/Umbraco.Core/Models/Rdbms/UserGroup2NodePermissionDto.cs
#	src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs
#	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
#	src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs
#	src/Umbraco.Core/Persistence/RepositoryFactory.cs
#	src/Umbraco.Core/Services/ContentService.cs
#	src/Umbraco.Core/Services/SectionService.cs
#	src/Umbraco.Core/Services/UserService.cs
#	src/Umbraco.Core/Umbraco.Core.csproj
#	src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
#	src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs
#	src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
#	src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs
#	src/Umbraco.Tests/Services/ContentServiceTests.cs
#	src/Umbraco.Tests/Umbraco.Tests.csproj
#	src/Umbraco.Web.UI/config/trees.config
#	src/Umbraco.Web.UI/umbraco/users/PermissionEditor.aspx
#	src/Umbraco.Web/Cache/CacheRefresherEventHandler.cs
#	src/Umbraco.Web/Umbraco.Web.csproj
#	src/Umbraco.Web/umbraco.presentation/umbraco/users/EditUser.aspx.cs
2017-05-04 18:29:43 +10:00
Mads Rasmussen 53ef2e356a add new temp users tree 2017-05-03 09:30:29 +02:00
Sebastiaan Janssen 0d80bf6a84 Alphabetize the events list and wire up the events correctly (instead of sending everything through OnAuthResetAccessFailedCount) 2017-04-30 12:26:33 +02:00
Sebastiaan Janssen e88f5c8fe2 Better way to get current user's IP address 2017-04-30 10:59:00 +02:00
Sebastiaan Janssen 7cb1a497e5 Merge remote-tracking branch 'origin/dev-v7.6' into temp-seb-authevents
# Conflicts:
#	src/Umbraco.Core/Security/BackOfficeSignInManager.cs
2017-04-30 10:17:07 +02:00
Sebastiaan Janssen b72c8ef953 Get userId more easily - also changed the default to -1 just in case we can't determine the Id (at least then changes won't be "blamed" on user 0 2017-04-30 10:15:53 +02:00
Sebastiaan Janssen 04a09bd4d6 Updates comment 2017-04-29 23:19:35 +02:00
Sebastiaan Janssen 311fcfe328 Adds AccountCreated event 2017-04-29 23:17:50 +02:00
Sebastiaan Janssen 33d09b14be Refactor GetBackofficeUserManager calls 2017-04-29 22:21:42 +02:00
Sebastiaan Janssen cdab89062e Make sure to only trigger events on MembershipHelper when we're dealing with backoffice users 2017-04-29 22:10:43 +02:00
Sebastiaan Janssen 38571f2cdd Wire up LoginSuccess and LoginRequiresVerification 2017-04-29 13:43:51 +02:00
Sebastiaan Janssen fcd90aa702 Get IP address from OWIN 2017-04-29 12:51:09 +02:00
Sebastiaan Janssen ae17172126 Attempt to raise events from parts of code that don't hit the BackOfficeUserManager directly 2017-04-29 12:49:56 +02:00
Sebastiaan Janssen ecca480334 Get backoffice identity from cookie instead of grabbing it from database 2017-04-29 12:25:35 +02:00
Sebastiaan Janssen 095a7c0aa7 First attempt at hooking up some events for auditing 2017-04-28 13:20:42 +02:00
AndyButland 11b97c5291 Removed unnecessary null check 2017-04-20 09:45:48 +01:00
Jeavon ece73578c8 Tweaks to RelatedLinks - moved Content property from RelatedLinkBase to RelatedLink and populated Content property for non UDI RelatedLink editor 2017-04-04 12:08:10 +01:00
leekelleher 169c6b6372 Fixes U4-9678 - XPath Syntax Parser slowdown
http://issues.umbraco.org/issue/U4-9678

Swaps out the base XPath from `"descendant::*[@id={0}]"` to `"id({0})"` - making use of the content-cache's XML DTD ID index.

This will perform better on larger content-trees.
2017-03-25 12:50:53 +00:00
Marc Goodson 8ab2f7c257 add language translations keys for showOrdinals and hideOrdinals 2017-03-24 10:21:01 +00:00
Marc Goodson 51215f11af toggle the show ordinals label button to hide, when in show ordinal mode 2017-03-24 10:20:31 +00:00
Marc Goodson 3df103eae2 In reorder mode, present an additional toggle button, to show the individual property editor sort ordinals, in input boxes, enabling their order to be manually overridden (for curating property order on tabs, when properties come from two different compositions) see U4-6738 2017-03-22 22:35:53 +00:00
Bjarne Fyrstenborg be1172d604 Add icon for font select 2017-03-04 18:20:03 +01:00
Bjarne Fyrstenborg 7cf8cd3518 Fix font size caret 2017-03-04 18:19:44 +01:00
Per Ploug 1757e7b4c8 Update gulpfile and buildbelle file
Should now have the right paths for running it from VS
2017-01-16 14:53:07 +01:00
Per Ploug a68eb91c14 update buildbell.bat file to use gulp 2017-01-10 14:58:46 +01:00
Per Ploug 7c9476ca41 Sets the correct root dir for compiling files 2017-01-09 15:27:05 +01:00
Per Ploug 5cee5a27c9 Wraps tasks in a merge-stream
This ensures proper timing and feedback of tasks
2017-01-09 15:26:05 +01:00
Per Ploug 1e34570a1f consistent naming for canvasdesigner js file 2017-01-07 01:28:16 +01:00
Per Ploug 7e930330e2 fixes karma testing config - now runs with "npm test" command instead 2017-01-07 01:27:59 +01:00
Per Ploug cc3355b1f9 fixes issues with bootstrap2 navbar and less2 syntax 2017-01-07 01:27:26 +01:00
Per Ploug ee9deacf92 ignore lib-bower temp folder 2017-01-07 01:26:47 +01:00
Per Ploug 4e9a8623f0 syntax issue in eslintrc 2017-01-07 01:26:35 +01:00
Per Ploug 904265cdf5 replaces gruntfile with gulpfile
Meaner, faster, better
2017-01-07 01:26:13 +01:00
Per Ploug 4a191f0711 Rebuild bower.json to support bower-installer
removes most of the custom bower lib installing we had in gruntfile
2017-01-07 01:25:43 +01:00
Per Ploug 6be9a25d99 new package.json to support gulp 2017-01-07 01:24:32 +01:00
AndyButland f266c78915 Fixed issues with user creation and deletion 2016-12-05 22:26:09 +01:00
bjarnef 89cbe53b63 Fix z-index of focal point 2016-11-22 23:00:25 +01:00
Shane Marsden 8664d3cd35 forgot to add file to commit 2016-11-03 17:03:16 +00:00
Shane Marsden 2363cdd17b Painstakingly went through every image file one by one, looking for references, checking if file looked v6ish, checking for constructed filenames etc 2016-11-03 17:00:36 +00:00
Stefano Chiodino 4cab1c89b4 U4-7721 Specify margin 0 for buttons
On Safari input elemnts have 1px margin which use to make customise and
install buttons not aligned
2016-11-03 16:05:38 +00:00
Stefano Chiodino 88fd5a9623 Remove background-color on preview that was interfering with the website
style
2016-11-03 11:40:20 +00:00
AndyButland d7aba9ce4a Fixed test failure reported on CI (3) 2016-10-30 16:10:00 +01:00
AndyButland ece61a45d8 Fixed test failure reported on CI (2) 2016-10-30 14:16:01 +01:00
AndyButland 8bb3685e5d Fixed test failure reported on CI 2016-10-30 13:53:43 +01:00
AndyButland 6560f38cb0 Fixed caching issues on editing node permissions 2016-10-30 11:58:36 +01:00
AndyButland f316b3f694 Fixed display of node permissions when editing for a group 2016-10-29 23:57:31 +02:00
AndyButland 311401d119 Ensured groups always loaded along with users 2016-10-29 23:57:04 +02:00
AndyButland 93c400a005 Fixed and added unit tests for permission checks 2016-10-29 23:10:00 +02:00
AndyButland 92010adce6 Permission checks on nodes for users and groups 2016-10-29 08:28:57 +02:00
AndyButland b1800305b8 Removed user types and migrated them to groups. Returned to compiling state. 2016-10-28 09:20:52 +02:00
AndyButland 14a0e3cca7 Migration for moving user types to user groups 2016-10-27 20:31:50 +02:00
AndyButland ebbbf11903 Further removal of references to user to app and node tables 2016-10-27 20:29:21 +02:00
AndyButland 2d9aeb3aa1 Removed relationship between users and applications and got back to a compiling state.
Set up editing screens for group/node permissions.
2016-10-27 18:11:46 +02:00
AndyButland cbb36a900a Management of user groups with assignment of users.
Migration for creation of user group tables and data amends for moving from permissions on users to those on groups.
2016-10-26 22:38:54 +02:00
Lars-Erik Aabech 361ef2a475 Opening up GetHttpContextFactory for extending (actually in prev commit, but messed up) 2016-09-13 23:57:31 +02:00
Lars-Erik Aabech d382fcc919 Issue with isHosted in TypeFinder when unit testing. 2016-09-13 23:56:15 +02:00
Lars-Erik Aabech aac8451627 Removing HttpContext dependency from GridValueConverter. Adding configuration for IOHelper when testing to remove usage of HttpContext. 2016-09-11 21:36:10 +02:00
Jesper Hauge c96c09f42f Merge branch 'dev-v7' of https://github.com/umbraco/Umbraco-CMS into dev-v7 2016-06-20 21:55:25 +02:00
Jesper Hauge 50f8f18503 Fixes U4-8616 2016-06-20 21:53:40 +02:00
bjarnef 9001cd8a6f Sort data types array by name A-Z 2016-04-14 23:50:43 +02:00
Iurie Marchitan a58bf507ed Add error callback handler for unpublish event in content.edit.controller. For some cases user may not be allowed to unpublish a content, and he need to get a notification message that explains the reason. 2016-04-05 10:33:36 +02:00
Heather Floyd 1279fd234f Checking for possible Null Ref Exception in Textstring.cshtml grid renderer 2015-09-11 19:43:41 -04:00
2400 changed files with 48391 additions and 92252 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ root=true
[*]
end_of_line = lf
indent_style = space
indent_size = 2
indent_size = 4
trim_trailing_whitespace = true
[*.{cs,cshtml,csx,vb,vbx,vbhtml,fs,fsx,txt,ps1,sql}]
+6 -11
View File
@@ -46,13 +46,7 @@ src/Umbraco.Web.UI/Web.*.config.transformed
umbraco/presentation/umbraco/plugins/uComponents/uComponentsInstaller.ascx
umbraco/presentation/packages/uComponents/MultiNodePicker/CustomTreeService.asmx
_BuildOutput/*
*.ncrunchsolution
build/UmbracoCms.AllBinaries*zip
build/UmbracoCms.WebPI*zip
build/UmbracoCms*zip
build/UmbracoExamine.PDF*zip
build/*.nupkg
src/Umbraco.Tests/config/applications.config
src/Umbraco.Tests/config/trees.config
src/Umbraco.Web.UI/web.config
@@ -68,9 +62,9 @@ src/packages/repositories.config
src/Umbraco.Web.UI/[Ww]eb.config
*.transformed
webpihash.txt
node_modules
lib-bower
src/Umbraco.Web.UI/[Uu]mbraco/[Ll]ib/*
src/Umbraco.Web.UI/[Uu]mbraco/[Jj]s/umbraco.*
@@ -95,7 +89,6 @@ src/Umbraco.Web.UI/[Uu]mbraco/[Aa]ssets/*
src/Umbraco.Web.UI.Client/[Bb]uild/*
src/Umbraco.Web.UI.Client/[Bb]uild/[Bb]elle/
src/Umbraco.Web.UI/[Uu]ser[Cc]ontrols/
build/_BuildOutput/
src/Umbraco.Web.UI.Client/src/[Ll]ess/*.css
tools/NDepend/
@@ -130,7 +123,6 @@ src/*.boltdata/
/src/Umbraco.Web.UI/Umbraco/Js/canvasdesigner.config.js
/src/Umbraco.Web.UI/Umbraco/Js/canvasdesigner.front.js
src/umbraco.sln.ide/*
build/UmbracoCms.*/
src/.vs/
src/Umbraco.Web.UI/umbraco/js/install.loader.js
src/Umbraco.Tests/media
@@ -140,8 +132,11 @@ apidocs/api/*
build/docs.zip
build/ui-docs.zip
build/csharp-docs.zip
build/msbuild.log
.vs/
src/packages/
build/tools/
src/PrecompiledWeb/*
build.out/
build.tmp/
build/Modules/*/temp/
+149
View File
@@ -0,0 +1,149 @@
Umbraco Cms Build
--
----
# Quick!
To build Umbraco, fire PowerShell and move to Umbraco's repository root (the directory that contains `src`, `build`, `README.md`...). There, trigger the build with the following command:
build\build.ps1
By default, this builds the current version. It is possible to specify a different version as a parameter to the build script:
build\build.ps1 7.6.44
Valid version strings are defined in the `Set-UmbracoVersion` documentation below.
## Notes
Git might have issues dealing with long file paths during build. You may want/need to enable `core.longpaths` support (see [this page](https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for details).
# Build
The Umbraco Build solution relies on a PowerShell module. The module needs to be imported into PowerShell. From within Umbraco's repository root:
build\build.ps1 -ModuleOnly
Or the abbreviated form:
build\build.ps1 -mo
Once the module has been imported, a set of commands are added to PowerShell.
## Get-UmbracoBuildEnv
Gets the Umbraco build environment ie NuGet, Semver, Visual Studio, etc. Downloads things that can be downloaded such as NuGet. Examples:
$uenv = Get-UmbracoBuildEnv
Write-Host $uenv.SolutionRoot
&$uenv.NuGet help
The object exposes the following properties:
* `SolutionRoot`: the absolute path to the solution root
* `VisualStudio`: a Visual Studio object (see below)
* `NuGet`: the absolute path to the NuGet executable
* `Zip`: the absolute path to the 7Zip executable
* `VsWhere`: the absolute path to the VsWhere executable
* `NodePath`: the absolute path to the Node install
* `NpmPath`: the absolute path to the Npm install
The Visual Studio object is `null` when Visual Studio has not been detected (eg on VSTS). When not null, the object exposes the following properties:
* `Path`: Visual Studio installation path (eg some place under `Program Files`)
* `Major`: Visual Studio major version (eg `15` for VS 2017)
* `Minor`: Visual Studio minor version
* `MsBUild`: the absolute path to the MsBuild executable
## Get-UmbracoVersion
Gets an object representing the current Umbraco version. Example:
$v = Get-UmbracoVersion
Write-Host $v.Semver
The object exposes the following properties:
* `Semver`: the semver object representing the version
* `Release`: the main part of the version (eg `7.6.33`)
* `Comment`: the pre release part of the version (eg `alpha02`)
* `Build`: the build number part of the version (eg `1234`)
## Set-UmbracoVersion
Modifies Umbraco files with the new version.
>This entirely replaces the legacy `UmbracoVersion.txt` file.
The version must be a valid semver version. It can include a *pre release* part (eg `alpha02`) and/or a *build number* (eg `1234`). Examples:
Set-UmbracoVersion 7.6.33
Set-UmbracoVersion 7.6.33-alpha02
Set-UmbracoVersion 7.6.33+1234
Set-UmbracoVersion 7.6.33-beta05+5678
Note that `Set-UmbracoVersion` enforces a slightly more restrictive naming scheme than what semver would tolerate. The pre release part can only be composed of a-z and 0-9, therefore `alpha033` is considered valid but not `alpha.033` nor `alpha033-preview` nor `RC2` (would need to be lowercased `rc2`).
>It is considered best to add trailing zeroes to pre releases, else NuGet gets the order of versions wrong. So if you plan to have more than 10, but no more that 100 alpha versions, number the versions `alpha00`, `alpha01`, etc.
## Build-Umbraco
Builds Umbraco. Temporary files are generated in `build.tmp` while the actual artifacts (zip files, NuGet packages...) are produced in `build.out`. Example:
Build-Umbraco
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
### web.config
Building Umbraco requires a clean `web.config` file in the `Umbraco.Web.UI` project. If a `web.config` file already exists, the `pre-build` task (see below) will save it as `web.config.temp-build` and replace it with a clean copy of `web.Template.config`. The original file is replaced once it is safe to do so, by the `pre-packages` task.
## Build-UmbracoDocs
Builds umbraco documentation. Temporary files are generated in `build.tmp` while the actual artifacts (docs...) are produced in `build.out`. Example:
Build-UmbracoDocs
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
## Verify-NuGet
Verifies that projects all require the same version of their dependencies, and that NuSpec files require versions that are consistent with projects. Example:
Verify-NuGet
# VSTS
Continuous integration, nightly builds and release builds run on VSTS.
VSTS uses the `Build-Umbraco` command several times, each time passing a different *target* parameter. The supported targets are:
* `pre-build`: prepares the build
* `compile-belle`: compiles Belle
* `compile-umbraco`: compiles Umbraco
* `pre-tests`: prepares the tests
* `compile-tests`: compiles the tests
* `pre-packages`: prepares the packages
* `pkg-zip`: creates the zip files
* `pre-nuget`: prepares NuGet packages
* `pkg-nuget`: creates NuGet packages
All these targets are executed when `Build-Umbraco` is invoked without a parameter (or with the `all` parameter). On VSTS, compilations (of Umbraco and tests) are performed by dedicated VSTS tasks. Similarly, creating the NuGet packages is also performed by dedicated VSTS tasks.
Finally, the produced artifacts are published in two containers that can be downloaded from VSTS: `zips` contains the zip files while `nuget` contains the NuGet packages.
>During a VSTS build, some environment `UMBRACO_*` variables are exported by the `pre-build` target and can be reused in other targets *and* in VSTS tasks. The `UMBRACO_TMP` environment variable is used in `Umbraco.Tests` to disable some tests that have issues with VSTS at the moment.
# Notes
*This part needs to be cleaned up*
Nightlies should use some sort of build number.
We should increment versions as soon as a version is released. Ie, as soon as `7.6.33` is released, we should `Set-UmbracoVersion 7.6.34-alpha` and push.
NuGet / NuSpec consistency checks are performed in tests. We should move it so it is done as part of the PowerShell script even before we try to compile and run the tests.
There are still a few commands in `build` (to build docs, install Git or cleanup the install) that will need to be migrated to PowerShell.
/eof
+2 -4
View File
@@ -1,4 +1,4 @@
[![Build status](https://ci.appveyor.com/api/projects/status/ikpgqxiw9v8opltv/branch/dev-v7?svg=true)](https://ci.appveyor.com/project/Umbraco/umbraco-cms-hs8dx/branch/dev-v7)
[![Build status](https://ci.appveyor.com/api/projects/status/6by6harxtxt0ocdx/branch/dev-v7?svg=true)](https://ci.appveyor.com/project/Umbraco/umbraco-cms-b2cri/branch/dev-v7)
Umbraco CMS
===========
@@ -12,9 +12,7 @@ Umbraco is a free open source Content Management System built on the ASP.NET pla
## 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 vs` in `src\Umbraco.Web.UI.Client`.
If you're interested in making changes to Belle without running Visual Studio make sure to read the [Belle ReadMe file](src/Umbraco.Web.UI.Client/README.md).
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 `gulp dev` in `src\Umbraco.Web.UI.Client`.
Note that you can always [download a nightly build](http://nightly.umbraco.org/?container=umbraco-750) so you don't have to build the code yourself.
+4
View File
@@ -1,5 +1,9 @@
version: '{build}'
shallow_clone: true
init:
- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
build_script:
- cmd: >-
SET SLN=%CD%
+15
View File
@@ -0,0 +1,15 @@
@ECHO OFF
powershell .\build\build.ps1
IF ERRORLEVEL 1 (
GOTO :error
) ELSE (
GOTO :EOF
)
:error
ECHO.
ECHO Can not run build\build.ps1.
ECHO If this is due to a SecurityError then make sure to run the following command from an administrator command prompt:
ECHO.
ECHO powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
-207
View File
@@ -1,207 +0,0 @@
@ECHO OFF
:: UMBRACO BUILD FILE
:: ensure we have UmbracoVersion.txt
IF NOT EXIST UmbracoVersion.txt (
ECHO UmbracoVersion.txt is missing!
GOTO error
)
REM Get the version and comment from UmbracoVersion.txt lines 2 and 3
SET RELEASE=
SET COMMENT=
FOR /F "skip=1 delims=" %%i IN (UmbracoVersion.txt) DO IF NOT DEFINED RELEASE SET RELEASE=%%i
FOR /F "skip=2 delims=" %%i IN (UmbracoVersion.txt) DO IF NOT DEFINED COMMENT SET COMMENT=%%i
REM process args
SET INTEGRATION=0
SET nuGetFolder=%CD%\..\src\packages
SET SKIPNUGET=0
:processArgs
:: grab the first parameter as a whole eg "/action:start"
:: end if no more parameter
SET SWITCHPARSE=%1
IF [%SWITCHPARSE%] == [] goto endProcessArgs
:: get switch and value
SET SWITCH=
SET VALUE=
FOR /F "tokens=1,* delims=: " %%a IN ("%SWITCHPARSE%") DO SET SWITCH=%%a& SET VALUE=%%b
:: route arg
IF '%SWITCH%'=='/release' GOTO argRelease
IF '%SWITCH%'=='-release' GOTO argRelease
IF '%SWITCH%'=='/comment' GOTO argComment
IF '%SWITCH%'=='-comment' GOTO argComment
IF '%SWITCH%'=='/integration' GOTO argIntegration
IF '%SWITCH%'=='-integration' GOTO argIntegration
IF '%SWITCH%'=='/nugetfolder' GOTO argNugetFolder
IF '%SWITCH%'=='-nugetfolder' GOTO argNugetFolder
IF '%SWITCH%'=='/skipnuget' GOTO argSkipNuget
IF '%SWITCH%'=='-skipnuget' GOTO argSkipNuget
ECHO "Invalid switch %SWITCH%"
GOTO error
:: handle each arg
:argRelease
set RELEASE=%VALUE%
SHIFT
goto processArgs
:argComment
SET COMMENT=%VALUE%
SHIFT
GOTO processArgs
:argIntegration
SET INTEGRATION=1
SHIFT
GOTO processArgs
:argNugetFolder
SET nuGetFolder=%VALUE%
SHIFT
GOTO processArgs
:argSkipNuget
SET SKIPNUGET=1
SHIFT
GOTO processArgs
:endProcessArgs
REM run
SET VERSION=%RELEASE%
IF [%COMMENT%] EQU [] (SET VERSION=%RELEASE%) ELSE (SET VERSION=%RELEASE%-%COMMENT%)
ECHO ################################################################
ECHO Building Umbraco %VERSION%
ECHO ################################################################
SET MSBUILDPATH=C:\Program Files (x86)\MSBuild\14.0\Bin
SET MSBUILD="%MSBUILDPATH%\MsBuild.exe"
SET PATH="%MSBUILDPATH%";%PATH%
ReplaceIISExpressPortNumber.exe ..\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj %RELEASE%
ECHO.
ECHO Removing the belle build folder and bower_components folder to make sure everything is clean as a whistle
RD ..\src\Umbraco.Web.UI.Client\build /Q /S
RD ..\src\Umbraco.Web.UI.Client\bower_components /Q /S
ECHO.
ECHO Removing existing built files to make sure everything is clean as a whistle
RMDIR /Q /S _BuildOutput
DEL /F /Q UmbracoCms.*.zip 2>NUL
DEL /F /Q UmbracoExamine.*.zip 2>NUL
DEL /F /Q UmbracoCms.*.nupkg 2>NUL
DEL /F /Q webpihash.txt 2>NUL
ECHO.
ECHO Making sure Git is in the path so that the build can succeed
CALL InstallGit.cmd
REM Adding the default Git path so that if it's installed it can actually be found
REM This is necessary because SETLOCAL is on in InstallGit.cmd so that one might find Git,
REM but the path setting is lost due to SETLOCAL
SET PATH="C:\Program Files (x86)\Git\cmd";"C:\Program Files\Git\cmd";%PATH%
SET toolsFolder=%CD%\tools\
IF NOT EXIST "%toolsFolder%" (
MD tools
)
SET nuGetExecutable=%CD%\tools\nuget.exe
IF NOT EXIST "%nuGetExecutable%" (
ECHO Getting NuGet so we can fetch some tools
ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable%
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')"
)
:: We need vswhere.exe for VS2017+
IF NOT EXIST "%toolsFolder%vswhere.exe" (
ECHO vswhere not found - fetching now
"%nuGetExecutable%" install vswhere -OutputDirectory tools -Verbosity quiet
)
FOR /f "delims=" %%A in ('dir "%toolsFolder%vswhere.*" /b') DO SET "vswhereExePath=%toolsFolder%%%A\"
MOVE "%vswhereExePath%tools\vswhere.exe" "%toolsFolder%vswhere.exe"
ECHO.
ECHO Making sure we have a web.config
IF NOT EXIST "%CD%\..\src\Umbraco.Web.UI\web.config" COPY "%CD%\..\src\Umbraco.Web.UI\web.Template.config" "%CD%\..\src\Umbraco.Web.UI\web.config"
for /f "usebackq tokens=1* delims=: " %%i in (`"%CD%\tools\vswhere.exe" -latest -requires Microsoft.Component.MSBuild`) do (
if /i "%%i"=="installationPath" set InstallDir=%%j
)
SET VSWherePath="%InstallDir%\MSBuild"
ECHO.
ECHO Visual Studio is installed in: %InstallDir%
SET MSBUILDPATH=C:\Program Files (x86)\MSBuild\14.0\Bin
SET MSBUILD="%MSBUILDPATH%\MsBuild.exe"
ECHO.
ECHO Reporting NuGet version
"%nuGetExecutable%" help | findstr "^NuGet Version:"
ECHO.
ECHO Restoring NuGet packages
ECHO Into %nuGetFolder%
"%nuGetExecutable%" restore "%CD%\..\src\umbraco.sln" -Verbosity Quiet -NonInteractive -PackagesDirectory "%nuGetFolder%"
IF ERRORLEVEL 1 GOTO :error
ECHO.
ECHO.
ECHO Performing MSBuild and producing Umbraco binaries zip files
ECHO This takes a few minutes and logging is set to report warnings
ECHO and errors only so it might seems like nothing is happening for a while.
ECHO You can check the msbuild.log file for progress.
ECHO.
%MSBUILD% "Build.proj" /p:BUILD_RELEASE=%RELEASE% /p:BUILD_COMMENT=%COMMENT% /p:NugetPackagesDirectory="%nuGetFolder%" /p:VSWherePath=%VSWherePath% /consoleloggerparameters:Summary;ErrorsOnly /fileLogger
IF ERRORLEVEL 1 GOTO error
ECHO.
ECHO Setting node_modules folder to hidden to prevent VS13 from crashing on it while loading the websites project
attrib +h ..\src\Umbraco.Web.UI.Client\node_modules
IF %SKIPNUGET% EQU 1 GOTO success
ECHO.
ECHO Adding Web.config transform files to the NuGet package
REN .\_BuildOutput\WebApp\Views\Web.config Web.config.transform
REN .\_BuildOutput\WebApp\Xslt\Web.config Web.config.transform
ECHO.
ECHO Packing the NuGet release files
..\src\.nuget\NuGet.exe Pack NuSpecs\UmbracoCms.Core.nuspec -Version %VERSION% -Symbols -Verbosity quiet
..\src\.nuget\NuGet.exe Pack NuSpecs\UmbracoCms.nuspec -Version %VERSION% -Verbosity quiet
IF ERRORLEVEL 1 GOTO error
:success
ECHO.
ECHO No errors were detected!
ECHO There may still be some in the output, which you would need to investigate.
ECHO Warnings are usually normal.
ECHO.
ECHO.
GOTO :EOF
:error
ECHO.
ECHO Errors were detected!
ECHO.
REM don't pause if continuous integration else the build server waits forever
REM before cancelling the build (and, there is noone to read the output anyways)
IF %INTEGRATION% NEQ 1 PAUSE
-345
View File
@@ -1,345 +0,0 @@
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
****************************************************
INCLUDES
*****************************************************
-->
<PropertyGroup>
<MSBuildCommunityTasksPath>..\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<UmbracoMSBuildTasksPath>..\UmbracoMSBuildTasks</UmbracoMSBuildTasksPath>
</PropertyGroup>
<Import Project="..\tools\UmbracoMSBuildTasks\Umbraco.MSBuild.Tasks.Targets" />
<Import Project="..\tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<UsingTask TaskName="GenerateHash" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<OutputFile ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System.IO" />
<Using Namespace="System.Linq" />
<Using Namespace="System.Security.Cryptography" />
<Code Type="Fragment" Language="cs">
<![CDATA[
using (var ms = new MemoryStream())
{
foreach (var item in InputFiles)
{
string path = item.ItemSpec;
using (FileStream stream = new FileStream(path, FileMode.Open))
{
using (var cryptoProvider = new SHA1CryptoServiceProvider())
{
var fileHash = cryptoProvider.ComputeHash(stream);
using (TextWriter w = new StreamWriter(OutputFile, false))
{
w.WriteLine(string.Join("", fileHash.Select(b => b.ToString("x2"))));
}
}
}
}
}
]]>
</Code>
</Task>
</UsingTask>
<!--
****************************************************
VARIABLES
*****************************************************
-->
<!-- NB: BUILD_NUMBER is passed in by the build server -->
<PropertyGroup Condition="'$(BUILD_NUMBER)'!=''">
<DECIMAL_BUILD_NUMBER>.$(BUILD_NUMBER)</DECIMAL_BUILD_NUMBER>
</PropertyGroup>
<PropertyGroup Condition="'$(BUILD_RELEASE)'!=''">
<DECIMAL_BUILD_NUMBER>.$(BUILD_RELEASE)</DECIMAL_BUILD_NUMBER>
</PropertyGroup>
<PropertyGroup Condition="'$(BUILD_RELEASE)'!='' AND '$(BUILD_COMMENT)'!=''">
<DECIMAL_BUILD_NUMBER>.$(BUILD_RELEASE)-$(BUILD_COMMENT)</DECIMAL_BUILD_NUMBER>
</PropertyGroup>
<PropertyGroup Condition="'$(BUILD_RELEASE)'!='' AND '$(BUILD_NIGHTLY)'!=''">
<DECIMAL_BUILD_NUMBER>.$(BUILD_RELEASE)-$(BUILD_NIGHTLY)</DECIMAL_BUILD_NUMBER>
</PropertyGroup>
<PropertyGroup Condition="'$(BUILD_RELEASE)'!='' AND '$(BUILD_COMMENT)'!='' AND '$(BUILD_NIGHTLY)'!=''">
<DECIMAL_BUILD_NUMBER>.$(BUILD_RELEASE)-$(BUILD_COMMENT)-$(BUILD_NIGHTLY)</DECIMAL_BUILD_NUMBER>
</PropertyGroup>
<PropertyGroup>
<BuildConfiguration>Release</BuildConfiguration>
<BuildFolder>_BuildOutput\</BuildFolder>
<BuildZipFileName>UmbracoCms$(DECIMAL_BUILD_NUMBER).zip</BuildZipFileName>
<BuildZipFileNameBin>UmbracoCms.AllBinaries$(DECIMAL_BUILD_NUMBER).zip</BuildZipFileNameBin>
<BuildZipFileNameWebPi>UmbracoCms.WebPI$(DECIMAL_BUILD_NUMBER).zip</BuildZipFileNameWebPi>
<IncludeSymbols>False</IncludeSymbols>
<BuildFolderRelativeToProjects>..\..\build\$(BuildFolder)</BuildFolderRelativeToProjects>
<BuildFolderAbsolutePath>$(MSBuildProjectDirectory)\$(BuildFolder)</BuildFolderAbsolutePath>
<SolutionBinFolder>$(BuildFolder)bin\</SolutionBinFolder>
<WebAppFolder>$(BuildFolder)WebApp\</WebAppFolder>
<WebPiFolder>$(BuildFolder)WebPi\</WebPiFolder>
<ConfigsFolder>$(BuildFolder)Configs\</ConfigsFolder>
<SolutionBinFolderRelativeToProjects>$(BuildFolderRelativeToProjects)bin\</SolutionBinFolderRelativeToProjects>
<SolutionBinFolderAbsolutePath>$(BuildFolderAbsolutePath)bin\</SolutionBinFolderAbsolutePath>
<WebAppFolderRelativeToProjects>$(BuildFolderRelativeToProjects)WebApp\</WebAppFolderRelativeToProjects>
<WebAppFolderAbsolutePath>$(BuildFolderAbsolutePath)WebApp\</WebAppFolderAbsolutePath>
<WebPiFolderRelativeToProjects>$(BuildFolderRelativeToProjects)WebPi\</WebPiFolderRelativeToProjects>
<WebPiFolderAbsolutePath>$(BuildFolderAbsolutePath)WebPi\</WebPiFolderAbsolutePath>
</PropertyGroup>
<ItemGroup>
<SystemFolders Include="$(WebAppFolder)App_Data" />
<SystemFolders Include="$(WebAppFolder)Media" />
<SystemFolders Include="$(WebAppFolder)Views" />
</ItemGroup>
<!--
****************************************************
TARGETS
*****************************************************
-->
<Target Name="Build" DependsOnTargets="GenerateWebPiHash">
<Message Text="Build finished" />
</Target>
<Target Name="GenerateWebPiHash" DependsOnTargets="ZipWebPiApp">
<ItemGroup>
<WebPiFile Include="$(BuildZipFileNameWebPi)" />
</ItemGroup>
<Message Text="Calculating hash for $(BuildZipFileNameWebPi)" />
<GenerateHash InputFiles="@(WebPiFile)" OutputFile="webpihash.txt" />
</Target>
<Target Name="CleanUp" DependsOnTargets="ZipWebPiApp">
<Message Text="Deleting $(BuildFolder)" Importance="high" />
<RemoveDir Directories="$(BuildFolder)" />
<Message Text="Finished deleting $(BuildFolder)" Importance="high" />
</Target>
<Target Name="ZipWebPiApp" DependsOnTargets="ZipWebApp" >
<!-- Clean folders -->
<RemoveDir Directories="$(WebPiFolder)" />
<MakeDir Directories="$(WebPiFolder)" />
<MakeDir Directories="$(WebPiFolder)umbraco" />
<!-- Copy fresh built umbraco files -->
<Exec Command="xcopy %22$(WebAppFolderAbsolutePath)*%22 %22$(WebPiFolderAbsolutePath)umbraco%22 /S /E /Y /I" />
<!-- Copy Web Pi template files -->
<ItemGroup>
<WebPiFiles Include="..\src\WebPi\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(WebPiFiles)"
DestinationFiles="@(WebPiFiles->'$(WebPiFolder)%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- Zip the files -->
<Exec Command="..\tools\7zip\7za.exe a -r %22$(BuildZipFileNameWebPi)%22 %22$(WebPiFolderAbsolutePath)*%22 -x!dotLess.Core.dll -x![Content_Types].xml >NUL" />
</Target>
<Target Name="ZipWebApp" DependsOnTargets="CreateSystemFolders" >
<Message Text="Starting to zip to $(buildDate)-$(BuildZipFileName)" Importance="high" />
<Exec Command="..\tools\7zip\7za.exe a -r %22$(BuildZipFileNameBin)%22 %22$(SolutionBinFolderAbsolutePath)*%22 -x!dotLess.Core.dll >NUL" />
<Exec Command="..\tools\7zip\7za.exe a -r %22$(BuildZipFileName)%22 %22$(WebAppFolderAbsolutePath)*%22 -x!dotLess.Core.dll -x![Content_Types].xml >NUL" />
<Message Text="Finished zipping to build\$(BuildFolder)\$(buildDate)-$(BuildZipFileName)" Importance="high" />
</Target>
<Target Name="CreateSystemFolders" DependsOnTargets="CopyBelleBuild" Inputs="@(SystemFolders)" Outputs="%(Identity).Dummy">
<MakeDir Directories="@(SystemFolders)" />
</Target>
<Target Name="CopyBelleBuild" DependsOnTargets="CopyLibraries" >
<ItemGroup>
<BelleFiles Include="..\src\Umbraco.Web.UI.Client\build\belle\**\*.*" Exclude="..\src\Umbraco.Web.UI.Client\build\belle\index.html" />
</ItemGroup>
<Copy SourceFiles="@(BelleFiles)"
DestinationFiles="@(BelleFiles->'$(WebAppFolder)umbraco\%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
</Target>
<Target Name="CopyLibraries" DependsOnTargets="OffsetTimestamps" >
<!-- Copy SQL CE -->
<ItemGroup>
<SQLCE4Files
Include="..\src\packages\SqlServerCE.4.0.0.1\**\*.*"
Exclude="..\src\packages\SqlServerCE.4.0.0.1\lib\**\*;..\src\packages\SqlServerCE.4.0.0.1\**\*.nu*"
/>
</ItemGroup>
<Copy SourceFiles="@(SQLCE4Files)"
DestinationFiles="@(SQLCE4Files->'$(SolutionBinFolder)%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
<Copy SourceFiles="@(SQLCE4Files)"
DestinationFiles="@(SQLCE4Files->'$(WebAppFolder)bin\%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
</Target>
<!-- Offset the modified timestamps on all umbraco dlls, as WebResources break if date is in the future, which, due to timezone offsets can happen. -->
<Target Name="OffsetTimestamps" DependsOnTargets="CopyTransformedWebConfig">
<CreateItem Include="$(BuildFolder)**\umbraco.*.dll">
<Output TaskParameter="Include" ItemName="FilesToOffsetTimestamp" />
</CreateItem>
<Message Text="Starting to offset timestamps" Importance="high" />
<Umbraco.MSBuild.Tasks.TimestampOffset Files="@(FilesToOffsetTimestamp)" Offset="-11" />
<Message Text="Finished offsetting timestamps" Importance="high" />
</Target>
<!-- Copy the transformed web.config file to the root -->
<Target Name="CopyTransformedWebConfig" DependsOnTargets="CopyTransformedConfig">
<ItemGroup>
<WebConfigFile Include="..\src\Umbraco.Web.UI\web.$(BuildConfiguration).Config.transformed" />
</ItemGroup>
<Copy SourceFiles="@(WebConfigFile)"
DestinationFiles="$(WebAppFolder)Web.config"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
</Target>
<!-- Copy the config files and rename them to *.config.transform -->
<Target Name="CopyTransformedConfig" DependsOnTargets="CopyXmlDocumentation">
<ItemGroup>
<ConfigFiles Include="$(WebAppFolder)config\*.config;$(WebAppFolder)config\*.js" />
<CustomLanguageFiles Include="$(WebAppFolder)config\lang\*.xml" />
<WebConfigTransformFile Include="$(WebAppFolder)Web.config" />
</ItemGroup>
<Copy SourceFiles="@(ConfigFiles)"
DestinationFiles="@(ConfigFiles->'$(ConfigsFolder)\%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
<Copy SourceFiles="@(CustomLanguageFiles)"
DestinationFiles="@(CustomLanguageFiles->'$(ConfigsFolder)Lang\%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
<Copy SourceFiles="@(WebConfigTransformFile)"
DestinationFiles="$(ConfigsFolder)Web.config.transform"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
</Target>
<!-- Copy the xml documentation to the bin folder -->
<Target Name="CopyXmlDocumentation" DependsOnTargets="CleanupPresentation">
<ItemGroup>
<XmlDocumentationFiles Include="$(SolutionBinFolder)*.xml" />
</ItemGroup>
<Copy SourceFiles="@(XmlDocumentationFiles)"
DestinationFiles="@(XmlDocumentationFiles->'$(WebAppFolder)bin\%(RecursiveDir)%(Filename)%(Extension)')"
OverwriteReadOnlyFiles="true"
SkipUnchangedFiles="false" />
<Message Text="CopyXmlDocumentation" />
</Target>
<!-- Unlike 2010, the VS2012 build targets file doesn't clean up the umbraco.presentation dir, do it manually -->
<Target Name="CleanupPresentation" DependsOnTargets="CompileProjects">
<ItemGroup>
<PresentationFolderToDelete Include="$(WebAppFolder)umbraco.presentation" />
</ItemGroup>
<RemoveDir Directories="@(PresentationFolderToDelete)" />
</Target>
<Target Name="CompileProjects" DependsOnTargets="SetVersionNumber">
<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);Verbosity=minimal" Targets="Clean;Rebuild;" BuildInParallel="False" ToolsVersion="4.0" UnloadProjectsOnCompletion="False" />
<!-- DONE -->
<Message Text="Finished compiling projects" Importance="high" />
</Target>
<Target Name="SetVersionNumber" Condition="'$(BUILD_RELEASE)'!=''">
<PropertyGroup>
<NewVersion>$(BUILD_RELEASE)</NewVersion>
<NewVersion Condition="'$(BUILD_COMMENT)'!=''">$(BUILD_RELEASE)-$(BUILD_COMMENT)</NewVersion>
<NewVersion Condition="'$(BUILD_NIGHTLY)'!=''">$(BUILD_RELEASE)-$(BUILD_NIGHTLY)</NewVersion>
<NewVersion Condition="'$(BUILD_COMMENT)'!='' And '$(BUILD_NIGHTLY)'!=''">$(BUILD_RELEASE)-$(BUILD_COMMENT)-$(BUILD_NIGHTLY)</NewVersion>
</PropertyGroup>
<!-- Match & replace 3 and 4 digit version numbers and -beta and +nightly (if they're there) -->
<FileUpdate
Files="..\src\Umbraco.Core\Configuration\UmbracoVersion.cs"
Regex="(\d+)\.(\d+)\.(\d+)(.(\d+))?"
ReplacementText="$(BUILD_RELEASE)"/>
<FileUpdate Files="..\src\Umbraco.Core\Configuration\UmbracoVersion.cs"
Regex="CurrentComment { get { return &quot;(.+)?&quot;"
ReplacementText="CurrentComment { get { return &quot;$(BUILD_COMMENT)&quot;"/>
<FileUpdate Files="..\src\Umbraco.Core\Configuration\UmbracoVersion.cs"
Condition="'$(BUILD_NIGHTLY)'!=''"
Regex="CurrentComment { get { return &quot;(.+)?&quot;"
ReplacementText="CurrentComment { get { return &quot;$(BUILD_NIGHTLY)&quot;"/>
<FileUpdate Files="..\src\Umbraco.Core\Configuration\UmbracoVersion.cs"
Condition="'$(BUILD_COMMENT)'!='' AND '$(BUILD_NIGHTLY)'!=''"
Regex="CurrentComment { get { return &quot;(.+)?&quot;"
ReplacementText="CurrentComment { get { return &quot;$(BUILD_COMMENT)-$(BUILD_NIGHTLY)&quot;"/>
<!--This updates the AssemblyFileVersion for the solution to the umbraco version-->
<FileUpdate
Files="..\src\SolutionInfo.cs"
Regex="AssemblyFileVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyFileVersion(&quot;$(BUILD_RELEASE)&quot;)"/>
<!--This updates the AssemblyInformationalVersion for the solution to the umbraco version and comment-->
<FileUpdate
Condition="'$(BUILD_COMMENT)'!=''"
Files="..\src\SolutionInfo.cs"
Regex="AssemblyInformationalVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyInformationalVersion(&quot;$(BUILD_RELEASE)-$(BUILD_COMMENT)&quot;)"/>
<FileUpdate
Condition="'$(BUILD_COMMENT)'==''"
Files="..\src\SolutionInfo.cs"
Regex="AssemblyInformationalVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyInformationalVersion(&quot;$(BUILD_RELEASE)&quot;)"/>
<FileUpdate
Condition="'$(BUILD_NIGHTLY)'!=''"
Files="..\src\SolutionInfo.cs"
Regex="AssemblyInformationalVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyInformationalVersion(&quot;$(BUILD_RELEASE)-$(BUILD_NIGHTLY)&quot;)"/>
<FileUpdate
Condition="'$(BUILD_COMMENT)'!='' AND '$(BUILD_NIGHTLY)'!=''"
Files="..\src\SolutionInfo.cs"
Regex="AssemblyInformationalVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyInformationalVersion(&quot;$(BUILD_RELEASE)-$(BUILD_COMMENT)-$(BUILD_NIGHTLY)&quot;)"/>
<FileUpdate
Condition="'$(BUILD_COMMENT)'=='' AND '$(BUILD_NIGHTLY)'==''"
Files="..\src\SolutionInfo.cs"
Regex="AssemblyInformationalVersion\(&quot;(.+)?&quot;\)"
ReplacementText="AssemblyInformationalVersion(&quot;$(BUILD_RELEASE)&quot;)"/>
<!--This updates the copyright year-->
<FileUpdate
Files="..\src\SolutionInfo.cs"
Regex="AssemblyCopyright\(&quot;Copyright © Umbraco (\d{4})&quot;\)"
ReplacementText="AssemblyCopyright(&quot;Copyright © Umbraco $([System.DateTime]::Now.ToString(`yyyy`))&quot;)"/>
<XmlPoke XmlInputPath=".\NuSpecs\build\UmbracoCms.props"
Namespaces="&lt;Namespace Prefix='x' Uri='http://schemas.microsoft.com/developer/msbuild/2003' /&gt;"
Query="//x:UmbracoVersion"
Value="$(NewVersion)" />
</Target>
</Project>
-68
View File
@@ -1,68 +0,0 @@
@ECHO OFF
SETLOCAL
:: SETLOCAL is on, so changes to the path not persist to the actual user's path
SET toolsFolder=%CD%\tools\
ECHO Current folder: %CD%
SET nodeFileName=node-v6.9.1-win-x86.7z
SET nodeExtractFolder=%toolsFolder%node.js.691
SET nuGetExecutable=%CD%\tools\nuget.exe
IF NOT EXIST "%nuGetExecutable%" (
ECHO Downloading https://dist.nuget.org/win-x86-commandline/latest/nuget.exe to %nuGetExecutable%
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', '%nuGetExecutable%')"
)
:: We need 7za.exe for BuildBelle.bat
IF NOT EXIST "%toolsFolder%7za.exe" (
ECHO 7zip not found - fetching now
"%nuGetExecutable%" install 7-Zip.CommandLine -OutputDirectory tools -Verbosity quiet
)
:: Put 7za.exe and vswhere.exe in a predictable path (not version specific)
FOR /f "delims=" %%A in ('dir "%toolsFolder%7-Zip.CommandLine.*" /b') DO SET "sevenZipExePath=%toolsFolder%%%A\"
MOVE "%sevenZipExePath%tools\7za.exe" "%toolsFolder%7za.exe"
IF NOT EXIST "%nodeExtractFolder%" (
ECHO Downloading http://nodejs.org/dist/v6.9.1/%nodeFileName% to %toolsFolder%%nodeFileName%
powershell -Command "(New-Object Net.WebClient).DownloadFile('http://nodejs.org/dist/v6.9.1/%nodeFileName%', '%toolsFolder%%nodeFileName%')"
ECHO Extracting %nodeFileName% to %nodeExtractFolder%
"%toolsFolder%\7za.exe" x "%toolsFolder%\%nodeFileName%" -o"%nodeExtractFolder%" -aos > nul
)
FOR /f "delims=" %%A in ('dir "%nodeExtractFolder%\node*" /b') DO SET "nodePath=%nodeExtractFolder%\%%A"
SET drive=%CD:~0,2%
SET nuGetFolder=%drive%\packages\
FOR /f "delims=" %%A in ('dir "%nuGetFolder%npm.*" /b') DO SET "npmPath=%nuGetFolder%%%A\"
IF [%npmPath%] == [] GOTO :installnpm
IF NOT [%npmPath%] == [] GOTO :build
:installnpm
ECHO Downloading npm
ECHO Configured packages folder: %nuGetFolder%
ECHO Installing Npm NuGet Package
"%nuGetExecutable%" install Npm -OutputDirectory %nuGetFolder% -Verbosity detailed
REM Ensures that we look for the just downloaded NPM, not whatever the user has installed on their machine
FOR /f "delims=" %%A in ('dir %nuGetFolder%npm.* /b') DO SET "npmPath=%nuGetFolder%%%A\"
GOTO :build
:build
ECHO Adding Npm and Node to path
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
PATH="%npmPath%";"%nodePath%";%PATH%
SET buildFolder=%CD%
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 cache clean --quiet
call npm install --quiet
call npm install -g grunt-cli --quiet
call npm install -g bower --quiet
call grunt build --buildversion=%release%
ECHO Move back to the build folder
CD "%buildFolder%"
-20
View File
@@ -1,20 +0,0 @@
@ECHO OFF
SETLOCAL
SET release=%1
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% -Verbosity quiet
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 Adding Npm and Node to path
REM SETLOCAL is on, so changes to the path not persist to the actual user's path
PATH=%npmPath%;%nodePath%;%PATH%
Powershell.exe -ExecutionPolicy Unrestricted -File .\BuildDocs.ps1
-114
View File
@@ -1,114 +0,0 @@
$PSScriptFilePath = (Get-Item $MyInvocation.MyCommand.Path);
$RepoRoot = (get-item $PSScriptFilePath).Directory.Parent.FullName;
$SolutionRoot = Join-Path -Path $RepoRoot "src";
$ToolsRoot = Join-Path -Path $RepoRoot "tools";
$DocFx = Join-Path -Path $ToolsRoot "docfx\docfx.exe"
$DocFxFolder = (Join-Path -Path $ToolsRoot "docfx")
$DocFxJson = Join-Path -Path $RepoRoot "apidocs\docfx.json"
$7Zip = Join-Path -Path $ToolsRoot "7zip\7za.exe"
$DocFxSiteOutput = Join-Path -Path $RepoRoot "apidocs\_site\*.*"
$NgDocsSiteOutput = Join-Path -Path $RepoRoot "src\Umbraco.Web.UI.Client\docs\api\*.*"
$ProgFiles86 = [Environment]::GetEnvironmentVariable("ProgramFiles(x86)");
$MSBuild = "$ProgFiles86\MSBuild\14.0\Bin\MSBuild.exe"
################ Do the UI docs
"Changing to Umbraco.Web.UI.Client folder"
cd ..
cd src\Umbraco.Web.UI.Client
Write-Host $(Get-Location)
"Creating build folder so MSBuild doesn't run the whole grunt build"
if (-Not (Test-Path "build")) {
md "build"
}
"Installing node"
# Check if Install-Product exists, should only exist on the build server
if (Get-Command Install-Product -errorAction SilentlyContinue)
{
Install-Product node ''
}
"Installing node modules"
& npm install
"Installing grunt"
& npm install -g grunt-cli
"Moving back to build folder"
cd ..
cd ..
cd build
Write-Host $(Get-Location)
& grunt --gruntfile ../src/umbraco.web.ui.client/gruntfile.js docs
# change baseUrl
$BaseUrl = "https://our.umbraco.org/apidocs/ui/"
$IndexPath = "../src/umbraco.web.ui.client/docs/api/index.html"
(Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
# zip it
& $7Zip a -tzip ui-docs.zip $NgDocsSiteOutput -r
################ Do the c# docs
# Build the solution in debug mode
$SolutionPath = Join-Path -Path $SolutionRoot -ChildPath "umbraco.sln"
# Go get nuget.exe if we don't hae it
$NuGet = "$ToolsRoot\nuget.exe"
$FileExists = Test-Path $NuGet
If ($FileExists -eq $False) {
Write-Host "Retrieving nuget.exe..."
$SourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
Invoke-WebRequest $SourceNugetExe -OutFile $NuGet
}
#restore nuget packages
Write-Host "Restoring nuget packages..."
& $NuGet restore $SolutionPath
& $MSBuild "$SolutionPath" /p:Configuration=Debug /maxcpucount /t:Clean
if (-not $?)
{
throw "The MSBuild process returned an error code."
}
& $MSBuild "$SolutionPath" /p:Configuration=Debug /maxcpucount
if (-not $?)
{
throw "The MSBuild process returned an error code."
}
# Go get docfx if we don't hae it
$FileExists = Test-Path $DocFx
If ($FileExists -eq $False) {
If(!(Test-Path $DocFxFolder))
{
New-Item $DocFxFolder -type directory
}
$DocFxZip = Join-Path -Path $ToolsRoot "docfx\docfx.zip"
$DocFxSource = "https://github.com/dotnet/docfx/releases/download/v1.9.4/docfx.zip"
Invoke-WebRequest $DocFxSource -OutFile $DocFxZip
#unzip it
& $7Zip e $DocFxZip "-o$DocFxFolder"
}
#clear site
If(Test-Path(Join-Path -Path $RepoRoot "apidocs\_site"))
{
Remove-Item $DocFxSiteOutput -recurse
}
# run it!
& $DocFx metadata $DocFxJson
& $DocFx build $DocFxJson
# zip it
& $7Zip a -tzip csharp-docs.zip $DocFxSiteOutput -r
@@ -0,0 +1,111 @@
#
function Build-UmbracoDocs
{
$uenv = Get-UmbracoBuildEnv
$src = "$($uenv.SolutionRoot)\src"
$out = "$($uenv.SolutionRoot)\build.out"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$buildTemp = "$PSScriptRoot\temp"
$cache = 2
Prepare-Build -keep $uenv
################ Do the UI docs
# get a temp clean node env (will restore)
Sandbox-Node $uenv
Write-Host "Executing gulp docs"
push-location "$($uenv.SolutionRoot)\src\Umbraco.Web.UI.Client"
write "node version is:" > $tmp\belle-docs.log
&node -v >> $tmp\belle-docs.log 2>&1
write "npm version is:" >> $tmp\belle-docs.log 2>&1
&npm -v >> $tmp\belle-docs.log 2>&1
write "executing npm install" >> $tmp\belle-docs.log 2>&1
&npm install >> $tmp\belle-docs.log 2>&1
write "executing bower install" >> $tmp\belle-docs.log 2>&1
&npm install -g bower >> $tmp\belle-docs.log 2>&1
write "installing gulp" >> $tmp\belle-docs.log 2>&1
&npm install -g gulp >> $tmp\belle-docs.log 2>&1
write "installing gulp-cli" >> $tmp\belle-docs.log 2>&1
&npm install -g gulp-cli --quiet >> $tmp\belle-docs.log 2>&1
write "building docs using gulp" >> $tmp\belle-docs.log 2>&1
&gulp docs >> $tmp\belle-docs.log 2>&1
pop-location
Write-Host "Completed gulp docs build"
# fixme - should we filter the log to find errors?
#get-content .\build.tmp\belle-docs.log | %{ if ($_ -match "build") { write $_}}
# change baseUrl
$baseUrl = "https://our.umbraco.org/apidocs/ui/"
$indexPath = "$src/Umbraco.Web.UI.Client/docs/api/index.html"
(Get-Content $indexPath).Replace("location.href.replace(rUrl, indexFile)", "'$baseUrl'") `
| Set-Content $indexPath
# restore
Restore-Node
# zip
&$uenv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*" `
> $null
################ Do the c# docs
Write-Host "Build C# documentation"
# Build the solution in debug mode
# FIXME no only a simple compilation should be enough!
# FIXME we MUST handle msbuild & co error codes!
# FIXME deal with weird things in gitconfig?
#Build-Umbraco -Configuration Debug
Restore-NuGet $uenv
Compile-Umbraco $uenv "Debug" # FIXME different log file!
Restore-WebConfig "$src\Umbraco.Web.UI"
# ensure we have docfx
Get-DocFx $uenv $buildTemp
# clear
$docFxOutput = "$($uenv.SolutionRoot)\apidocs\_site"
if (test-path($docFxOutput))
{
Remove-Directory $docFxOutput
}
# run
$docFxJson = "$($uenv.SolutionRoot)\apidocs\docfx.json"
push-location "$($uenv.SolutionRoot)\build" # silly docfx.json wants this
Write-Host "Run DocFx metadata"
Write-Host "Logging to $tmp\docfx.metadata.log"
&$uenv.DocFx metadata $docFxJson > "$tmp\docfx.metadata.log"
Write-Host "Run DocFx build"
Write-Host "Logging to $tmp\docfx.build.log"
&$uenv.DocFx build $docFxJson > "$tmp\docfx.build.log"
pop-location
# zip
&$uenv.Zip a -tzip -r "$out\csharp-docs.zip" "$docFxOutput\*.*" `
> $null
}
function Get-DocFx($uenv, $buildTemp)
{
$docFx = "$buildTemp\docfx"
if (-not (test-path $docFx))
{
Write-Host "Download DocFx..."
$source = "https://github.com/dotnet/docfx/releases/download/v2.19.2/docfx.zip"
Invoke-WebRequest $source -OutFile "$buildTemp\docfx.zip"
&$uenv.Zip x "$buildTemp\docfx.zip" -o"$buildTemp\docfx" -aos > $nul
Remove-File "$buildTemp\docfx.zip"
}
$uenv | add-member -memberType NoteProperty -name DocFx -value "$docFx\docfx.exe"
}
@@ -0,0 +1,181 @@
#
# Get-UmbracoBuildEnv
# Gets the Umbraco build environment
# Downloads tools if necessary
#
function Get-UmbracoBuildEnv
{
# store tools in the module's directory
# and cache them for two days
$path = "$PSScriptRoot\temp"
$cache = 2
if (-not (test-path $path))
{
mkdir $path > $null
}
# ensure we have NuGet
$nuget = "$path\nuget.exe"
$source = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
if ((test-path $nuget) -and ((ls $nuget).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $nuget
}
if (-not (test-path $nuget))
{
Write-Host "Download NuGet..."
Invoke-WebRequest $source -OutFile $nuget
}
# ensure we have 7-Zip
$sevenZip = "$path\7za.exe"
if ((test-path $sevenZip) -and ((ls $sevenZip).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $sevenZip
}
if (-not (test-path $sevenZip))
{
Write-Host "Download 7-Zip..."
&$nuget install 7-Zip.CommandLine -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\7-Zip.CommandLine.*" | sort -property Name -descending | select -first 1
$file = ls -path "$dir" -name 7za.exe -recurse
$file = ls -path "$dir" -name 7za.exe -recurse | select -first 1 #A select is because there is tools\7za.exe & tools\x64\7za.exe
mv "$dir\$file" $sevenZip
Remove-Directory $dir
}
# ensure we have vswhere
$vswhere = "$path\vswhere.exe"
if ((test-path $vswhere) -and ((ls $vswhere).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $vswhere
}
if (-not (test-path $vswhere))
{
Write-Host "Download VsWhere..."
&$nuget install vswhere -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\vswhere.*" | sort -property Name -descending | select -first 1
$file = ls -path "$dir" -name vswhere.exe -recurse
mv "$dir\$file" $vswhere
Remove-Directory $dir
}
# ensure we have semver
$semver = "$path\Semver.dll"
if ((test-path $semver) -and ((ls $semver).CreationTime -lt [DateTime]::Now.AddDays(-$cache)))
{
Remove-File $semver
}
if (-not (test-path $semver))
{
Write-Host "Download Semver..."
&$nuget install semver -OutputDirectory $path -Verbosity quiet
$dir = ls "$path\semver.*" | sort -property Name -descending | select -first 1
$file = "$dir\lib\net452\Semver.dll"
if (-not (test-path $file))
{
Write-Error "Failed to file $file"
return
}
mv "$file" $semver
Remove-Directory $dir
}
try
{
[Reflection.Assembly]::LoadFile($semver) > $null
}
catch
{
Write-Error -Exception $_.Exception -Message "Failed to load $semver"
break
}
# ensure we have node
$node = "$path\node-v6.9.1-win-x86"
$source = "http://nodejs.org/dist/v6.9.1/node-v6.9.1-win-x86.7z"
if (-not (test-path $node))
{
Write-Host "Download Node..."
Invoke-WebRequest $source -OutFile "$path\node-v6.9.1-win-x86.7z"
&$sevenZip x "$path\node-v6.9.1-win-x86.7z" -o"$path" -aos > $nul
Remove-File "$path\node-v6.9.1-win-x86.7z"
}
# note: why? node already brings everything we need!
## ensure we have npm
#$npm = "$path\npm.*"
#$getNpm = $true
#if (test-path $npm)
#{
# $getNpm = $false
# $tmpNpm = ls "$path\npm.*" | sort -property Name -descending | select -first 1
# if ($tmpNpm.CreationTime -lt [DateTime]::Now.AddDays(-$cache))
# {
# $getNpm = $true
# }
# else
# {
# $npm = $tmpNpm.ToString()
# }
#}
#if ($getNpm)
#{
# Write-Host "Download Npm..."
# &$nuget install npm -OutputDirectory $path -Verbosity quiet
# $npm = ls "$path\npm.*" | sort -property Name -descending | select -first 1
# $npm.CreationTime = [DateTime]::Now
# $npm = $npm.ToString()
#}
# find visual studio
# will not work on VSO but VSO does not need it
$vsPath = ""
$vsVer = ""
$msBuild = $null
&$vswhere | foreach {
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
}
if ($vsPath -ne "")
{
$vsVerParts = $vsVer.Split('.')
$vsMajor = [int]::Parse($vsVerParts[0])
$vsMinor = [int]::Parse($vsVerParts[1])
if ($vsMajor -eq 15) {
$msBuild = "$vsPath\MSBuild\$vsMajor.0\Bin"
}
elseif ($vsMajor -eq 14) {
$msBuild = "c:\Program Files (x86)\MSBuild\$vsMajor\Bin"
}
else
{
$msBuild = $null
}
}
$vs = $null
if ($msBuild)
{
$vs = new-object -typeName PsObject
$vs | add-member -memberType NoteProperty -name Path -value $vsPath
$vs | add-member -memberType NoteProperty -name Major -value $vsMajor
$vs | add-member -memberType NoteProperty -name Minor -value $vsMinor
$vs | add-member -memberType NoteProperty -name MsBuild -value "$msBuild\MsBuild.exe"
}
$solutionRoot = Get-FullPath "$PSScriptRoot\..\..\.."
$uenv = new-object -typeName PsObject
$uenv | add-member -memberType NoteProperty -name SolutionRoot -value $solutionRoot
$uenv | add-member -memberType NoteProperty -name VisualStudio -value $vs
$uenv | add-member -memberType NoteProperty -name NuGet -value $nuget
$uenv | add-member -memberType NoteProperty -name Zip -value $sevenZip
$uenv | add-member -memberType NoteProperty -name VsWhere -value $vswhere
$uenv | add-member -memberType NoteProperty -name Semver -value $semver
$uenv | add-member -memberType NoteProperty -name NodePath -value $node
#$uenv | add-member -memberType NoteProperty -name NpmPath -value $npm
return $uenv
}
@@ -0,0 +1,26 @@
#
# Get-UmbracoVersion
# Gets the Umbraco version
#
function Get-UmbracoVersion
{
$uenv = Get-UmbracoBuildEnv
# parse SolutionInfo and retrieve the version string
$filepath = "$($uenv.SolutionRoot)\src\SolutionInfo.cs"
$text = [System.IO.File]::ReadAllText($filepath)
$match = [System.Text.RegularExpressions.Regex]::Matches($text, "AssemblyInformationalVersion\(`"(.+)?`"\)")
$version = $match.Groups[1]
# semver-parse the version string
$semver = [SemVer.SemVersion]::Parse($version)
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
$versions = new-object -typeName PsObject
$versions | add-member -memberType NoteProperty -name Semver -value $semver
$versions | add-member -memberType NoteProperty -name Release -value $release
$versions | add-member -memberType NoteProperty -name Comment -value $semver.PreRelease
$versions | add-member -memberType NoteProperty -name Build -value $semver.Build
return $versions
}
@@ -0,0 +1,30 @@
# finds msbuild
function Get-VisualStudio($vswhere)
{
$vsPath = ""
$vsVer = ""
&$vswhere | foreach {
if ($_.StartsWith("installationPath:")) { $vsPath = $_.SubString("installationPath:".Length).Trim() }
if ($_.StartsWith("installationVersion:")) { $vsVer = $_.SubString("installationVersion:".Length).Trim() }
}
if ($vsPath -eq "") { return $null }
$vsVerParts = $vsVer.Split('.')
$vsMajor = [int]::Parse($vsVerParts[0])
$vsMinor = [int]::Parse($vsVerParts[1])
if ($vsMajor -eq 15) {
$msBuild = "$vsPath\MSBuild\$vsMajor.$vsMinor\Bin"
}
elseif ($vsMajor -eq 14) {
$msBuild = "c:\Program Files (x86)\MSBuild\$vsMajor\Bin"
}
else { return $null }
$msBuild = "$msBuild\MsBuild.exe"
$vs = new-object -typeName PsObject
$vs | add-member -memberType NoteProperty -name Path -value $vsPath
$vs | add-member -memberType NoteProperty -name Major -value $vsMajor
$vs | add-member -memberType NoteProperty -name Minor -value $vsMinor
$vs | add-member -memberType NoteProperty -name MsBuild -value $msBuild
return $vs
}
@@ -0,0 +1,30 @@
#
# Set-UmbracoContinuousVersion
# Sets the Umbraco version for continuous integration
#
# -Version <version>
# where <version> is a Semver valid version
# eg 1.2.3, 1.2.3-alpha, 1.2.3-alpha+456
#
# -BuildNumber <buildNumber>
# where <buildNumber> is a string coming from the build server
# eg 34, 126, 1
#
function Set-UmbracoContinuousVersion
{
param (
[Parameter(Mandatory=$true)]
[string]
$version,
[Parameter(Mandatory=$true)]
[string]
$buildNumber
)
Write-Host "Version is currently set to $version"
$umbracoVersion = "$($version.Trim())-alpha$($buildNumber)"
Write-Host "Setting Umbraco Version to $umbracoVersion"
Set-UmbracoVersion $umbracoVersion
}
@@ -0,0 +1,117 @@
#
# Set-UmbracoVersion
# Sets the Umbraco version
#
# -Version <version>
# where <version> is a Semver valid version
# eg 1.2.3, 1.2.3-alpha, 1.2.3-alpha+456
#
function Set-UmbracoVersion
{
param (
[Parameter(Mandatory=$true)]
[string]
$version
)
$uenv = Get-UmbracoBuildEnv
try
{
[Reflection.Assembly]::LoadFile($uenv.Semver) > $null
}
catch
{
Write-Error "Failed to load $uenv.Semver"
break
}
# validate input
$ok = [Regex]::Match($version, "^[0-9]+\.[0-9]+\.[0-9]+(\-[a-z0-9]+)?(\+[0-9]+)?$")
if (-not $ok.Success)
{
Write-Error "Invalid version $version"
break
}
# parse input
try
{
$semver = [SemVer.SemVersion]::Parse($version)
}
catch
{
Write-Error "Invalid version $version"
break
}
#
$release = "" + $semver.Major + "." + $semver.Minor + "." + $semver.Patch
# edit files and set the proper versions and dates
Write-Host "Update UmbracoVersion.cs"
Replace-FileText "$($uenv.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs" `
"(\d+)\.(\d+)\.(\d+)(.(\d+))?" `
"$release"
Replace-FileText "$($uenv.SolutionRoot)\src\Umbraco.Core\Configuration\UmbracoVersion.cs" `
"CurrentComment { get { return `"(.+)`"" `
"CurrentComment { get { return `"$($semver.PreRelease)`""
Write-Host "Update SolutionInfo.cs"
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyFileVersion\(`"(.+)?`"\)" `
"AssemblyFileVersion(`"$release`")"
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyInformationalVersion\(`"(.+)?`"\)" `
"AssemblyInformationalVersion(`"$semver`")"
$year = [System.DateTime]::Now.ToString("yyyy")
Replace-FileText "$($uenv.SolutionRoot)\src\SolutionInfo.cs" `
"AssemblyCopyright\(`"Copyright © Umbraco (\d{4})`"\)" `
"AssemblyCopyright(`"Copyright © Umbraco $year`")"
# edit csproj and set IIS Express port number
# this is a raw copy of ReplaceIISExpressPortNumber.exe
# it probably can be achieved in a much nicer way - l8tr
$source = @"
using System;
using System.IO;
using System.Xml;
using System.Globalization;
namespace Umbraco
{
public static class PortUpdater
{
public static void Update(string path, string release)
{
XmlDocument xmlDocument = new XmlDocument();
string fullPath = Path.GetFullPath(path);
xmlDocument.Load(fullPath);
int result = 1;
int.TryParse(release.Replace(`".`", `"`"), out result);
while (result < 1024)
result *= 10;
XmlNode xmlNode1 = xmlDocument.GetElementsByTagName(`"IISUrl`").Item(0);
if (xmlNode1 != null)
xmlNode1.InnerText = `"http://localhost:`" + (object) result;
XmlNode xmlNode2 = xmlDocument.GetElementsByTagName(`"DevelopmentServerPort`").Item(0);
if (xmlNode2 != null)
xmlNode2.InnerText = result.ToString((IFormatProvider) CultureInfo.InvariantCulture);
xmlDocument.Save(fullPath);
}
}
}
"@
$assem = (
"System.Xml",
"System.IO",
"System.Globalization"
)
Write-Host "Update Umbraco.Web.UI.csproj"
add-type -referencedAssemblies $assem -typeDefinition $source -language CSharp
$csproj = "$($uenv.SolutionRoot)\src\Umbraco.Web.UI\Umbraco.Web.UI.csproj"
[Umbraco.PortUpdater]::Update($csproj, $release)
return $semver
}
@@ -0,0 +1,615 @@
# Umbraco.Build.psm1
#
# $env:PSModulePath = "$pwd\build\Modules\;$env:PSModulePath"
# Import-Module Umbraco.Build -Force -DisableNameChecking
#
# PowerShell Modules:
# https://msdn.microsoft.com/en-us/library/dd878324%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
#
# PowerShell Module Manifest:
# https://msdn.microsoft.com/en-us/library/dd878337%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
#
# See also
# http://www.powershellmagazine.com/2014/08/15/pstip-taking-control-of-verbose-and-debug-output-part-5/
. "$PSScriptRoot\Utilities.ps1"
. "$PSScriptRoot\Get-VisualStudio.ps1"
. "$PSScriptRoot\Get-UmbracoBuildEnv.ps1"
. "$PSScriptRoot\Set-UmbracoVersion.ps1"
. "$PSScriptRoot\Set-UmbracoContinuousVersion.ps1"
. "$PSScriptRoot\Get-UmbracoVersion.ps1"
. "$PSScriptRoot\Verify-NuGet.ps1"
. "$PSScriptRoot\Build-UmbracoDocs.ps1"
#
# Prepares the build
#
function Prepare-Build
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
[Alias("k")]
[switch]
$keep = $false
)
Write-Host ">> Prepare Build"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
# clear
Write-Host "Clear folders and files"
Remove-Directory "$src\Umbraco.Web.UI.Client\bower_components"
if (-not $keep)
{
Remove-Directory "$tmp"
Remove-Directory "$out"
}
if (-not (Test-Path "$tmp"))
{
mkdir "$tmp" > $null
}
if (-not (Test-Path "$out"))
{
mkdir "$out" > $null
}
# ensure proper web.config
$webUi = "$src\Umbraco.Web.UI"
Store-WebConfig $webUi
Write-Host "Create clean web.config"
Copy-File "$webUi\web.Template.config" "$webUi\web.config"
}
function Clear-EnvVar($var)
{
$value = [Environment]::GetEnvironmentVariable($var)
if (test-path "env:$var") { rm "env:$var" }
return $value
}
function Set-EnvVar($var, $value)
{
if ($value)
{
[Environment]::SetEnvironmentVariable($var, $value)
}
else
{
if (test-path "env:$var") { rm "env:$var" }
}
}
function Sandbox-Node
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$global:node_path = $env:path
$nodePath = $uenv.NodePath
$gitExe = (get-command git).Source
$gitPath = [System.IO.Path]::GetDirectoryName($gitExe)
$env:path = "$nodePath;$gitPath"
$global:node_nodepath = Clear-EnvVar "NODEPATH"
$global:node_npmcache = Clear-EnvVar "NPM_CONFIG_CACHE"
$global:node_npmprefix = Clear-EnvVar "NPM_CONFIG_PREFIX"
}
function Restore-Node
{
$env:path = $node_path
Set-EnvVar "NODEPATH" $node_nodepath
Set-EnvVar "NPM_CONFIG_CACHE" $node_npmcache
Set-EnvVar "NPM_CONFIG_PREFIX" $node_npmprefix
}
#
# Builds the Belle UI project
#
function Compile-Belle
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
$version # an Umbraco version object (see Get-UmbracoVersion)
)
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$src = "$($uenv.SolutionRoot)\src"
Write-Host ">> Compile Belle"
Write-Host "Logging to $tmp\belle.log"
# get a temp clean node env (will restore)
Sandbox-Node $uenv
push-location "$($uenv.SolutionRoot)\src\Umbraco.Web.UI.Client"
write "node version is:" > $tmp\belle.log
&node -v >> $tmp\belle.log 2>&1
write "npm version is:" >> $tmp\belle.log 2>&1
&npm -v >> $tmp\belle.log 2>&1
write "cleaning npm cache" >> $tmp\belle.log 2>&1
&npm cache clean >> $tmp\belle.log 2>&1
write "installing bower" >> $tmp\belle.log 2>&1
&npm install -g bower >> $tmp\belle.log 2>&1
write "installing gulp" >> $tmp\belle.log 2>&1
&npm install -g gulp >> $tmp\belle.log 2>&1
write "installing gulp-cli" >> $tmp\belle.log 2>&1
&npm install -g gulp-cli --quiet >> $tmp\belle.log 2>&1
write "executing npm install" >> $tmp\belle.log 2>&1
&npm install >> $tmp\belle.log 2>&1
write "executing gulp build for version $version" >> $tmp\belle.log 2>&1
&gulp build --buildversion=$version.Release >> $tmp\belle.log 2>&1
pop-location
# fixme - should we filter the log to find errors?
#get-content .\build.tmp\belle.log | %{ if ($_ -match "build") { write $_}}
# restore
Restore-Node
# setting node_modules folder to hidden
# used to prevent VS13 from crashing on it while loading the websites project
# also makes sure aspnet compiler does not try to handle rogue files and chokes
# in VSO with Microsoft.VisualC.CppCodeProvider -related errors
# use get-item -force 'cos it might be hidden already
write "Set hidden attribute on node_modules"
$dir = get-item -force "$src\Umbraco.Web.UI.Client\node_modules"
$dir.Attributes = $dir.Attributes -bor ([System.IO.FileAttributes]::Hidden)
}
#
# Compiles Umbraco
#
function Compile-Umbraco
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
[string] $buildConfiguration = "Release"
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
if ($uenv.VisualStudio -eq $null)
{
Write-Error "Build environment does not provide VisualStudio."
break
}
$toolsVersion = "4.0"
if ($uenv.VisualStudio.Major -eq 15)
{
$toolsVersion = "15.0"
}
Write-Host ">> Compile Umbraco"
Write-Host "Logging to $tmp\msbuild.umbraco.log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$uenv.VisualStudio.MsBuild "$src\Umbraco.Web.UI\Umbraco.Web.UI.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir=$tmp\bin\\ `
/p:WebProjectOutputDir=$tmp\WebApp\\ `
/p:Verbosity=minimal `
/t:Clean`;Rebuild `
/tv:$toolsVersion `
/p:UmbracoBuild=True `
> $tmp\msbuild.umbraco.log
# /p:UmbracoBuild tells the csproj that we are building from PS
}
#
# Prepare Tests
#
function Prepare-Tests
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
Write-Host ">> Prepare Tests"
# fixme - idea is to avoid rebuilding everything for tests
# but because of our weird assembly versioning (with .* stuff)
# everything gets rebuilt all the time...
#Copy-Files "$tmp\bin" "." "$tmp\tests"
# data
Write-Host "Copy data files"
if( -Not (Test-Path -Path "$tmp\tests\Packaging" ) )
{
Write-Host "Create packaging directory"
New-Item -ItemType directory -Path "$tmp\tests\Packaging"
}
Copy-Files "$src\Umbraco.Tests\Packaging\Packages" "*" "$tmp\tests\Packaging\Packages"
# required for package install tests
if( -Not (Test-Path -Path "$tmp\tests\bin" ) )
{
Write-Host "Create bin directory"
New-Item -ItemType directory -Path "$tmp\tests\bin"
}
}
#
# Compiles Tests
#
function Compile-Tests
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$tmp\tests"
$buildConfiguration = "Release"
if ($uenv.VisualStudio -eq $null)
{
Write-Error "Build environment does not provide VisualStudio."
break
}
$toolsVersion = "4.0"
if ($uenv.VisualStudio.Major -eq 15)
{
$toolsVersion = "15.0"
}
Write-Host ">> Compile Tests"
Write-Host "Logging to $tmp\msbuild.tests.log"
# beware of the weird double \\ at the end of paths
# see http://edgylogic.com/blog/powershell-and-external-commands-done-right/
&$uenv.VisualStudio.MsBuild "$src\Umbraco.Tests\Umbraco.Tests.csproj" `
/p:WarningLevel=0 `
/p:Configuration=$buildConfiguration `
/p:Platform=AnyCPU `
/p:UseWPP_CopyWebApplication=True `
/p:PipelineDependsOnBuild=False `
/p:OutDir=$out\\ `
/p:Verbosity=minimal `
/t:Build `
/tv:$toolsVersion `
/p:UmbracoBuild=True `
/p:NugetPackages=$src\packages `
> $tmp\msbuild.tests.log
# /p:UmbracoBuild tells the csproj that we are building from PS
}
#
# Cleans things up and prepare files after compilation
#
function Prepare-Packages
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Prepare Packages"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$buildConfiguration = "Release"
# restore web.config
Restore-WebConfig "$src\Umbraco.Web.UI"
# cleanup build
Write-Host "Clean build"
Remove-File "$tmp\bin\*.dll.config"
Remove-File "$tmp\WebApp\bin\*.dll.config"
# cleanup presentation
Write-Host "Cleanup presentation"
Remove-Directory "$tmp\WebApp\umbraco.presentation"
# create directories
Write-Host "Create directories"
mkdir "$tmp\Configs" > $null
mkdir "$tmp\Configs\Lang" > $null
mkdir "$tmp\WebApp\App_Data" > $null
#mkdir "$tmp\WebApp\Media" > $null
#mkdir "$tmp\WebApp\Views" > $null
# copy various files
Write-Host "Copy xml documentation"
cp -force "$tmp\bin\*.xml" "$tmp\WebApp\bin"
Write-Host "Copy transformed configs and langs"
# note: exclude imageprocessor/*.config as imageprocessor pkg installs them
Copy-Files "$tmp\WebApp\config" "*.config" "$tmp\Configs" `
{ -not $_.RelativeName.StartsWith("imageprocessor") }
Copy-Files "$tmp\WebApp\config" "*.js" "$tmp\Configs"
Copy-Files "$tmp\WebApp\config\lang" "*.xml" "$tmp\Configs\Lang"
Copy-File "$tmp\WebApp\web.config" "$tmp\Configs\web.config.transform"
Write-Host "Copy transformed web.config"
Copy-File "$src\Umbraco.Web.UI\web.$buildConfiguration.Config.transformed" "$tmp\WebApp\web.config"
# offset the modified timestamps on all umbraco dlls, as WebResources
# break if date is in the future, which, due to timezone offsets can happen.
Write-Host "Offset dlls timestamps"
ls -r "$tmp\*.dll" | foreach {
$_.CreationTime = $_.CreationTime.AddHours(-11)
$_.LastWriteTime = $_.LastWriteTime.AddHours(-11)
}
# copy libs
Write-Host "Copy SqlCE libraries"
Copy-Files "$src\packages\SqlServerCE.4.0.0.1" "*.*" "$tmp\bin" `
{ -not $_.Extension.StartsWith(".nu") -and -not $_.RelativeName.StartsWith("lib\") }
Copy-Files "$src\packages\SqlServerCE.4.0.0.1" "*.*" "$tmp\WebApp\bin" `
{ -not $_.Extension.StartsWith(".nu") -and -not $_.RelativeName.StartsWith("lib\") }
# copy Belle
Write-Host "Copy Belle"
Copy-Files "$src\Umbraco.Web.UI\umbraco\assets" "*" "$tmp\WebApp\umbraco\assets"
Copy-Files "$src\Umbraco.Web.UI\umbraco\js" "*" "$tmp\WebApp\umbraco\js"
Copy-Files "$src\Umbraco.Web.UI\umbraco\lib" "*" "$tmp\WebApp\umbraco\lib"
Copy-Files "$src\Umbraco.Web.UI\umbraco\views" "*" "$tmp\WebApp\umbraco\views"
Copy-Files "$src\Umbraco.Web.UI\umbraco\preview" "*" "$tmp\WebApp\umbraco\preview"
}
#
# Creates the Zip packages
#
function Package-Zip
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Create Zip packages"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
Write-Host "Zip all binaries"
&$uenv.Zip a -r "$out\UmbracoCms.AllBinaries.$($version.Semver).zip" `
"$tmp\bin\*" `
"-x!dotless.Core.*" `
> $null
Write-Host "Zip cms"
&$uenv.Zip a -r "$out\UmbracoCms.$($version.Semver).zip" `
"$tmp\WebApp\*" `
"-x!dotless.Core.*" "-x!Content_Types.xml" "-x!*.pdb"`
> $null
}
#
# Prepares NuGet
#
function Prepare-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
Write-Host ">> Prepare NuGet"
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
# add Web.config transform files to the NuGet package
Write-Host "Add web.config transforms to NuGet package"
mv "$tmp\WebApp\Views\Web.config" "$tmp\WebApp\Views\Web.config.transform"
# fixme - that one does not exist in .bat build either?
#mv "$tmp\WebApp\Xslt\Web.config" "$tmp\WebApp\Xslt\Web.config.transform"
}
#
# Restores NuGet
#
function Restore-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
Write-Host ">> Restore NuGet"
Write-Host "Logging to $tmp\nuget.restore.log"
&$uenv.NuGet restore "$src\Umbraco.sln" > "$tmp\nuget.restore.log"
}
#
# Copies the Azure Gallery script to output
#
function Prepare-AzureGallery
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$psScript = "$($uenv.SolutionRoot)\build\azuregalleryrelease.ps1"
Write-Host ">> Copy azuregalleryrelease.ps1 to output folder"
Copy-Item $psScript $out
}
#
# Creates the NuGet packages
#
function Package-NuGet
{
param (
$uenv, # an Umbraco build environment (see Get-UmbracoBuildEnv)
$version # an Umbraco version object (see Get-UmbracoVersion)
)
$src = "$($uenv.SolutionRoot)\src"
$tmp = "$($uenv.SolutionRoot)\build.tmp"
$out = "$($uenv.SolutionRoot)\build.out"
$nuspecs = "$($uenv.SolutionRoot)\build\NuSpecs"
Write-Host ">> Create NuGet packages"
# see https://docs.microsoft.com/en-us/nuget/schema/nuspec
# note - warnings about SqlCE native libs being outside of 'lib' folder,
# nothing much we can do about it as it's intentional yet there does not
# seem to be a way to disable the warning
&$uenv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$tmp" `
-Version $version.Semver.ToString() `
-Symbols -Verbosity quiet -outputDirectory $out
&$uenv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
-Properties BuildTmp="$tmp" `
-Version $version.Semver.ToString() `
-Verbosity quiet -outputDirectory $out
}
#
# Builds Umbraco
#
function Build-Umbraco
{
[CmdletBinding()]
param (
[string]
$target = "all",
[string]
$buildConfiguration = "Release"
)
$target = $target.ToLowerInvariant()
Write-Host ">> Build-Umbraco <$target> <$buildConfiguration>"
Write-Host "Get Build Environment"
$uenv = Get-UmbracoBuildEnv
Write-Host "Get Version"
$version = Get-UmbracoVersion
Write-Host "Version $($version.Semver)"
if ($target -eq "pre-build")
{
Prepare-Build $uenv
#Compile-Belle $uenv $version
# set environment variables
$env:UMBRACO_VERSION=$version.Semver.ToString()
$env:UMBRACO_RELEASE=$version.Release
$env:UMBRACO_COMMENT=$version.Comment
$env:UMBRACO_BUILD=$version.Build
# set environment variable for VSO
# https://github.com/Microsoft/vsts-tasks/issues/375
# https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md
Write-Host ("##vso[task.setvariable variable=UMBRACO_VERSION;]$($version.Semver.ToString())")
Write-Host ("##vso[task.setvariable variable=UMBRACO_RELEASE;]$($version.Release)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_COMMENT;]$($version.Comment)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_BUILD;]$($version.Build)")
Write-Host ("##vso[task.setvariable variable=UMBRACO_TMP;]$($uenv.SolutionRoot)\build.tmp")
}
elseif ($target -eq "pre-tests")
{
Prepare-Tests $uenv
}
elseif ($target -eq "compile-tests")
{
Compile-Tests $uenv
}
elseif ($target -eq "compile-umbraco")
{
Compile-Umbraco $uenv $buildConfiguration
}
elseif ($target -eq "pre-packages")
{
Prepare-Packages $uenv
}
elseif ($target -eq "pre-nuget")
{
Prepare-NuGet $uenv
}
elseif ($target -eq "restore-nuget")
{
Restore-NuGet $uenv
}
elseif ($target -eq "pkg-zip")
{
Package-Zip $uenv
}
elseif ($target -eq "compile-belle")
{
Compile-Belle $uenv $version
}
elseif ($target -eq "prepare-azuregallery")
{
Prepare-AzureGallery $uenv
}
elseif ($target -eq "all")
{
Prepare-Build $uenv
Restore-NuGet $uenv
Compile-Belle $uenv $version
Compile-Umbraco $uenv $buildConfiguration
Prepare-Tests $uenv
Compile-Tests $uenv
# not running tests...
Prepare-Packages $uenv
Package-Zip $uenv
Verify-NuGet $uenv
Prepare-NuGet $uenv
Package-NuGet $uenv $version
Prepare-AzureGallery $uenv
}
else
{
Write-Error "Unsupported target `"$target`"."
}
}
#
# export functions
#
Export-ModuleMember -function Get-UmbracoBuildEnv
Export-ModuleMember -function Set-UmbracoVersion
Export-ModuleMember -function Set-UmbracoContinuousVersion
Export-ModuleMember -function Get-UmbracoVersion
Export-ModuleMember -function Build-Umbraco
Export-ModuleMember -function Build-UmbracoDocs
Export-ModuleMember -function Verify-NuGet
#eof
+95
View File
@@ -0,0 +1,95 @@
# returns the full path if $file is relative to $pwd
function Get-FullPath($file)
{
$path = [System.IO.Path]::Combine($pwd, $file)
$path = [System.IO.Path]::GetFullPath($path)
return $path
}
# removes a directory, doesn't complain if it does not exist
function Remove-Directory($dir)
{
remove-item $dir -force -recurse -errorAction SilentlyContinue > $null
}
# removes a file, doesn't complain if it does not exist
function Remove-File($file)
{
remove-item $file -force -errorAction SilentlyContinue > $null
}
# copies a file, creates target dir if needed
function Copy-File($source, $target)
{
$ignore = new-item -itemType file -path $target -force
cp -force $source $target
}
# copies files to a directory
function Copy-Files($source, $select, $target, $filter)
{
$files = ls -r "$source\$select"
$files | foreach {
$relative = $_.FullName.SubString($source.Length+1)
$_ | add-member -memberType NoteProperty -name RelativeName -value $relative
}
if ($filter -ne $null) {
$files = $files | where $filter
}
$files |
foreach {
if ($_.PsIsContainer) {
$ignore = new-item -itemType directory -path "$target\$($_.RelativeName)" -force
}
else {
Copy-File $_.FullName "$target\$($_.RelativeName)"
}
}
}
# regex-replaces content in a file
function Replace-FileText($filename, $source, $replacement)
{
$filepath = Get-FullPath $filename
$text = [System.IO.File]::ReadAllText($filepath)
$text = [System.Text.RegularExpressions.Regex]::Replace($text, $source, $replacement)
$utf8bom = New-Object System.Text.UTF8Encoding $true
[System.IO.File]::WriteAllText($filepath, $text, $utf8bom)
}
# store web.config
function Store-WebConfig($webUi)
{
if (test-path "$webUi\web.config")
{
if (test-path "$webUi\web.config.temp-build")
{
Write-Host "Found existing web.config.temp-build"
$i = 0
while (test-path "$webUi\web.config.temp-build.$i")
{
$i = $i + 1
}
Write-Host "Save existing web.config as web.config.temp-build.$i"
Write-Host "(WARN: the original web.config.temp-build will be restored during post-build)"
mv "$webUi\web.config" "$webUi\web.config.temp-build.$i"
}
else
{
Write-Host "Save existing web.config as web.config.temp-build"
Write-Host "(will be restored during post-build)"
mv "$webUi\web.config" "$webUi\web.config.temp-build"
}
}
}
# restore web.config
function Restore-WebConfig($webUi)
{
if (test-path "$webUi\web.config.temp-build")
{
Write-Host "Restoring existing web.config"
Remove-File "$webUi\web.config"
mv "$webUi\web.config.temp-build" "$webUi\web.config"
}
}
@@ -0,0 +1,444 @@
#
# Verify-NuGet
#
function Format-Dependency
{
param ( $d )
$m = $d.Id + " "
if ($d.MinInclude) { $m = $m + "[" }
else { $m = $m + "(" }
$m = $m + $d.MinVersion
if ($d.MaxVersion -ne $d.MinVersion) { $m = $m + "," + $d.MaxVersion }
if ($d.MaxInclude) { $m = $m + "]" }
else { $m = $m + ")" }
return $m
}
function Write-NuSpec
{
param ( $name, $deps )
Write-Host ""
Write-Host "$name NuSpec dependencies:"
foreach ($d in $deps)
{
$m = Format-Dependency $d
Write-Host " $m"
}
}
function Write-Package
{
param ( $name, $pkgs )
Write-Host ""
Write-Host "$name packages:"
foreach ($p in $pkgs)
{
Write-Host " $($p.Id) $($p.Version)"
}
}
function Verify-NuGet
{
param (
$uenv # an Umbraco build environment (see Get-UmbracoBuildEnv)
)
if ($uenv -eq $null)
{
$uenv = Get-UmbracoBuildEnv
}
$source = @"
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Semver;
namespace Umbraco.Build
{
public class NuGet
{
public static Dependency[] GetNuSpecDependencies(string filename)
{
NuSpec nuspec;
var serializer = new XmlSerializer(typeof(NuSpec));
using (var reader = new StreamReader(filename))
{
nuspec = (NuSpec) serializer.Deserialize(reader);
}
var nudeps = nuspec.Metadata.Dependencies;
var deps = new List<Dependency>();
foreach (var nudep in nudeps)
{
var dep = new Dependency();
dep.Id = nudep.Id;
var parts = nudep.Version.Split(',');
if (parts.Length == 1)
{
dep.MinInclude = parts[0].StartsWith("[");
dep.MaxInclude = parts[0].EndsWith("]");
SemVersion version;
if (!SemVersion.TryParse(parts[0].Substring(1, parts[0].Length-2).Trim(), out version)) continue;
dep.MinVersion = dep.MaxVersion = version; //parts[0].Substring(1, parts[0].Length-2).Trim();
}
else
{
SemVersion version;
if (!SemVersion.TryParse(parts[0].Substring(1).Trim(), out version)) continue;
dep.MinVersion = version; //parts[0].Substring(1).Trim();
if (!SemVersion.TryParse(parts[1].Substring(0, parts[1].Length-1).Trim(), out version)) continue;
dep.MaxVersion = version; //parts[1].Substring(0, parts[1].Length-1).Trim();
dep.MinInclude = parts[0].StartsWith("[");
dep.MaxInclude = parts[1].EndsWith("]");
}
deps.Add(dep);
}
return deps.ToArray();
}
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(/*this*/ IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> knownKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (knownKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
public static Package[] GetProjectsPackages(string src, string[] projects)
{
var l = new List<Package>();
foreach (var project in projects)
{
var path = Path.Combine(src, project);
var packageConfig = Path.Combine(path, "packages.config");
if (File.Exists(packageConfig))
ReadPackagesConfig(packageConfig, l);
var csprojs = Directory.GetFiles(path, "*.csproj");
foreach (var csproj in csprojs)
{
ReadCsProj(csproj, l);
}
}
IEnumerable<Package> p = l.OrderBy(x => x.Id);
p = DistinctBy(p, x => x.Id + ":::" + x.Version);
return p.ToArray();
}
public static object[] GetPackageErrors(Package[] pkgs)
{
return pkgs
.GroupBy(x => x.Id)
.Where(x => x.Count() > 1)
.ToArray();
}
public static object[] GetNuSpecErrors(Package[] pkgs, Dependency[] deps)
{
var d = pkgs.ToDictionary(x => x.Id, x => x.Version);
return deps
.Select(x =>
{
SemVersion v;
if (!d.TryGetValue(x.Id, out v)) return null;
var ok = true;
/*
if (x.MinInclude)
{
if (v < x.MinVersion) ok = false;
}
else
{
if (v <= x.MinVersion) ok = false;
}
if (x.MaxInclude)
{
if (v > x.MaxVersion) ok = false;
}
else
{
if (v >= x.MaxVersion) ok = false;
}
*/
if (!x.MinInclude || v != x.MinVersion) ok = false;
return ok ? null : new { Dependency = x, Version = v };
})
.Where(x => x != null)
.ToArray();
}
/*
public static Package[] GetProjectPackages(string path)
{
var l = new List<Package>();
var packageConfig = Path.Combine(path, "packages.config");
if (File.Exists(packageConfig))
ReadPackagesConfig(packageConfig, l);
var csprojs = Directory.GetFiles(path, "*.csproj");
foreach (var csproj in csprojs)
{
ReadCsProj(csproj, l);
}
return l.ToArray();
}
*/
public static string GetDirectoryName(string filename)
{
return Path.GetFileName(Path.GetDirectoryName(filename));
}
public static void ReadPackagesConfig(string filename, List<Package> packages)
{
//Console.WriteLine("read " + filename);
PackagesConfigPackages pkgs;
var serializer = new XmlSerializer(typeof(PackagesConfigPackages));
using (var reader = new StreamReader(filename))
{
pkgs = (PackagesConfigPackages) serializer.Deserialize(reader);
}
foreach (var p in pkgs.Packages)
{
SemVersion version;
if (!SemVersion.TryParse(p.Version, out version)) continue;
packages.Add(new Package { Id = p.Id, Version = version, Project = GetDirectoryName(filename) });
}
}
public static void ReadCsProj(string filename, List<Package> packages)
{
//Console.WriteLine("read " + filename);
// if xmlns then it's not a VS2017 with PackageReference
var text = File.ReadAllLines(filename);
var line = text.FirstOrDefault(x => x.Contains("<Project"));
if (line == null) return;
if (line.Contains("xmlns")) return;
CsProjProject proj;
var serializer = new XmlSerializer(typeof(CsProjProject));
using (var reader = new StreamReader(filename))
{
proj = (CsProjProject) serializer.Deserialize(reader);
}
foreach (var p in proj.ItemGroups.Where(x => x.Packages != null).SelectMany(x => x.Packages))
{
var sversion = p.VersionE ?? p.VersionA;
SemVersion version;
if (!SemVersion.TryParse(sversion, out version)) continue;
packages.Add(new Package { Id = p.Id, Version = version, Project = GetDirectoryName(filename) });
}
}
public class Dependency
{
public string Id { get; set; }
public SemVersion MinVersion { get; set; }
public SemVersion MaxVersion { get; set; }
public bool MinInclude { get; set; }
public bool MaxInclude { get; set; }
}
public class Package
{
public string Id { get; set; }
public SemVersion Version { get; set; }
public string Project { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd")]
[XmlRoot(Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", IsNullable = false, ElementName = "package")]
public class NuSpec
{
[XmlElement("metadata")]
public NuSpecMetadata Metadata { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", TypeName = "metadata")]
public class NuSpecMetadata
{
[XmlArray("dependencies")]
[XmlArrayItem("dependency", IsNullable = false)]
public NuSpecDependency[] Dependencies { get; set; }
}
[XmlType(AnonymousType = true, Namespace = "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd", TypeName = "dependencies")]
public class NuSpecDependency
{
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "version")]
public string Version { get; set; }
}
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false, ElementName = "packages")]
public class PackagesConfigPackages
{
[XmlElement("package")]
public PackagesConfigPackage[] Packages { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "package")]
public class PackagesConfigPackage
{
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "version")]
public string Version { get; set; }
}
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false, ElementName = "Project")]
public class CsProjProject
{
[XmlElement("ItemGroup")]
public CsProjItemGroup[] ItemGroups { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "ItemGroup")]
public class CsProjItemGroup
{
[XmlElement("PackageReference")]
public CsProjPackageReference[] Packages { get; set; }
}
[XmlType(AnonymousType = true, TypeName = "PackageReference")]
public class CsProjPackageReference
{
[XmlAttribute(AttributeName = "Include")]
public string Id { get; set; }
[XmlAttribute(AttributeName = "Version")]
public string VersionA { get; set; }
[XmlElement("Version")]
public string VersionE { get; set;}
}
}
}
"@
Write-Host ">> Verify NuGet consistency"
$assem = (
"System.Xml",
"System.Core", # "System.Collections.Generic"
"System.Linq",
"System.Xml.Serialization",
"System.IO",
"System.Globalization",
$uenv.Semver
)
try
{
# as long as the code hasn't changed it's fine to re-add, but if the code
# has changed this will throw - better warn the dev that we have an issue
add-type -referencedAssemblies $assem -typeDefinition $source -language CSharp
}
catch
{
if ($_.FullyQualifiedErrorId.StartsWith("TYPE_ALREADY_EXISTS,"))
{ Write-Error "Failed to add type, did you change the code?" }
else
{ Write-Error $_ }
}
if (-not $?) { break }
$nuspecs = (
"UmbracoCms",
"UmbracoCms.Core"
)
$projects = (
"Umbraco.Core",
"Umbraco.Web",
"Umbraco.Web.UI",
"UmbracoExamine"#,
#"Umbraco.Tests",
#"Umbraco.Tests.Benchmarks"
)
$src = "$($uenv.SolutionRoot)\src"
$pkgs = [Umbraco.Build.NuGet]::GetProjectsPackages($src, $projects)
if (-not $?) { break }
#Write-Package "All" $pkgs
$errs = [Umbraco.Build.NuGet]::GetPackageErrors($pkgs)
if (-not $?) { break }
if ($errs.Length -gt 0)
{
Write-Host ""
}
foreach ($err in $errs)
{
Write-Host $err.Key
foreach ($e in $err)
{
Write-Host " $($e.Version) required by $($e.Project)"
}
}
if ($errs.Length -gt 0)
{
Write-Error "Found non-consolidated package dependencies"
break
}
$nuerr = $false
$nupath = "$($uenv.SolutionRoot)\build\NuSpecs"
foreach ($nuspec in $nuspecs)
{
$deps = [Umbraco.Build.NuGet]::GetNuSpecDependencies("$nupath\$nuspec.nuspec")
if (-not $?) { break }
#Write-NuSpec $nuspec $deps
$errs = [Umbraco.Build.NuGet]::GetNuSpecErrors($pkgs, $deps)
if (-not $?) { break }
if ($errs.Length -gt 0)
{
Write-Host ""
Write-Host "$nuspec requires:"
$nuerr = $true
}
foreach ($err in $errs)
{
$m = Format-Dependency $err.Dependency
Write-Host " $m but projects require $($err.Version)"
}
}
if ($nuerr)
{
Write-Error "Found inconsistent NuGet dependencies"
break
}
}
+49 -50
View File
@@ -21,88 +21,87 @@
<dependency id="Microsoft.AspNet.WebApi" version="[5.2.3,6.0.0)" />
<dependency id="Microsoft.AspNet.Identity.Owin" version="[2.2.1, 3.0.0)" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
<dependency id="Microsoft.Owin.Security.Cookies" version="[3.0.1, 4.0.0)" />
<dependency id="Microsoft.Owin.Security.OAuth" version="[3.0.1, 4.0.0)" />
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[3.0.1, 4.0.0)" />
<dependency id="Microsoft.Owin.Security.Cookies" version="[3.1.0, 4.0.0)" />
<dependency id="Microsoft.Owin.Security.OAuth" version="[3.1.0, 4.0.0)" />
<dependency id="Microsoft.Owin.Host.SystemWeb" version="[3.1.0, 4.0.0)" />
<dependency id="MiniProfiler" version="[2.1.0, 3.0.0)" />
<dependency id="HtmlAgilityPack" version="[1.4.9.5, 2.0.0)" />
<dependency id="Lucene.Net" version="[2.9.4.1, 3.0.0.0)" />
<dependency id="SharpZipLib" version="[0.86.0, 1.0.0)" />
<dependency id="MySql.Data" version="[6.9.9, 7.0.0)" />
<dependency id="xmlrpcnet" version="[2.5.0, 3.0.0)" />
<dependency id="ClientDependency" version="[1.9.2, 2.0.0)" />
<dependency id="ClientDependency-Mvc5" version="[1.8.0.0, 2.0.0)" />
<dependency id="AutoMapper" version="[3.3.1, 4.0.0)" />
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
<dependency id="Examine" version="[0.1.83, 1.0.0)" />
<dependency id="Examine" version="[0.1.85, 1.0.0)" />
<dependency id="ImageProcessor" version="[2.5.3, 3.0.0)" />
<dependency id="ImageProcessor.Web" version="[4.8.3, 5.0.0)" />
<dependency id="semver" version="[1.1.2, 3.0.0)" />
<!-- Markdown can not be updated due to: https://github.com/hey-red/markdownsharp/issues/71#issuecomment-233585487 -->
<dependency id="Markdown" version="[1.14.7, 2.0.0)" />
<dependency id="System.Threading.Tasks.Dataflow" version="[4.7.0, 5.0.0)" />
<dependency id="System.Threading.Tasks.Dataflow" version="[4.7.0, 5.0.0)" />
</dependencies>
</metadata>
<files>
<file src="..\_BuildOutput\WebApp\bin\businesslogic.dll" target="lib\net45\businesslogic.dll" />
<file src="..\_BuildOutput\WebApp\bin\businesslogic.xml" target="lib\net45\businesslogic.xml" />
<file src="..\_BuildOutput\WebApp\bin\cms.dll" target="lib\net45\cms.dll" />
<file src="..\_BuildOutput\WebApp\bin\cms.xml" target="lib\net45\cms.xml" />
<file src="..\_BuildOutput\WebApp\bin\controls.dll" target="lib\net45\controls.dll" />
<file src="..\_BuildOutput\WebApp\bin\controls.xml" target="lib\net45\controls.xml" />
<file src="..\_BuildOutput\WebApp\bin\interfaces.dll" target="lib\net45\interfaces.dll" />
<file src="..\_BuildOutput\WebApp\bin\interfaces.xml" target="lib\net45\interfaces.xml" />
<file src="..\_BuildOutput\WebApp\bin\log4net.dll" target="lib\net45\log4net.dll" />
<file src="..\_BuildOutput\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\net45\Microsoft.ApplicationBlocks.Data.dll" />
<file src="..\_BuildOutput\WebApp\bin\SQLCE4Umbraco.dll" target="lib\net45\SQLCE4Umbraco.dll" />
<file src="..\_BuildOutput\WebApp\bin\SQLCE4Umbraco.xml" target="lib\net45\SQLCE4Umbraco.xml" />
<file src="..\_BuildOutput\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\net45\System.Data.SqlServerCe.dll" />
<file src="..\_BuildOutput\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\net45\System.Data.SqlServerCe.Entity.dll" />
<file src="..\_BuildOutput\WebApp\bin\TidyNet.dll" target="lib\net45\TidyNet.dll" />
<file src="..\_BuildOutput\WebApp\bin\Umbraco.Core.dll" target="lib\net45\Umbraco.Core.dll" />
<file src="..\_BuildOutput\WebApp\bin\Umbraco.Core.xml" target="lib\net45\Umbraco.Core.xml" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.DataLayer.dll" target="lib\net45\umbraco.DataLayer.dll" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.DataLayer.xml" target="lib\net45\umbraco.DataLayer.xml" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.dll" target="lib\net45\umbraco.dll" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.xml" target="lib\net45\umbraco.xml" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.editorControls.dll" target="lib\net45\umbraco.editorControls.dll" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.editorControls.xml" target="lib\net45\umbraco.editorControls.xml" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.MacroEngines.dll" target="lib\net45\umbraco.MacroEngines.dll" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.MacroEngines.xml" target="lib\net45\umbraco.MacroEngines.xml" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.providers.dll" target="lib\net45\umbraco.providers.dll" />
<file src="..\_BuildOutput\WebApp\bin\umbraco.providers.xml" target="lib\net45\umbraco.providers.xml" />
<file src="..\_BuildOutput\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net45\Umbraco.Web.UI.dll" />
<file src="..\_BuildOutput\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net45\Umbraco.Web.UI.xml" />
<file src="..\_BuildOutput\WebApp\bin\UmbracoExamine.dll" target="lib\net45\UmbracoExamine.dll" />
<file src="..\_BuildOutput\WebApp\bin\UmbracoExamine.xml" target="lib\net45\UmbracoExamine.xml" />
<file src="$BuildTmp$\WebApp\bin\businesslogic.dll" target="lib\net45\businesslogic.dll" />
<file src="$BuildTmp$\WebApp\bin\businesslogic.xml" target="lib\net45\businesslogic.xml" />
<file src="$BuildTmp$\WebApp\bin\cms.dll" target="lib\net45\cms.dll" />
<file src="$BuildTmp$\WebApp\bin\cms.xml" target="lib\net45\cms.xml" />
<file src="$BuildTmp$\WebApp\bin\controls.dll" target="lib\net45\controls.dll" />
<file src="$BuildTmp$\WebApp\bin\controls.xml" target="lib\net45\controls.xml" />
<file src="$BuildTmp$\WebApp\bin\interfaces.dll" target="lib\net45\interfaces.dll" />
<file src="$BuildTmp$\WebApp\bin\interfaces.xml" target="lib\net45\interfaces.xml" />
<file src="$BuildTmp$\WebApp\bin\log4net.dll" target="lib\net45\log4net.dll" />
<file src="$BuildTmp$\WebApp\bin\Microsoft.ApplicationBlocks.Data.dll" target="lib\net45\Microsoft.ApplicationBlocks.Data.dll" />
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.dll" target="lib\net45\SQLCE4Umbraco.dll" />
<file src="$BuildTmp$\WebApp\bin\SQLCE4Umbraco.xml" target="lib\net45\SQLCE4Umbraco.xml" />
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.dll" target="lib\net45\System.Data.SqlServerCe.dll" />
<file src="$BuildTmp$\WebApp\bin\System.Data.SqlServerCe.Entity.dll" target="lib\net45\System.Data.SqlServerCe.Entity.dll" />
<file src="$BuildTmp$\WebApp\bin\TidyNet.dll" target="lib\net45\TidyNet.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net45\Umbraco.Core.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net45\Umbraco.Core.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.dll" target="lib\net45\umbraco.DataLayer.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.DataLayer.xml" target="lib\net45\umbraco.DataLayer.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.dll" target="lib\net45\umbraco.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.xml" target="lib\net45\umbraco.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.dll" target="lib\net45\umbraco.editorControls.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.editorControls.xml" target="lib\net45\umbraco.editorControls.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.dll" target="lib\net45\umbraco.MacroEngines.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.MacroEngines.xml" target="lib\net45\umbraco.MacroEngines.xml" />
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.dll" target="lib\net45\umbraco.providers.dll" />
<file src="$BuildTmp$\WebApp\bin\umbraco.providers.xml" target="lib\net45\umbraco.providers.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.dll" target="lib\net45\Umbraco.Web.UI.dll" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net45\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.dll" target="lib\net45\UmbracoExamine.dll" />
<file src="$BuildTmp$\WebApp\bin\UmbracoExamine.xml" target="lib\net45\UmbracoExamine.xml" />
<file src="tools\install.core.ps1" target="tools\install.ps1" />
<!-- Added to be able to produce a symbols package -->
<file src="..\_BuildOutput\bin\SQLCE4Umbraco.pdb" target="lib" />
<file src="$BuildTmp$\bin\SQLCE4Umbraco.pdb" target="lib" />
<file src="..\..\src\SQLCE4Umbraco\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\SQLCE4Umbraco" />
<file src="..\_BuildOutput\bin\businesslogic.pdb" target="lib" />
<file src="$BuildTmp$\bin\businesslogic.pdb" target="lib" />
<file src="..\..\src\umbraco.businesslogic\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.businesslogic" />
<file src="..\_BuildOutput\bin\cms.pdb" target="lib" />
<file src="$BuildTmp$\bin\cms.pdb" target="lib" />
<file src="..\..\src\umbraco.cms\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.cms" />
<file src="..\_BuildOutput\bin\controls.pdb" target="lib" />
<file src="$BuildTmp$\bin\controls.pdb" target="lib" />
<file src="..\..\src\umbraco.controls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.controls" />
<file src="..\_BuildOutput\bin\interfaces.pdb" target="lib" />
<file src="$BuildTmp$\bin\interfaces.pdb" target="lib" />
<file src="..\..\src\umbraco.interfaces\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.interfaces" />
<file src="..\_BuildOutput\bin\Umbraco.Core.pdb" target="lib" />
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
<file src="..\..\src\Umbraco.Core\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Core" />
<file src="..\_BuildOutput\bin\umbraco.DataLayer.pdb" target="lib" />
<file src="$BuildTmp$\bin\umbraco.DataLayer.pdb" target="lib" />
<file src="..\..\src\umbraco.datalayer\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.datalayer" />
<file src="..\_BuildOutput\bin\umbraco.editorControls.pdb" target="lib" />
<file src="$BuildTmp$\bin\umbraco.editorControls.pdb" target="lib" />
<file src="..\..\src\umbraco.editorControls\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.editorControls" />
<file src="..\_BuildOutput\bin\umbraco.MacroEngines.pdb" target="lib" />
<file src="$BuildTmp$\bin\umbraco.MacroEngines.pdb" target="lib" />
<file src="..\..\src\umbraco.MacroEngines\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.MacroEngines" />
<file src="..\_BuildOutput\bin\umbraco.providers.pdb" target="lib" />
<file src="$BuildTmp$\bin\umbraco.providers.pdb" target="lib" />
<file src="..\..\src\umbraco.providers\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\umbraco.providers" />
<file src="..\_BuildOutput\bin\umbraco.pdb" target="lib" />
<file src="$BuildTmp$\bin\umbraco.pdb" target="lib" />
<file src="..\..\src\Umbraco.Web\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web" />
<file src="..\_BuildOutput\bin\Umbraco.Web.UI.pdb" target="lib" />
<file src="$BuildTmp$\bin\Umbraco.Web.UI.pdb" target="lib" />
<file src="..\..\src\Umbraco.Web.UI\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\Umbraco.Web.UI" />
<file src="..\_BuildOutput\bin\UmbracoExamine.pdb" target="lib" />
<file src="$BuildTmp$\bin\UmbracoExamine.pdb" target="lib" />
<file src="..\..\src\UmbracoExamine\**\*.cs" exclude="..\..\src\**\TemporaryGeneratedFile*.cs" target="src\UmbracoExamine" />
</files>
</package>
+13 -13
View File
@@ -19,22 +19,22 @@
<dependency id="Newtonsoft.Json" version="[10.0.2, 11.0.0)" />
<dependency id="Umbraco.ModelsBuilder" version="[3.0.7, 4.0.0)" />
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.2.1, 3.0.0)" />
<dependency id="ImageProcessor.Web.Config" version="[2.3.0, 3.0.0)" />
<dependency id="ImageProcessor.Web.Config" version="[2.3.0, 3.0.0)" />
</dependencies>
</metadata>
<files>
<file src="..\_BuildOutput\Configs\**" target="Content\Config" exclude="..\_BuildOutput\Configs\Web.config.transform" />
<file src="..\_BuildOutput\WebApp\Views\**" target="Content\Views" exclude="..\_BuildOutput\WebApp\Views\Web.config" />
<file src="..\_BuildOutput\WebApp\default.aspx" target="Content\default.aspx" />
<file src="..\_BuildOutput\WebApp\Global.asax" target="Content\Global.asax" />
<file src="..\_BuildOutput\WebApp\Web.config" target="UmbracoFiles\Web.config" />
<file src="..\_BuildOutput\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
<file src="..\_BuildOutput\WebApp\bin\amd64\**" target="UmbracoFiles\bin\amd64" />
<file src="..\_BuildOutput\WebApp\bin\x86\**" target="UmbracoFiles\bin\x86" />
<file src="..\_BuildOutput\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
<file src="..\_BuildOutput\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
<file src="..\_BuildOutput\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
<file src="..\_BuildOutput\WebApp\Media\Web.config" target="Content\Media\Web.config" />
<file src="$BuildTmp$\Configs\**" target="Content\Config" exclude="$BuildTmp$\Configs\Web.config.transform" />
<file src="$BuildTmp$\WebApp\Views\**" target="Content\Views" exclude="$BuildTmp$\WebApp\Views\Web.config" />
<file src="$BuildTmp$\WebApp\default.aspx" target="Content\default.aspx" />
<file src="$BuildTmp$\WebApp\Global.asax" target="Content\Global.asax" />
<file src="$BuildTmp$\WebApp\Web.config" target="UmbracoFiles\Web.config" />
<file src="$BuildTmp$\WebApp\App_Browsers\**" target="UmbracoFiles\App_Browsers" />
<file src="$BuildTmp$\WebApp\bin\amd64\**" target="UmbracoFiles\bin\amd64" />
<file src="$BuildTmp$\WebApp\bin\x86\**" target="UmbracoFiles\bin\x86" />
<file src="$BuildTmp$\WebApp\config\splashes\**" target="UmbracoFiles\Config\splashes" />
<file src="$BuildTmp$\WebApp\umbraco\**" target="UmbracoFiles\umbraco" />
<file src="$BuildTmp$\WebApp\umbraco_client\**" target="UmbracoFiles\umbraco_client" />
<file src="$BuildTmp$\WebApp\Media\Web.config" target="Content\Media\Web.config" />
<file src="tools\install.ps1" target="tools\install.ps1" />
<file src="tools\Readme.txt" target="tools\Readme.txt" />
<file src="tools\ReadmeUpgrade.txt" target="tools\ReadmeUpgrade.txt" />
+4 -4
View File
@@ -8,13 +8,13 @@
----------------------------------------------------
*** IMPORTANT NOTICE FOR 7.6 UPGRADES ***
*** IMPORTANT NOTICE FOR 7.7 UPGRADES ***
Be sure to read the version specific upgrade information before proceeding:
https://our.umbraco.org/documentation/Getting-Started/Setup/Upgrading/version-specific#version-7-6-0
https://our.umbraco.org/documentation/Getting-Started/Setup/Upgrading/version-specific#version-7-7-0
You will most likely need to make some changes to your web.config and you will need to be
aware of the breaking changes listed there to see if these affect your installation.
Depending on the version you are upgrading from, you may need to make some changes to your web.config
and you will need to be aware of the breaking changes listed there to see if these affect your installation.
Don't forget to build!
+7 -4
View File
@@ -15,6 +15,7 @@
<section name="BaseRestExtensions" type="Umbraco.Core.Configuration.BaseRest.BaseRestSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="FileSystemProviders" type="Umbraco.Core.Configuration.FileSystemProvidersSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="dashBoard" type="Umbraco.Core.Configuration.Dashboard.DashboardSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
<section name="HealthChecks" type="Umbraco.Core.Configuration.HealthChecks.HealthChecksSection, Umbraco.Core" requirePermission="false" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
</sectionGroup>
</configSections>
@@ -23,6 +24,7 @@
<add key="owin:appStartup" value="UmbracoDefaultOwinStartup" xdt:Locator="Match(key)" xdt:Transform="InsertIfMissing" />
<add key="Umbraco.ModelsBuilder.Enable" value="false" xdt:Locator="Match(key)" xdt:Transform="InsertIfMissing" />
<add key="Umbraco.ModelsBuilder.ModelsMode" value="Nothing" xdt:Locator="Match(key)" xdt:Transform="InsertIfMissing" />
<add key="umbracoDefaultUILanguage" value="en-US" xdt:Locator="Match(key)" xdt:Transform="SetAttributes(value)" />
</appSettings>
<umbracoConfiguration xdt:Transform="InsertIfMissing">
@@ -30,6 +32,7 @@
<BaseRestExtensions configSource="config\BaseRestExtensions.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<FileSystemProviders configSource="config\FileSystemProviders.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<dashBoard configSource="config\Dashboard.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
<HealthChecks configSource="config\HealthChecks.config" xdt:Locator="Match(configSource)" xdt:Transform="InsertIfMissing" />
</umbracoConfiguration>
<FileSystemProviders xdt:Transform="Remove" />
@@ -368,19 +371,19 @@
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly xdt:Transform="Insert">
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+9 -8
View File
@@ -43,7 +43,7 @@
xdt:Locator="Match(application,alias)"
xdt:Transform="InsertIfMissing" />
<add application="settings" alias="scripts" title="Scripts" type="umbraco.loadScripts, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4"
<add application="settings" alias="scripts" title="Scripts" type="Umbraco.Web.Trees.ScriptTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="settings" alias="dictionary" title="Dictionary" type="umbraco.loadDictionary, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="6"
@@ -102,15 +102,16 @@
xdt:Transform="Remove" />
<!--Users-->
<add application="users" alias="users" title="Users" type="umbraco.loadUsers, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="0"
<add initialize="true" sortOrder="0" alias="users" application="users" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.UserTreeController, umbraco"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="users" alias="userTypes"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="users" alias="userTypes" title="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1"
xdt:Transform="Remove" />
<add application="users" alias="userPermissions"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
<add application="users" alias="userPermissions" title="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2"
xdt:Locator="Match(application,alias)"
xdt:Transform="SetAttributes()" />
xdt:Transform="Remove" />
<!--Members-->
<add initialize="true" sortOrder="0" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco"
Binary file not shown.
-2
View File
@@ -1,2 +0,0 @@
# Usage: on line 2 put the release version, on line 3 put the version comment (example: beta)
7.6.6
+59
View File
@@ -0,0 +1,59 @@
Param(
[string]$GitHubPersonalAccessToken,
[string]$Directory
)
$workingDirectory = $Directory
CD $workingDirectory
# Clone repo
$fullGitUrl = "https://$env:GIT_URL/$env:GIT_REPOSITORYNAME.git"
git clone $fullGitUrl 2>&1 | % { $_.ToString() }
# Remove everything so that unzipping the release later will update everything
# Don't remove the readme file nor the git directory
Write-Host "Cleaning up git directory before adding new version"
Remove-Item -Recurse $workingDirectory\$env:GIT_REPOSITORYNAME\* -Exclude README.md,.git
# Find release zip
$zipsDir = "$workingDirectory\$env:BUILD_DEFINITIONNAME\zips"
$pattern = "UmbracoCms.([0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3}).zip"
Write-Host "Searching for Umbraco release files in $workingDirectory\$zipsDir for a file with pattern $pattern"
$file = (Get-ChildItem $zipsDir | Where-Object { $_.Name -match "$pattern" })
if($file)
{
# Get release name
$version = [regex]::Match($file.Name, $pattern).captures.groups[1].value
$releaseName = "Umbraco $version"
Write-Host "Found $releaseName"
# Unzip into repository to update release
Add-Type -AssemblyName System.IO.Compression.FileSystem
Write-Host "Unzipping $($file.FullName) to $workingDirectory\$env:GIT_REPOSITORYNAME"
[System.IO.Compression.ZipFile]::ExtractToDirectory("$($file.FullName)", "$workingDirectory\$env:GIT_REPOSITORYNAME")
# Telling git who we are
git config --global user.email "coffee@umbraco.com" 2>&1 | % { $_.ToString() }
git config --global user.name "Umbraco HQ" 2>&1 | % { $_.ToString() }
# Commit
CD $env:GIT_REPOSITORYNAME
Write-Host "Committing Umbraco $version Release from Build Output"
git add . 2>&1 | % { $_.ToString() }
git commit -m " Release $releaseName from Build Output" 2>&1 | % { $_.ToString() }
# Tag the release
git tag -a "v$version" -m "v$version"
# Push release to master
$fullGitAuthUrl = "https://$($env:GIT_USERNAME):$GitHubPersonalAccessToken@$env:GIT_URL/$env:GIT_REPOSITORYNAME.git"
git push $fullGitAuthUrl 2>&1 | % { $_.ToString() }
#Push tag to master
git push $fullGitAuthUrl --tags 2>&1 | % { $_.ToString() }
}
else
{
Write-Error "Umbraco release file not found, searched in $workingDirectory\$zipsDir for a file with pattern $pattern - cancelling"
}
+67
View File
@@ -0,0 +1,67 @@
param (
[Parameter(Mandatory=$false)]
[string]
$version,
[Parameter(Mandatory=$false)]
[Alias("mo")]
[switch]
$moduleOnly = $false
)
# the script can run either from the solution root,
# or from the ./build directory - anything else fails
if ([System.IO.Path]::GetFileName($pwd) -eq "build")
{
$mpath = [System.IO.Path]::GetDirectoryName($pwd) + "\build\Modules\"
}
else
{
$mpath = "$pwd\build\Modules\"
}
# look for the module and throw if not found
if (-not [System.IO.Directory]::Exists($mpath + "Umbraco.Build"))
{
Write-Error "Could not locate Umbraco build Powershell module."
break
}
# add the module path (if not already there)
if (-not $env:PSModulePath.Contains($mpath))
{
$env:PSModulePath = "$mpath;$env:PSModulePath"
}
# force-import (or re-import) the module
Write-Host "Import Umbraco build Powershell module"
Import-Module Umbraco.Build -Force -DisableNameChecking
# module only?
if ($moduleOnly)
{
if (-not [string]::IsNullOrWhiteSpace($version))
{
Write-Host "(module only: ignoring version parameter)"
}
else
{
Write-Host "(module only)"
}
break
}
# get build environment
Write-Host "Setup Umbraco build Environment"
$uenv = Get-UmbracoBuildEnv
# set the version if any
if (-not [string]::IsNullOrWhiteSpace($version))
{
Write-Host "Set Umbraco version to $version"
Set-UmbracoVersion $version
}
# full umbraco build
Write-Host "Build Umbraco"
Build-Umbraco
+18
View File
@@ -0,0 +1,18 @@
# Usage: powershell .\setversion.ps1 7.6.8
# Or: powershell .\setversion 7.6.8-beta001
param (
[Parameter(Mandatory=$true)]
[string]
$version
)
# report
Write-Host "Setting Umbraco version to $version"
# import Umbraco Build PowerShell module - $pwd is ./build
$env:PSModulePath = "$pwd\Modules\;$env:PSModulePath"
Import-Module Umbraco.Build -Force -DisableNameChecking
# run commands
$version = Set-UmbracoVersion -Version $version
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
Binary file not shown.
-138
View File
@@ -1,138 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<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://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<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/" />
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
<PackagesConfig>packages.config</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
<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)" $(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'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<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)'" />
<!--
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
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>
-1
View File
@@ -93,7 +93,6 @@
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
+4 -4
View File
@@ -16,19 +16,19 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
+2 -2
View File
@@ -11,5 +11,5 @@ using System.Resources;
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("7.6.6")]
[assembly: AssemblyInformationalVersion("7.6.6")]
[assembly: AssemblyFileVersion("7.7.4")]
[assembly: AssemblyInformationalVersion("7.7.4")]
+26 -1
View File
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using Umbraco.Core.Logging;
@@ -34,7 +35,31 @@ namespace Umbraco.Core
{
return Values;
}
}
}
/// <summary>
/// This method will return a list of IAction's based on a string (letter) list. Each character in the list may represent
/// an IAction. This will associate any found IActions based on the Letter property of the IAction with the character being referenced.
/// </summary>
/// <param name="actions"></param>
/// <returns>returns a list of actions that have an associated letter found in the action string list</returns>
public IEnumerable<IAction> FromActionSymbols(IEnumerable<string> actions)
{
var allActions = Actions.ToArray();
return actions
.Select(c => allActions.FirstOrDefault(a => a.Letter.ToString(CultureInfo.InvariantCulture) == c))
.WhereNotNull()
.ToArray();
}
/// <summary>
/// Returns the string (letter) representation of the actions that make up the actions collection
/// </summary>
/// <returns></returns>
public IEnumerable<string> ToActionSymbols(IEnumerable<IAction> actions)
{
return actions.Select(x => x.Letter.ToString(CultureInfo.InvariantCulture)).ToArray();
}
/// <summary>
/// Gets an Action if it exists.
@@ -0,0 +1,104 @@
using System;
using System.Threading;
using System.Web;
using Umbraco.Core.Security;
namespace Umbraco.Core.Auditing
{
/// <summary>
/// This class is used by events raised from hthe BackofficeUserManager
/// </summary>
public class IdentityAuditEventArgs : EventArgs
{
/// <summary>
/// The action that got triggered from the audit event
/// </summary>
public AuditEvent Action { get; private set; }
/// <summary>
/// Current date/time in UTC format
/// </summary>
public DateTime DateTimeUtc { get; private set; }
/// <summary>
/// The source IP address of the user performing the action
/// </summary>
public string IpAddress { get; private set; }
/// <summary>
/// The user affected by the event raised
/// </summary>
public int AffectedUser { get; private set; }
/// <summary>
/// If a user is perfoming an action on a different user, then this will be set. Otherwise it will be -1
/// </summary>
public int PerformingUser { get; private set; }
/// <summary>
/// An optional comment about the action being logged
/// </summary>
public string Comment { get; private set; }
/// <summary>
/// This property is always empty except in the LoginFailed event for an unknown user trying to login
/// </summary>
public string Username { get; private set; }
/// <summary>
/// Sets the properties on the event being raised, all parameters are optional except for the action being performed
/// </summary>
/// <param name="action">An action based on the AuditEvent enum</param>
/// <param name="ipAddress">The client's IP address. This is usually automatically set but could be overridden if necessary</param>
/// <param name="performingUser">The Id of the user performing the action (if different from the user affected by the action)</param>
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, int performingUser = -1)
{
DateTimeUtc = DateTime.UtcNow;
Action = action;
IpAddress = ipAddress;
PerformingUser = performingUser == -1
? GetCurrentRequestBackofficeUserId()
: performingUser;
}
public IdentityAuditEventArgs(AuditEvent action, string ipAddress, string username, string comment)
{
DateTimeUtc = DateTime.UtcNow;
Action = action;
IpAddress = ipAddress;
Username = username;
Comment = comment;
}
/// <summary>
/// Returns the current logged in backoffice user's Id logging if there is one
/// </summary>
/// <returns></returns>
protected int GetCurrentRequestBackofficeUserId()
{
var userId = -1;
var backOfficeIdentity = Thread.CurrentPrincipal.GetUmbracoIdentity();
if (backOfficeIdentity != null)
int.TryParse(backOfficeIdentity.Id.ToString(), out userId);
return userId;
}
}
public enum AuditEvent
{
AccountLocked,
AccountUnlocked,
ForgotPasswordRequested,
ForgotPasswordChangedSuccess,
LoginFailed,
LoginRequiresVerification,
LoginSucces,
LogoutSuccess,
PasswordChanged,
PasswordReset,
ResetAccessFailedCount
}
}
+4 -2
View File
@@ -55,8 +55,10 @@ namespace Umbraco.Core.Cache
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserCacheKey = "UmbracoUser";
public const string UserPermissionsCacheKey = "UmbracoUserPermissions";
[Obsolete("This is no longer used and will be removed from the codebase in the future")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string UserGroupPermissionsCacheKey = "UmbracoUserGroupPermissions";
[UmbracoWillObsolete("This cache key is only used for legacy business logic caching, remove in v8")]
public const string ContentTypeCacheKey = "UmbracoContentType";
@@ -0,0 +1,34 @@
using System;
namespace Umbraco.Core.CodeAnnotations
{
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
internal class ActionMetadataAttribute : Attribute
{
public string Category { get; private set; }
public string Name { get; private set; }
/// <summary>
/// Constructor used to assign a Category, since no name is assigned it will try to be translated from the language files based on the action's alias
/// </summary>
/// <param name="category"></param>
public ActionMetadataAttribute(string category)
{
if (string.IsNullOrWhiteSpace(category)) throw new ArgumentException("Value cannot be null or whitespace.", "category");
Category = category;
}
/// <summary>
/// Constructor used to assign an explicit name and category
/// </summary>
/// <param name="category"></param>
/// <param name="name"></param>
public ActionMetadataAttribute(string category, string name)
{
if (string.IsNullOrWhiteSpace(category)) throw new ArgumentException("Value cannot be null or whitespace.", "category");
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value cannot be null or whitespace.", "name");
Category = category;
Name = name;
}
}
}
@@ -1,12 +1,19 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Xml.Linq;
using ClientDependency.Core.CompositeFiles.Providers;
using ClientDependency.Core.Config;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
namespace Umbraco.Core.Configuration
{
internal class ClientDependencyConfiguration
{
/// <summary>
/// A utility class for working with CDF config and cache files - use sparingly!
/// </summary>
public class ClientDependencyConfiguration
{
private readonly ILogger _logger;
private readonly string _fileName;
@@ -21,7 +28,7 @@ namespace Umbraco.Core.Configuration
/// <summary>
/// Changes the version number in ClientDependency.config to a random value to avoid stale caches
/// </summary>
internal bool IncreaseVersionNumber()
public bool IncreaseVersionNumber()
{
try
{
@@ -49,5 +56,55 @@ namespace Umbraco.Core.Configuration
return false;
}
/// <summary>
/// Clears the temporary files stored for the ClientDependency folder
/// </summary>
/// <param name="currentHttpContext"></param>
public bool ClearTempFiles(HttpContextBase currentHttpContext)
{
var cdfTempDirectories = new HashSet<string>();
foreach (BaseCompositeFileProcessingProvider provider in ClientDependencySettings.Instance
.CompositeFileProcessingProviderCollection)
{
var path = provider.CompositeFilePath.FullName;
cdfTempDirectories.Add(path);
}
try
{
var fullPath = currentHttpContext.Server.MapPath(XmlFileMapper.FileMapVirtualFolder);
if (fullPath != null)
{
cdfTempDirectories.Add(fullPath);
}
}
catch (Exception ex)
{
//invalid path format or something... try/catch to be safe
LogHelper.Error<ClientDependencyConfiguration>("Could not get path from ClientDependency.config", ex);
}
var success = true;
foreach (var directory in cdfTempDirectories)
{
var directoryInfo = new DirectoryInfo(directory);
if (directoryInfo.Exists == false)
continue;
try
{
directoryInfo.Delete(true);
}
catch (Exception ex)
{
// Something could be locking the directory or the was another error, making sure we don't break the upgrade installer
LogHelper.Error<ClientDependencyConfiguration>("Could not clear temp files", ex);
success = false;
}
}
return success;
}
}
}
@@ -6,7 +6,7 @@ using System.Text;
namespace Umbraco.Core.Configuration
{
public class FileSystemProviderElement : ConfigurationElement
public class FileSystemProviderElement : ConfigurationElement, IFileSystemProviderElement
{
private const string ALIAS_KEY = "alias";
private const string TYPE_KEY = "type";
@@ -38,5 +38,30 @@ namespace Umbraco.Core.Configuration
return ((KeyValueConfigurationCollection)(base[PARAMETERS_KEY]));
}
}
string IFileSystemProviderElement.Alias
{
get { return Alias; }
}
string IFileSystemProviderElement.Type
{
get { return Type; }
}
private IDictionary<string, string> _params;
IDictionary<string, string> IFileSystemProviderElement.Parameters
{
get
{
if (_params != null) return _params;
_params = new Dictionary<string, string>();
foreach (KeyValueConfigurationElement element in Parameters)
{
_params.Add(element.Key, element.Value);
}
return _params;
}
}
}
}
@@ -7,7 +7,7 @@ using System.Text;
namespace Umbraco.Core.Configuration
{
[ConfigurationCollection(typeof(FileSystemProviderElement), AddItemName = "Provider")]
public class FileSystemProviderElementCollection : ConfigurationElementCollection
public class FileSystemProviderElementCollection : ConfigurationElementCollection, IEnumerable<IFileSystemProviderElement>
{
protected override ConfigurationElement CreateNewElement()
{
@@ -19,12 +19,25 @@ namespace Umbraco.Core.Configuration
return ((FileSystemProviderElement)(element)).Alias;
}
new public FileSystemProviderElement this[string key]
public new FileSystemProviderElement this[string key]
{
get
{
return (FileSystemProviderElement)BaseGet(key);
}
}
IEnumerator<IFileSystemProviderElement> IEnumerable<IFileSystemProviderElement>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
yield return BaseGet(i) as IFileSystemProviderElement;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}
@@ -6,7 +6,7 @@ using System.Text;
namespace Umbraco.Core.Configuration
{
public class FileSystemProvidersSection : ConfigurationSection
public class FileSystemProvidersSection : ConfigurationSection, IFileSystemProvidersSection
{
[ConfigurationProperty("", IsDefaultCollection = true, IsRequired = true)]
@@ -14,5 +14,17 @@ namespace Umbraco.Core.Configuration
{
get { return ((FileSystemProviderElementCollection)(base[""])); }
}
private IDictionary<string, IFileSystemProviderElement> _providers;
IDictionary<string, IFileSystemProviderElement> IFileSystemProvidersSection.Providers
{
get
{
if (_providers != null) return _providers;
_providers = Providers.ToDictionary(x => x.Alias, x => x);
return _providers;
}
}
}
}
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Configuration;
using System.Web;
using System.Web.Configuration;
using System.Web.Hosting;
@@ -42,7 +43,6 @@ namespace Umbraco.Core.Configuration
//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,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd,";
#endregion
/// <summary>
@@ -53,6 +53,7 @@ namespace Umbraco.Core.Configuration
_reservedUrlsCache = null;
_reservedPaths = null;
_reservedUrls = null;
HasSmtpServer = null;
}
/// <summary>
@@ -64,7 +65,26 @@ namespace Umbraco.Core.Configuration
ResetInternal();
}
/// <summary>
public static bool HasSmtpServerConfigured(string appPath)
{
if (HasSmtpServer.HasValue) return HasSmtpServer.Value;
var config = WebConfigurationManager.OpenWebConfiguration(appPath);
var settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
if (settings == null || settings.Smtp == null) return false;
if (settings.Smtp.SpecifiedPickupDirectory != null && string.IsNullOrEmpty(settings.Smtp.SpecifiedPickupDirectory.PickupDirectoryLocation) == false)
return true;
if (settings.Smtp.Network != null && string.IsNullOrEmpty(settings.Smtp.Network.Host) == false)
return true;
return false;
}
/// <summary>
/// For testing only
/// </summary>
internal static bool? HasSmtpServer { get; set; }
/// <summary>
/// Gets the reserved urls from web.config.
/// </summary>
/// <value>The reserved urls.</value>
@@ -518,24 +538,41 @@ namespace Umbraco.Core.Configuration
internal static bool ContentCacheXmlStoredInCodeGen
{
get { return ContentCacheXmlStorageLocation == ContentXmlStorage.AspNetTemp; }
get { return LocalTempStorageLocation == LocalTempStorage.AspNetTemp; }
}
internal static ContentXmlStorage ContentCacheXmlStorageLocation
/// <summary>
/// This is the location type to store temporary files such as cache files or other localized files for a given machine
/// </summary>
/// <remarks>
/// Currently used for the xml cache file and the plugin cache files
/// </remarks>
internal static LocalTempStorage LocalTempStorageLocation
{
get
{
{
//there's a bunch of backwards compat config checks here....
//This is the current one
if (ConfigurationManager.AppSettings.ContainsKey("umbracoLocalTempStorage"))
{
return Enum<LocalTempStorage>.Parse(ConfigurationManager.AppSettings["umbracoLocalTempStorage"]);
}
//This one is old
if (ConfigurationManager.AppSettings.ContainsKey("umbracoContentXMLStorage"))
{
return Enum<ContentXmlStorage>.Parse(ConfigurationManager.AppSettings["umbracoContentXMLStorage"]);
}
return Enum<LocalTempStorage>.Parse(ConfigurationManager.AppSettings["umbracoContentXMLStorage"]);
}
//This one is older
if (ConfigurationManager.AppSettings.ContainsKey("umbracoContentXMLUseLocalTemp"))
{
return bool.Parse(ConfigurationManager.AppSettings["umbracoContentXMLUseLocalTemp"])
? ContentXmlStorage.AspNetTemp
: ContentXmlStorage.Default;
? LocalTempStorage.AspNetTemp
: LocalTempStorage.Default;
}
return ContentXmlStorage.Default;
return LocalTempStorage.Default;
}
}
@@ -9,7 +9,7 @@ using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Configuration.Grid
{
class GridEditorsConfig : IGridEditorsConfig
internal class GridEditorsConfig : IGridEditorsConfig
{
private readonly ILogger _logger;
private readonly IRuntimeCacheProvider _runtimeCache;
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
namespace Umbraco.Core.Configuration.HealthChecks
{
public class DisabledHealthCheckElement : ConfigurationElement, IDisabledHealthCheck
{
private const string IdKey = "id";
private const string DisabledOnKey = "disabledOn";
private const string DisabledByKey = "disabledBy";
[ConfigurationProperty(IdKey, IsKey = true, IsRequired = true)]
public Guid Id
{
get
{
return ((Guid)(base[IdKey]));
}
}
[ConfigurationProperty(DisabledOnKey, IsKey = false, IsRequired = false)]
public DateTime DisabledOn
{
get
{
return ((DateTime)(base[DisabledOnKey]));
}
}
[ConfigurationProperty(DisabledByKey, IsKey = false, IsRequired = false)]
public int DisabledBy
{
get
{
return ((int)(base[DisabledByKey]));
}
}
}
}
@@ -0,0 +1,40 @@
using System.Collections.Generic;
using System.Configuration;
namespace Umbraco.Core.Configuration.HealthChecks
{
[ConfigurationCollection(typeof(DisabledHealthCheckElement), AddItemName = "check")]
public class DisabledHealthChecksElementCollection : ConfigurationElementCollection, IEnumerable<IDisabledHealthCheck>
{
protected override ConfigurationElement CreateNewElement()
{
return new DisabledHealthCheckElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((DisabledHealthCheckElement)(element)).Id;
}
public new DisabledHealthCheckElement this[string key]
{
get
{
return (DisabledHealthCheckElement)BaseGet(key);
}
}
IEnumerator<IDisabledHealthCheck> IEnumerable<IDisabledHealthCheck>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
yield return BaseGet(i) as DisabledHealthCheckElement;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}
@@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.Configuration;
namespace Umbraco.Core.Configuration.HealthChecks
{
public class HealthCheckNotificationSettingsElement : ConfigurationElement, IHealthCheckNotificationSettings
{
private const string EnabledKey = "enabled";
private const string FirstRunTimeKey = "firstRunTime";
private const string PeriodKey = "periodInHours";
private const string NotificationMethodsKey = "notificationMethods";
private const string DisabledChecksKey = "disabledChecks";
[ConfigurationProperty(EnabledKey, IsRequired = true)]
public bool Enabled
{
get
{
return (bool)base[EnabledKey];
}
}
[ConfigurationProperty(FirstRunTimeKey, IsRequired = false)]
public string FirstRunTime
{
get
{
return (string)base[FirstRunTimeKey];
}
}
[ConfigurationProperty(PeriodKey, IsRequired = true)]
public int PeriodInHours
{
get
{
return (int)base[PeriodKey];
}
}
[ConfigurationProperty(NotificationMethodsKey, IsDefaultCollection = true, IsRequired = false)]
public NotificationMethodsElementCollection NotificationMethods
{
get
{
return (NotificationMethodsElementCollection)base[NotificationMethodsKey];
}
}
[ConfigurationProperty(DisabledChecksKey, IsDefaultCollection = false, IsRequired = false)]
public DisabledHealthChecksElementCollection DisabledChecks
{
get
{
return (DisabledHealthChecksElementCollection)base[DisabledChecksKey];
}
}
bool IHealthCheckNotificationSettings.Enabled
{
get { return Enabled; }
}
string IHealthCheckNotificationSettings.FirstRunTime
{
get { return FirstRunTime; }
}
int IHealthCheckNotificationSettings.PeriodInHours
{
get { return PeriodInHours; }
}
IReadOnlyDictionary<string, INotificationMethod> IHealthCheckNotificationSettings.NotificationMethods
{
get { return NotificationMethods; }
}
IEnumerable<IDisabledHealthCheck> IHealthCheckNotificationSettings.DisabledChecks
{
get { return DisabledChecks; }
}
}
}
@@ -0,0 +1,8 @@
namespace Umbraco.Core.Configuration.HealthChecks
{
public enum HealthCheckNotificationVerbosity
{
Summary,
Detailed
}
}
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Configuration;
namespace Umbraco.Core.Configuration.HealthChecks
{
public class HealthChecksSection : ConfigurationSection, IHealthChecks
{
private const string DisabledChecksKey = "disabledChecks";
private const string NotificationSettingsKey = "notificationSettings";
[ConfigurationProperty(DisabledChecksKey)]
public DisabledHealthChecksElementCollection DisabledChecks
{
get { return ((DisabledHealthChecksElementCollection)(base[DisabledChecksKey])); }
}
[ConfigurationProperty(NotificationSettingsKey, IsRequired = true)]
public HealthCheckNotificationSettingsElement NotificationSettings
{
get { return ((HealthCheckNotificationSettingsElement)(base[NotificationSettingsKey])); }
}
IEnumerable<IDisabledHealthCheck> IHealthChecks.DisabledChecks
{
get { return DisabledChecks; }
}
IHealthCheckNotificationSettings IHealthChecks.NotificationSettings
{
get { return NotificationSettings; }
}
}
}
@@ -0,0 +1,11 @@
using System;
namespace Umbraco.Core.Configuration.HealthChecks
{
public interface IDisabledHealthCheck
{
Guid Id { get; }
DateTime DisabledOn { get; }
int DisabledBy { get; }
}
}
@@ -0,0 +1,13 @@
using System.Collections.Generic;
namespace Umbraco.Core.Configuration.HealthChecks
{
public interface IHealthCheckNotificationSettings
{
bool Enabled { get; }
string FirstRunTime { get; }
int PeriodInHours { get; }
IReadOnlyDictionary<string, INotificationMethod> NotificationMethods { get; }
IEnumerable<IDisabledHealthCheck> DisabledChecks { get; }
}
}
@@ -0,0 +1,10 @@
using System.Collections.Generic;
namespace Umbraco.Core.Configuration.HealthChecks
{
public interface IHealthChecks
{
IEnumerable<IDisabledHealthCheck> DisabledChecks { get; }
IHealthCheckNotificationSettings NotificationSettings { get; }
}
}
@@ -0,0 +1,13 @@
using System.Collections.Generic;
namespace Umbraco.Core.Configuration.HealthChecks
{
public interface INotificationMethod
{
string Alias { get; }
bool Enabled { get; }
HealthCheckNotificationVerbosity Verbosity { get; }
bool FailureOnly { get; }
IReadOnlyDictionary<string, INotificationMethodSettings> Settings { get; }
}
}
@@ -0,0 +1,8 @@
namespace Umbraco.Core.Configuration.HealthChecks
{
public interface INotificationMethodSettings
{
string Key { get; }
string Value { get; }
}
}
@@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.Configuration;
namespace Umbraco.Core.Configuration.HealthChecks
{
public class NotificationMethodElement : ConfigurationElement, INotificationMethod
{
private const string AliasKey = "alias";
private const string EnabledKey = "enabled";
private const string VerbosityKey = "verbosity";
private const string FailureonlyKey = "failureOnly";
private const string SettingsKey = "settings";
[ConfigurationProperty(AliasKey, IsKey = true, IsRequired = true)]
public string Alias
{
get
{
return (string)base[AliasKey];
}
}
[ConfigurationProperty(EnabledKey, IsKey = true, IsRequired = true)]
public bool Enabled
{
get
{
return (bool)base[EnabledKey];
}
}
[ConfigurationProperty(VerbosityKey, IsRequired = true)]
public HealthCheckNotificationVerbosity Verbosity
{
get
{
return (HealthCheckNotificationVerbosity)base[VerbosityKey];
}
}
[ConfigurationProperty(FailureonlyKey, IsRequired = false)]
public bool FailureOnly
{
get
{
return (bool)base[FailureonlyKey];
}
}
[ConfigurationProperty(SettingsKey, IsDefaultCollection = true, IsRequired = false)]
public NotificationMethodSettingsElementCollection Settings
{
get
{
return (NotificationMethodSettingsElementCollection)base[SettingsKey];
}
}
string INotificationMethod.Alias
{
get { return Alias; }
}
bool INotificationMethod.Enabled
{
get { return Enabled; }
}
HealthCheckNotificationVerbosity INotificationMethod.Verbosity
{
get { return Verbosity; }
}
bool INotificationMethod.FailureOnly
{
get { return FailureOnly; }
}
IReadOnlyDictionary<string, INotificationMethodSettings> INotificationMethod.Settings
{
get { return Settings; }
}
}
}
@@ -0,0 +1,28 @@
using System.Configuration;
namespace Umbraco.Core.Configuration.HealthChecks
{
public class NotificationMethodSettingsElement : ConfigurationElement, INotificationMethodSettings
{
private const string KeyKey = "key";
private const string ValueKey = "value";
[ConfigurationProperty(KeyKey, IsKey = true, IsRequired = true)]
public string Key
{
get
{
return (string)base[KeyKey];
}
}
[ConfigurationProperty(ValueKey, IsRequired = true)]
public string Value
{
get
{
return (string)base[ValueKey];
}
}
}
}
@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
namespace Umbraco.Core.Configuration.HealthChecks
{
[ConfigurationCollection(typeof(NotificationMethodSettingsElement), AddItemName = "add")]
public class NotificationMethodSettingsElementCollection : ConfigurationElementCollection, IEnumerable<INotificationMethodSettings>, IReadOnlyDictionary<string, INotificationMethodSettings>
{
protected override ConfigurationElement CreateNewElement()
{
return new NotificationMethodSettingsElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((NotificationMethodSettingsElement)(element)).Key;
}
IEnumerator<KeyValuePair<string, INotificationMethodSettings>> IEnumerable<KeyValuePair<string, INotificationMethodSettings>>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
var val = (NotificationMethodSettingsElement)BaseGet(i);
var key = (string)BaseGetKey(i);
yield return new KeyValuePair<string, INotificationMethodSettings>(key, val);
}
}
IEnumerator<INotificationMethodSettings> IEnumerable<INotificationMethodSettings>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
yield return (NotificationMethodSettingsElement)BaseGet(i);
}
}
bool IReadOnlyDictionary<string, INotificationMethodSettings>.ContainsKey(string key)
{
return ((IReadOnlyDictionary<string, INotificationMethodSettings>)this).Keys.Any(x => x == key);
}
bool IReadOnlyDictionary<string, INotificationMethodSettings>.TryGetValue(string key, out INotificationMethodSettings value)
{
try
{
var val = (NotificationMethodSettingsElement)BaseGet(key);
value = val;
return true;
}
catch (Exception)
{
value = null;
return false;
}
}
INotificationMethodSettings IReadOnlyDictionary<string, INotificationMethodSettings>.this[string key]
{
get { return (NotificationMethodSettingsElement)BaseGet(key); }
}
IEnumerable<string> IReadOnlyDictionary<string, INotificationMethodSettings>.Keys
{
get { return BaseGetAllKeys().Cast<string>(); }
}
IEnumerable<INotificationMethodSettings> IReadOnlyDictionary<string, INotificationMethodSettings>.Values
{
get
{
for (var i = 0; i < Count; i++)
{
yield return (NotificationMethodSettingsElement)BaseGet(i);
}
}
}
}
}
@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
namespace Umbraco.Core.Configuration.HealthChecks
{
[ConfigurationCollection(typeof(NotificationMethodElement), AddItemName = "notificationMethod")]
public class NotificationMethodsElementCollection : ConfigurationElementCollection, IEnumerable<INotificationMethod>, IReadOnlyDictionary<string, INotificationMethod>
{
protected override ConfigurationElement CreateNewElement()
{
return new NotificationMethodElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((NotificationMethodElement)(element)).Alias;
}
IEnumerator<KeyValuePair<string, INotificationMethod>> IEnumerable<KeyValuePair<string, INotificationMethod>>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
var val = (NotificationMethodElement)BaseGet(i);
var key = (string)BaseGetKey(i);
yield return new KeyValuePair<string, INotificationMethod>(key, val);
}
}
IEnumerator<INotificationMethod> IEnumerable<INotificationMethod>.GetEnumerator()
{
for (var i = 0; i < Count; i++)
{
yield return (NotificationMethodElement)BaseGet(i);
}
}
bool IReadOnlyDictionary<string, INotificationMethod>.ContainsKey(string key)
{
return ((IReadOnlyDictionary<string, INotificationMethod>) this).Keys.Any(x => x == key);
}
bool IReadOnlyDictionary<string, INotificationMethod>.TryGetValue(string key, out INotificationMethod value)
{
try
{
var val = (NotificationMethodElement)BaseGet(key);
value = val;
return true;
}
catch (Exception)
{
value = null;
return false;
}
}
INotificationMethod IReadOnlyDictionary<string, INotificationMethod>.this[string key]
{
get { return (NotificationMethodElement)BaseGet(key); }
}
IEnumerable<string> IReadOnlyDictionary<string, INotificationMethod>.Keys
{
get { return BaseGetAllKeys().Cast<string>(); }
}
IEnumerable<INotificationMethod> IReadOnlyDictionary<string, INotificationMethod>.Values
{
get
{
for (var i = 0; i < Count; i++)
{
yield return (NotificationMethodElement)BaseGet(i);
}
}
}
}
}
@@ -0,0 +1,11 @@
using System.Collections.Generic;
namespace Umbraco.Core.Configuration
{
public interface IFileSystemProviderElement
{
string Alias { get; }
string Type { get; }
IDictionary<string, string> Parameters { get; }
}
}
@@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace Umbraco.Core.Configuration
{
public interface IFileSystemProvidersSection
{
IDictionary<string, IFileSystemProviderElement> Providers { get; }
}
}
@@ -1,6 +1,6 @@
namespace Umbraco.Core.Configuration
{
internal enum ContentXmlStorage
internal enum LocalTempStorage
{
Default,
AspNetTemp,
@@ -9,6 +9,7 @@ using Umbraco.Core.Cache;
using Umbraco.Core.Configuration.BaseRest;
using Umbraco.Core.Configuration.Dashboard;
using Umbraco.Core.Configuration.Grid;
using Umbraco.Core.Configuration.HealthChecks;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Logging;
@@ -52,6 +53,12 @@ namespace Umbraco.Core.Configuration
var dashboardConfig = ConfigurationManager.GetSection("umbracoConfiguration/dashBoard") as IDashboardSection;
SetDashboardSettings(dashboardConfig);
}
if (_healthChecks == null)
{
var healthCheckConfig = ConfigurationManager.GetSection("umbracoConfiguration/HealthChecks") as IHealthChecks;
SetHealthCheckSettings(healthCheckConfig);
}
}
/// <summary>
@@ -60,18 +67,36 @@ namespace Umbraco.Core.Configuration
/// <param name="umbracoSettings"></param>
/// <param name="baseRestSettings"></param>
/// <param name="dashboardSettings"></param>
public UmbracoConfig(IUmbracoSettingsSection umbracoSettings, IBaseRestSection baseRestSettings, IDashboardSection dashboardSettings)
/// <param name="healthChecks"></param>
public UmbracoConfig(IUmbracoSettingsSection umbracoSettings, IBaseRestSection baseRestSettings, IDashboardSection dashboardSettings, IHealthChecks healthChecks)
{
SetHealthCheckSettings(healthChecks);
SetUmbracoSettings(umbracoSettings);
SetBaseRestExtensions(baseRestSettings);
SetDashboardSettings(dashboardSettings);
}
private IHealthChecks _healthChecks;
private IDashboardSection _dashboardSection;
private IUmbracoSettingsSection _umbracoSettings;
private IBaseRestSection _baseRestExtensions;
private IGridConfig _gridConfig;
/// <summary>
/// Gets the IHealthCheck config
/// </summary>
public IHealthChecks HealthCheck()
{
if (_healthChecks == null)
{
var ex = new ConfigurationErrorsException("Could not load the " + typeof(IHealthChecks) + " from config file, ensure the web.config and healthchecks.config files are formatted correctly");
LogHelper.Error<UmbracoConfig>("Config error", ex);
throw ex;
}
return _healthChecks;
}
/// <summary>
/// Gets the IDashboardSection
/// </summary>
@@ -86,14 +111,23 @@ namespace Umbraco.Core.Configuration
return _dashboardSection;
}
/// <summary>
/// Only for testing
/// </summary>
/// <param name="value"></param>
public void SetDashboardSettings(IDashboardSection value)
{
_dashboardSection = value;
}
/// <summary>
/// Only for testing
/// </summary>
/// <param name="value"></param>
internal void SetDashboardSettings(IDashboardSection value)
public void SetHealthCheckSettings(IHealthChecks value)
{
_dashboardSection = value;
_healthChecks = value;
}
/// <summary>
@@ -357,6 +357,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
string IContentSection.LoginBackgroundImage
{
get { return LoginBackgroundImage; }
}
}
}
}
@@ -1,8 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
internal class HelpElement : ConfigurationElement, IHelpSection
{
[ConfigurationProperty("defaultUrl", DefaultValue = "http://our.umbraco.org/wiki/umbraco-help/{0}/{1}")]
@@ -74,6 +74,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
bool EnablePropertyValueConverters { get; }
string LoginBackgroundImage { get; }
string LoginBackgroundImage { get; }
}
}
@@ -1,7 +1,11 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
{
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
public interface IHelpSection : IUmbracoConfigurationSection
{
string DefaultUrl { get; }
@@ -1,5 +1,10 @@
namespace Umbraco.Core.Configuration.UmbracoSettings
using System;
using System.ComponentModel;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
public interface ILink
{
string Application { get; }
@@ -5,11 +5,23 @@
bool KeepUserLoggedIn { get; }
bool HideDisabledUsersInBackoffice { get; }
/// <summary>
/// Used to enable/disable the forgot password functionality on the back office login screen
/// </summary>
bool AllowPasswordReset { get; }
string AuthCookieName { get; }
string AuthCookieDomain { get; }
string AuthCookieDomain { get; }
/// <summary>
/// A boolean indicating that by default the email address will be the username
/// </summary>
/// <remarks>
/// Even if this is true and the username is different from the email in the database, the username field will still be shown.
/// When this is false, the username and email fields will be shown in the user section.
/// </remarks>
bool UsernameIsEmail { get; }
}
}
@@ -1,4 +1,7 @@
namespace Umbraco.Core.Configuration.UmbracoSettings
using System;
using System.ComponentModel;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
public interface IUmbracoSettingsSection : IUmbracoConfigurationSection
{
@@ -24,6 +27,8 @@
IProvidersSection Providers { get; }
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
IHelpSection Help { get; }
IWebRoutingSection WebRouting { get; }
@@ -1,7 +1,11 @@
using System.Configuration;
using System;
using System.ComponentModel;
using System.Configuration;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
internal class LinkElement : ConfigurationElement, ILink
{
[ConfigurationProperty("application")]
@@ -1,8 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
namespace Umbraco.Core.Configuration.UmbracoSettings
{
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
internal class LinksCollection : ConfigurationElementCollection, IEnumerable<ILink>
{
protected override ConfigurationElement CreateNewElement()
@@ -16,12 +16,28 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return GetOptionalTextElement("hideDisabledUsersInBackoffice", false); }
}
/// <summary>
/// Used to enable/disable the forgot password functionality on the back office login screen
/// </summary>
[ConfigurationProperty("allowPasswordReset")]
internal InnerTextConfigurationElement<bool> AllowPasswordReset
{
get { return GetOptionalTextElement("allowPasswordReset", true); }
}
/// <summary>
/// A boolean indicating that by default the email address will be the username
/// </summary>
/// <remarks>
/// Even if this is true and the username is different from the email in the database, the username field will still be shown.
/// When this is false, the username and email fields will be shown in the user section.
/// </remarks>
[ConfigurationProperty("usernameIsEmail")]
internal InnerTextConfigurationElement<bool> UsernameIsEmail
{
get { return GetOptionalTextElement("usernameIsEmail", true); }
}
[ConfigurationProperty("authCookieName")]
internal InnerTextConfigurationElement<string> AuthCookieName
{
@@ -44,11 +60,26 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return HideDisabledUsersInBackoffice; }
}
/// <summary>
/// Used to enable/disable the forgot password functionality on the back office login screen
/// </summary>
bool ISecuritySection.AllowPasswordReset
{
get { return AllowPasswordReset; }
}
/// <summary>
/// A boolean indicating that by default the email address will be the username
/// </summary>
/// <remarks>
/// Even if this is true and the username is different from the email in the database, the username field will still be shown.
/// When this is false, the username and email fields will be shown in the user section.
/// </remarks>
bool ISecuritySection.UsernameIsEmail
{
get { return UsernameIsEmail; }
}
string ISecuritySection.AuthCookieName
{
get { return AuthCookieName; }
@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Linq;
@@ -183,6 +184,8 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
get { return Providers; }
}
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This is no longer used and will be removed in future versions")]
IHelpSection IUmbracoSettingsSection.Help
{
get { return Help; }
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Configuration
{
public class UmbracoVersion
{
private static readonly Version Version = new Version("7.6.6");
private static readonly Version Version = new Version("7.7.4");
/// <summary>
/// Gets the current version of Umbraco.
+8 -1
View File
@@ -56,7 +56,12 @@
/// <summary>
/// alias for the content tree.
/// </summary>
public const string Content = "content";
public const string Content = "content";
/// <summary>
/// alias for the content blueprint tree.
/// </summary>
public const string ContentBlueprints = "contentBlueprints";
/// <summary>
/// alias for the member tree.
@@ -118,6 +123,8 @@
public const string Scripts = "scripts";
public const string Users = "users";
//TODO: Fill in the rest!
}
}
@@ -12,6 +12,14 @@ namespace Umbraco.Core
/// </summary>
public static class Conventions
{
internal static class PermissionCategories
{
public const string ContentCategory = "content";
public const string AdministrationCategory = "administration";
public const string StructureCategory = "structure";
public const string OtherCategory = "other";
}
public static class PublicAccess
{
public const string MemberUsernameRuleType = "MemberUsername";
+21 -1
View File
@@ -68,12 +68,22 @@ namespace Umbraco.Core
/// Guid for a Document object.
/// </summary>
public const string Document = "C66BA18E-EAF3-4CFF-8A22-41B16D66A972";
/// <summary>
/// Guid for a Document object.
/// </summary>
public static readonly Guid DocumentGuid = new Guid(Document);
/// <summary>
/// Guid for a Document Blueprint object.
/// </summary>
public const string DocumentBlueprint = "6EBEF410-03AA-48CF-A792-E1C1CB087ACA";
/// <summary>
/// Guid for a Document object.
/// </summary>
public static readonly Guid DocumentBlueprintGuid = new Guid(DocumentBlueprint);
/// <summary>
/// Guid for a Document Type object.
/// </summary>
@@ -222,6 +232,16 @@ namespace Umbraco.Core
/// Guid for a Forms DataSource.
/// </summary>
public static readonly Guid LanguageGuid = new Guid(Language);
/// <summary>
/// Guid for an Identifier Reservation.
/// </summary>
public const string IdReservation = "92849B1E-3904-4713-9356-F646F87C25F4";
/// <summary>
/// Guid for an Identifier Reservation.
/// </summary>
public static readonly Guid IdReservationGuid = new Guid(IdReservation);
}
}
}
@@ -437,6 +437,11 @@ namespace Umbraco.Core
/// </summary>
public const string EmailAddressAlias = "Umbraco.EmailAddress";
/// <summary>
/// Alias for the nested content property editor.
/// </summary>
public const string NestedContentAlias = "Umbraco.NestedContent";
public static class PreValueKeys
{
/// <summary>
+5 -1
View File
@@ -8,6 +8,9 @@ namespace Umbraco.Core
public static class Security
{
public const string AdminGroupAlias = "admin";
public const string TranslatorGroupAlias = "translator";
public const string BackOfficeAuthenticationType = "UmbracoBackOffice";
public const string BackOfficeExternalAuthenticationType = "UmbracoExternalCookie";
public const string BackOfficeExternalCookieName = "UMB_EXTLOGIN";
@@ -15,7 +18,8 @@ namespace Umbraco.Core
public const string BackOfficeTwoFactorAuthenticationType = "UmbracoTwoFactorCookie";
internal const string EmptyPasswordPrefix = "___UIDEMPTYPWORD__";
internal const string ForceReAuthFlag = "umbraco-force-auth";
/// <summary>
/// The prefix used for external identity providers for their authentication type
/// </summary>
+23
View File
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Web;
using AutoMapper;
@@ -399,6 +400,28 @@ namespace Umbraco.Core
if (ApplicationContext.IsConfigured == false) return;
if (ApplicationContext.DatabaseContext.IsDatabaseConfigured == false) return;
// deal with localdb
var databaseContext = ApplicationContext.DatabaseContext;
var localdbex = new Regex(@"\(localdb\)\\([a-zA-Z0-9-_]+)(;|$)");
var m = localdbex.Match(databaseContext.ConnectionString);
if (m.Success)
{
var instanceName = m.Groups[1].Value;
ProfilingLogger.Logger.Info<CoreBootManager>(string.Format("LocalDb instance \"{0}\"", instanceName));
var localDb = new LocalDb();
if (localDb.IsAvailable == false)
throw new UmbracoStartupFailedException("Umbraco cannot start. LocalDb is not available.");
if (localDb.InstanceExists(m.Groups[1].Value) == false)
{
if (localDb.CreateInstance(instanceName) == false)
throw new UmbracoStartupFailedException(string.Format("Umbraco cannot start. LocalDb cannot create instance \"{0}\".", instanceName));
if (localDb.StartInstance(instanceName) == false)
throw new UmbracoStartupFailedException(string.Format("Umbraco cannot start. LocalDb cannot start instance \"{0}\".", instanceName));
}
}
//try now
if (ApplicationContext.DatabaseContext.CanConnect)
return;
+37 -1
View File
@@ -41,7 +41,43 @@ namespace Umbraco.Core
Hour,
Minute,
Second
}
/// <summary>
/// Calculates the number of minutes from a date time, on a rolling daily basis (so if
/// date time is before the time, calculate onto next day)
/// </summary>
/// <param name="fromDateTime">Date to start from</param>
/// <param name="scheduledTime">Time to compare against (in Hmm form, e.g. 330, 2200)</param>
/// <returns></returns>
public static int PeriodicMinutesFrom(this DateTime fromDateTime, string scheduledTime)
{
// Ensure time provided is 4 digits long
if (scheduledTime.Length == 3)
{
scheduledTime = "0" + scheduledTime;
}
var scheduledHour = int.Parse(scheduledTime.Substring(0, 2));
var scheduledMinute = int.Parse(scheduledTime.Substring(2));
DateTime scheduledDateTime;
if (IsScheduledInRemainingDay(fromDateTime, scheduledHour, scheduledMinute))
{
scheduledDateTime = new DateTime(fromDateTime.Year, fromDateTime.Month, fromDateTime.Day, scheduledHour, scheduledMinute, 0);
}
else
{
var nextDay = fromDateTime.AddDays(1);
scheduledDateTime = new DateTime(nextDay.Year, nextDay.Month, nextDay.Day, scheduledHour, scheduledMinute, 0);
}
return (int)(scheduledDateTime - fromDateTime).TotalMinutes;
}
private static bool IsScheduledInRemainingDay(DateTime fromDateTime, int scheduledHour, int scheduledMinute)
{
return scheduledHour > fromDateTime.Hour || (scheduledHour == fromDateTime.Hour && scheduledMinute >= fromDateTime.Minute);
}
}
}
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Threading;
namespace Umbraco.Core.Deploy
{
@@ -38,5 +39,10 @@ namespace Umbraco.Core.Deploy
/// <param name="key">The key of the item.</param>
/// <returns>The item with the specified key and type, if any, else null.</returns>
T Item<T>(string key) where T : class;
///// <summary>
///// Gets the global deployment cancellation token.
///// </summary>
//CancellationToken CancellationToken { get; }
}
}
@@ -0,0 +1,25 @@
namespace Umbraco.Core.Deploy
{
/// <summary>
/// Provides a method to retrieve an artifact's unique identifier.
/// </summary>
/// <remarks>
/// Artifacts are uniquely identified by their <see cref="Udi"/>, however they represent
/// elements in Umbraco that may be uniquely identified by another value. For example,
/// a content type is uniquely identified by its alias. If someone creates a new content
/// type, and tries to deploy it to a remote environment where a content type with the
/// same alias already exists, both content types end up having different <see cref="Udi"/>
/// but the same alias. By default, Deploy would fail and throw when trying to save the
/// new content type (duplicate alias). However, if the connector also implements this
/// interface, the situation can be detected beforehand and reported in a nicer way.
/// </remarks>
public interface IUniqueIdentifyingServiceConnector
{
/// <summary>
/// Gets the unique identifier of the specified artifact.
/// </summary>
/// <param name="artifact">The artifact.</param>
/// <returns>The unique identifier.</returns>
string GetUniqueIdentifier(IArtifact artifact);
}
}
+114
View File
@@ -0,0 +1,114 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Routing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Events;
namespace Umbraco.Core
{
/// <summary>
/// A utility class for sending emails
/// </summary>
public class EmailSender : IEmailSender
{
//TODO: This should encapsulate a BackgroundTaskRunner with a queue to send these emails!
private readonly bool _enableEvents;
/// <summary>
/// Default constructor
/// </summary>
public EmailSender() : this(false)
{
}
internal EmailSender(bool enableEvents)
{
_enableEvents = enableEvents;
}
private static readonly Lazy<bool> SmtpConfigured = new Lazy<bool>(() => GlobalSettings.HasSmtpServerConfigured(HttpRuntime.AppDomainAppVirtualPath));
/// <summary>
/// Sends the message non-async
/// </summary>
/// <param name="message"></param>
public void Send(MailMessage message)
{
if (SmtpConfigured.Value == false && _enableEvents)
{
OnSendEmail(new SendEmailEventArgs(message));
}
else
{
using (var client = new SmtpClient())
{
client.Send(message);
}
}
}
/// <summary>
/// Sends the message async
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public async Task SendAsync(MailMessage message)
{
if (SmtpConfigured.Value == false && _enableEvents)
{
OnSendEmail(new SendEmailEventArgs(message));
}
else
{
using (var client = new SmtpClient())
{
if (client.DeliveryMethod == SmtpDeliveryMethod.Network)
{
await client.SendMailAsync(message);
}
else
{
client.Send(message);
}
}
}
}
/// <summary>
/// Returns true if the application should be able to send a required application email
/// </summary>
/// <remarks>
/// We assume this is possible if either an event handler is registered or an smtp server is configured
/// </remarks>
internal static bool CanSendRequiredEmail
{
get { return EventHandlerRegistered || SmtpConfigured.Value; }
}
/// <summary>
/// returns true if an event handler has been registered
/// </summary>
internal static bool EventHandlerRegistered
{
get { return SendEmail != null; }
}
/// <summary>
/// An event that is raised when no smtp server is configured if events are enabled
/// </summary>
internal static event EventHandler<SendEmailEventArgs> SendEmail;
private static void OnSendEmail(SendEmailEventArgs e)
{
var handler = SendEmail;
if (handler != null) handler(null, e);
}
}
}
+14
View File
@@ -111,6 +111,9 @@ namespace Umbraco.Core
/// <returns></returns>
public static bool ContainsAll<TSource>(this IEnumerable<TSource> source, IEnumerable<TSource> other)
{
if (source == null) throw new ArgumentNullException("source");
if (other == null) throw new ArgumentNullException("other");
return other.Except(source).Any() == false;
}
@@ -295,5 +298,16 @@ namespace Umbraco.Core
return list1Groups.Count == list2Groups.Count
&& list1Groups.All(g => g.Count() == list2Groups[g.Key].Count());
}
public static IEnumerable<T> SkipLast<T>(this IEnumerable<T> source)
{
using (var e = source.GetEnumerator())
{
if (e.MoveNext() == false) yield break;
for (var value = e.Current; e.MoveNext(); value = e.Current)
yield return value;
}
}
}
}
@@ -0,0 +1,15 @@
using System;
using System.Net.Mail;
namespace Umbraco.Core.Events
{
internal class SendEmailEventArgs : EventArgs
{
public MailMessage Message { get; private set; }
public SendEmailEventArgs(MailMessage message)
{
Message = message;
}
}
}
+15 -2
View File
@@ -217,8 +217,21 @@ namespace Umbraco.Core
public static MemberInfo GetMemberInfo<T, TReturn>(Expression<Func<T, TReturn>> fromExpression)
{
if (fromExpression == null) return null;
var body = fromExpression.Body as MemberExpression;
return body != null ? body.Member : null;
MemberExpression me;
switch (fromExpression.Body.NodeType)
{
case ExpressionType.Convert:
case ExpressionType.ConvertChecked:
var ue = fromExpression.Body as UnaryExpression;
me = ((ue != null) ? ue.Operand : null) as MemberExpression;
break;
default:
me = fromExpression.Body as MemberExpression;
break;
}
return me != null ? me.Member : null;
}
/// <summary>
+10 -6
View File
@@ -32,7 +32,11 @@ namespace Umbraco.Core
public GuidUdi(Uri uriValue)
: base(uriValue)
{
Guid = Guid.Parse(uriValue.AbsolutePath.TrimStart('/'));
Guid guid;
if (Guid.TryParse(uriValue.AbsolutePath.TrimStart('/'), out guid) == false)
throw new FormatException("Url \"" + uriValue + "\" is not a guid entity id.");
Guid = guid;
}
/// <summary>
@@ -43,16 +47,17 @@ namespace Umbraco.Core
public new static GuidUdi Parse(string s)
{
var udi = Udi.Parse(s);
if (!(udi is GuidUdi))
if (udi is GuidUdi == false)
throw new FormatException("String \"" + s + "\" is not a guid entity id.");
return (GuidUdi)udi;
return (GuidUdi) udi;
}
public static bool TryParse(string s, out GuidUdi udi)
{
Udi tmp;
udi = null;
if (!TryParse(s, out tmp)) return false;
if (TryParse(s, out tmp) == false) return false;
udi = tmp as GuidUdi;
return udi != null;
}
@@ -75,10 +80,9 @@ namespace Umbraco.Core
get { return Guid == Guid.Empty; }
}
/// <inheritdoc/>
public GuidUdi EnsureClosed()
{
base.EnsureNotRoot();
EnsureNotRoot();
return this;
}
}
+13
View File
@@ -0,0 +1,13 @@
using System.Net.Mail;
using System.Threading.Tasks;
namespace Umbraco.Core
{
/// <summary>
/// Simple abstraction to send an email message
/// </summary>
public interface IEmailSender
{
Task SendAsync(MailMessage message);
}
}
@@ -11,7 +11,7 @@ namespace Umbraco.Core.IO
{
public class FileSystemProviderManager
{
private readonly FileSystemProvidersSection _config;
private readonly IFileSystemProvidersSection _config;
private readonly ConcurrentSet<ShadowWrapper> _wrappers = new ConcurrentSet<ShadowWrapper>();
private readonly ConcurrentDictionary<string, ProviderConstructionInfo> _providerLookup = new ConcurrentDictionary<string, ProviderConstructionInfo>();
@@ -28,16 +28,45 @@ namespace Umbraco.Core.IO
private ShadowWrapper _mvcViewsFileSystem;
#region Singleton & Constructor
private static readonly FileSystemProviderManager Instance = new FileSystemProviderManager();
private static volatile FileSystemProviderManager _instance;
private static readonly object _instanceLocker = new object();
public static FileSystemProviderManager Current
{
get { return Instance; }
get
{
if (_instance != null) return _instance;
lock (_instanceLocker)
{
return _instance ?? (_instance = new FileSystemProviderManager());
}
}
}
/// <summary>
/// For tests only, allows setting the value of the singleton "Current" property
/// </summary>
/// <param name="instance"></param>
public static void SetCurrent(FileSystemProviderManager instance)
{
lock (_instanceLocker)
{
_instance = instance;
}
}
internal static void ResetCurrent()
{
lock (_instanceLocker)
{
if (_instance != null)
_instance.Reset();
}
}
// for tests only, totally unsafe
internal void Reset()
private void Reset()
{
_wrappers.Clear();
_providerLookup.Clear();
@@ -52,10 +81,24 @@ namespace Umbraco.Core.IO
// beware: means that we capture the "current" scope provider - take care in tests!
get { return ApplicationContext.Current == null ? null : ApplicationContext.Current.ScopeProvider as IScopeProviderInternal; }
}
internal FileSystemProviderManager()
/// <summary>
/// Constructor that can be used for tests
/// </summary>
/// <param name="configSection"></param>
public FileSystemProviderManager(IFileSystemProvidersSection configSection)
{
_config = (FileSystemProvidersSection) ConfigurationManager.GetSection("umbracoConfiguration/FileSystemProviders");
if (configSection == null) throw new ArgumentNullException("configSection");
_config = configSection;
CreateWellKnownFileSystems();
}
/// <summary>
/// Default constructor that will read the config from the locally found config section
/// </summary>
public FileSystemProviderManager()
{
_config = (FileSystemProvidersSection)ConfigurationManager.GetSection("umbracoConfiguration/FileSystemProviders");
CreateWellKnownFileSystems();
}
@@ -150,8 +193,9 @@ namespace Umbraco.Core.IO
private ProviderConstructionInfo GetUnderlyingFileSystemCtor(string alias, Func<IFileSystem> fallback)
{
// get config
var providerConfig = _config.Providers[alias];
if (providerConfig == null)
IFileSystemProviderElement providerConfig;
if (_config.Providers.TryGetValue(alias, out providerConfig) == false)
{
if (fallback != null) return null;
throw new ArgumentException(string.Format("No provider found with alias {0}.", alias));
@@ -166,17 +210,21 @@ namespace Umbraco.Core.IO
if (providerType.IsAssignableFrom(typeof(IFileSystem)))
throw new InvalidOperationException(string.Format("Type {0} does not implement IFileSystem.", providerType.FullName));
// find a ctor matching the config parameters
// find a ctor matching the config parameters
var paramCount = providerConfig.Parameters != null ? providerConfig.Parameters.Count : 0;
var constructor = providerType.GetConstructors().SingleOrDefault(x
=> x.GetParameters().Length == paramCount && x.GetParameters().All(y => providerConfig.Parameters.AllKeys.Contains(y.Name)));
=> x.GetParameters().Length == paramCount && x.GetParameters().All(y => providerConfig.Parameters.Keys.Contains(y.Name)));
if (constructor == null)
throw new InvalidOperationException(string.Format("Type {0} has no ctor matching the {1} configuration parameter(s).", providerType.FullName, paramCount));
var parameters = new object[paramCount];
if (providerConfig.Parameters != null) // keeps ReSharper happy
if (providerConfig.Parameters != null)
{
var allKeys = providerConfig.Parameters.Keys.ToArray();
for (var i = 0; i < paramCount; i++)
parameters[i] = providerConfig.Parameters[providerConfig.Parameters.AllKeys[i]].Value;
parameters[i] = providerConfig.Parameters[allKeys[i]];
}
return new ProviderConstructionInfo
{
+24 -6
View File
@@ -13,11 +13,28 @@ using Umbraco.Core.Configuration;
namespace Umbraco.Core.IO
{
public static class IOHelper
{
{
/// <summary>
/// Gets or sets a value forcing Umbraco to consider it is non-hosted.
/// </summary>
/// <remarks>This should always be false, unless unit testing.</remarks>
public static bool ForceNotHosted { get; set; }
private static string _rootDir = "";
// static compiled regex for faster performance
private readonly static Regex ResolveUrlPattern = new Regex("(=[\"\']?)(\\W?\\~(?:.(?![\"\']?\\s+(?:\\S+)=|[>\"\']))+.)[\"\']?", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
/// <summary>
/// Gets a value indicating whether Umbraco is hosted.
/// </summary>
public static bool IsHosted
{
get
{
return ForceNotHosted == false && (HttpContext.Current != null || HostingEnvironment.IsHosted);
}
}
public static char DirSepChar
{
@@ -72,14 +89,14 @@ namespace Umbraco.Core.IO
internal static string ResolveUrlsFromTextString(string text)
{
if (UmbracoConfig.For.UmbracoSettings().Content.ResolveUrlsFromTextString)
{
{
using (DisposableTimer.DebugDuration(typeof(IOHelper), "ResolveUrlsFromTextString starting", "ResolveUrlsFromTextString complete"))
{
// find all relative urls (ie. urls that contain ~)
var tags = ResolveUrlPattern.Matches(text);
foreach (Match tag in tags)
{
{
string url = "";
if (tag.Groups[1].Success)
url = tag.Groups[1].Value;
@@ -97,7 +114,8 @@ namespace Umbraco.Core.IO
public static string MapPath(string path, bool useHttpContext)
{
if (path == null) throw new ArgumentNullException("path");
if (path == null) throw new ArgumentNullException("path");
useHttpContext = useHttpContext && IsHosted;
// Check if the path is already mapped
if ((path.Length >= 2 && path[1] == Path.VolumeSeparatorChar)
@@ -303,7 +321,7 @@ namespace Umbraco.Core.IO
var debugFolder = Path.Combine(binFolder, "debug");
if (Directory.Exists(debugFolder))
return debugFolder;
#endif
#endif
var releaseFolder = Path.Combine(binFolder, "release");
if (Directory.Exists(releaseFolder))
return releaseFolder;
+8 -8
View File
@@ -73,19 +73,19 @@ namespace Umbraco.Core.IO
{
get
{
switch (GlobalSettings.ContentCacheXmlStorageLocation)
switch (GlobalSettings.LocalTempStorageLocation)
{
case ContentXmlStorage.AspNetTemp:
case LocalTempStorage.AspNetTemp:
return Path.Combine(HttpRuntime.CodegenDir, @"UmbracoData\umbraco.config");
case ContentXmlStorage.EnvironmentTemp:
case LocalTempStorage.EnvironmentTemp:
var appDomainHash = HttpRuntime.AppDomainAppId.ToSHA1();
var cachePath = Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoXml",
//include the appdomain hash is just a safety check, for example if a website is moved from worker A to worker B and then back
// to worker A again, in theory the %temp% folder should already be empty but we really want to make sure that its not
// utilizing an old path
var cachePath = Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoData",
//include the appdomain hash is just a safety check, for example if a website is moved from worker A to worker B and then back
// to worker A again, in theory the %temp% folder should already be empty but we really want to make sure that its not
// utilizing an old path
appDomainHash);
return Path.Combine(cachePath, "umbraco.config");
case ContentXmlStorage.Default:
case LocalTempStorage.Default:
return IOHelper.ReturnPath("umbracoContentXML", "~/App_Data/umbraco.config");
default:
throw new ArgumentOutOfRangeException();
@@ -1,7 +1,6 @@
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using Umbraco.Core.Logging;
namespace Umbraco.Core.Models
{
+8 -18
View File
@@ -1,8 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
@@ -23,7 +20,7 @@ namespace Umbraco.Core.Models
private DateTime? _expireDate;
private int _writer;
private string _nodeName;//NOTE Once localization is introduced this will be the non-localized Node Name.
private bool _permissionsChanged;
/// <summary>
/// Constructor for creating a Content object
/// </summary>
@@ -32,7 +29,7 @@ namespace Umbraco.Core.Models
/// <param name="contentType">ContentType for the current Content object</param>
public Content(string name, IContent parent, IContentType contentType)
: this(name, parent, contentType, new PropertyCollection())
{
{
}
/// <summary>
@@ -68,7 +65,7 @@ namespace Umbraco.Core.Models
/// <param name="parentId">Id of the Parent content</param>
/// <param name="contentType">ContentType for the current Content object</param>
/// <param name="properties">Collection of properties</param>
public Content(string name, int parentId, IContentType contentType, PropertyCollection properties)
public Content(string name, int parentId, IContentType contentType, PropertyCollection properties)
: base(name, parentId, contentType, properties)
{
Mandate.ParameterNotNull(contentType, "contentType");
@@ -87,7 +84,6 @@ namespace Umbraco.Core.Models
public readonly PropertyInfo ExpireDateSelector = ExpressionHelper.GetPropertyInfo<Content, DateTime?>(x => x.ExpireDate);
public readonly PropertyInfo WriterSelector = ExpressionHelper.GetPropertyInfo<Content, int>(x => x.WriterId);
public readonly PropertyInfo NodeNameSelector = ExpressionHelper.GetPropertyInfo<Content, string>(x => x.NodeName);
public readonly PropertyInfo PermissionsChangedSelector = ExpressionHelper.GetPropertyInfo<Content, bool>(x => x.PermissionsChanged);
}
/// <summary>
@@ -95,7 +91,7 @@ namespace Umbraco.Core.Models
/// This is used to override the default one from the ContentType.
/// </summary>
/// <remarks>
/// If no template is explicitly set on the Content object,
/// If no template is explicitly set on the Content object,
/// the Default template from the ContentType will be returned.
/// </remarks>
[DataMember]
@@ -197,15 +193,6 @@ namespace Umbraco.Core.Models
set { SetPropertyValueAndDetectChanges(value, ref _nodeName, Ps.Value.NodeNameSelector); }
}
/// <summary>
/// Used internally to track if permissions have been changed during the saving process for this entity
/// </summary>
[IgnoreDataMember]
internal bool PermissionsChanged
{
get { return _permissionsChanged; }
set { SetPropertyValueAndDetectChanges(value, ref _permissionsChanged, Ps.Value.PermissionsChangedSelector); }
}
/// <summary>
/// Gets the ContentType used by this content object
@@ -277,6 +264,9 @@ namespace Umbraco.Core.Models
[IgnoreDataMember]
internal DateTime PublishedDate { get; set; }
[DataMember]
public bool IsBlueprint { get; internal set; }
/// <summary>
/// Changes the Trashed state of the content object
/// </summary>
@@ -293,7 +283,7 @@ namespace Umbraco.Core.Models
ChangePublishedState(PublishedState.Unpublished);
}
}
/// <summary>
/// Method to call when Entity is being updated
/// </summary>
+2 -3
View File
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
@@ -278,10 +277,10 @@ namespace Umbraco.Core.Models
if (Properties.Contains(propertyTypeAlias) == false)
{
return default(TPassType);
}
}
var convertAttempt = Properties[propertyTypeAlias].Value.TryConvertTo<TPassType>();
return convertAttempt.Success ? convertAttempt.Result : default(TPassType);
return convertAttempt.Success ? convertAttempt.Result : default(TPassType);
}
/// <summary>
+6 -4
View File
@@ -54,6 +54,11 @@ namespace Umbraco.Core.Models
{
public readonly PropertyInfo DefaultTemplateSelector = ExpressionHelper.GetPropertyInfo<ContentType, int>(x => x.DefaultTemplateId);
public readonly PropertyInfo AllowedTemplatesSelector = ExpressionHelper.GetPropertyInfo<ContentType, IEnumerable<ITemplate>>(x => x.AllowedTemplates);
//Custom comparer for enumerable
public readonly DelegateEqualityComparer<IEnumerable<ITemplate>> TemplateComparer = new DelegateEqualityComparer<IEnumerable<ITemplate>>(
(templates, enumerable) => templates.UnsortedSequenceEqual(enumerable),
templates => templates.GetHashCode());
}
/// <summary>
@@ -91,10 +96,7 @@ namespace Umbraco.Core.Models
set
{
SetPropertyValueAndDetectChanges(value, ref _allowedTemplates, Ps.Value.AllowedTemplatesSelector,
//Custom comparer for enumerable
new DelegateEqualityComparer<IEnumerable<ITemplate>>(
(templates, enumerable) => templates.UnsortedSequenceEqual(enumerable),
templates => templates.GetHashCode()));
Ps.Value.TemplateComparer);
}
}
+9 -6
View File
@@ -88,6 +88,12 @@ namespace Umbraco.Core.Models
public readonly PropertyInfo PropertyGroupCollectionSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, PropertyGroupCollection>(x => x.PropertyGroups);
public readonly PropertyInfo PropertyTypeCollectionSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, IEnumerable<PropertyType>>(x => x.PropertyTypes);
public readonly PropertyInfo HasPropertyTypeBeenRemovedSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.HasPropertyTypeBeenRemoved);
//Custom comparer for enumerable
public readonly DelegateEqualityComparer<IEnumerable<ContentTypeSort>> ContentTypeSortComparer =
new DelegateEqualityComparer<IEnumerable<ContentTypeSort>>(
(sorts, enumerable) => sorts.UnsortedSequenceEqual(enumerable),
sorts => sorts.GetHashCode());
}
@@ -254,7 +260,7 @@ namespace Umbraco.Core.Models
set { SetPropertyValueAndDetectChanges(value, ref _trashed, Ps.Value.TrashedSelector); }
}
private IDictionary<string, object> _additionalData;
private readonly IDictionary<string, object> _additionalData;
/// <summary>
/// Some entities may expose additional data that other's might not, this custom data will be available in this collection
/// </summary>
@@ -273,11 +279,8 @@ namespace Umbraco.Core.Models
get { return _allowedContentTypes; }
set
{
SetPropertyValueAndDetectChanges(value, ref _allowedContentTypes, Ps.Value.AllowedContentTypesSelector,
//Custom comparer for enumerable
new DelegateEqualityComparer<IEnumerable<ContentTypeSort>>(
(sorts, enumerable) => sorts.UnsortedSequenceEqual(enumerable),
sorts => sorts.GetHashCode()));
SetPropertyValueAndDetectChanges(value, ref _allowedContentTypes, Ps.Value.AllowedContentTypesSelector,
Ps.Value.ContentTypeSortComparer);
}
}
+7 -4
View File
@@ -37,6 +37,12 @@ namespace Umbraco.Core.Models
public readonly PropertyInfo ParentIdSelector = ExpressionHelper.GetPropertyInfo<DictionaryItem, Guid?>(x => x.ParentId);
public readonly PropertyInfo ItemKeySelector = ExpressionHelper.GetPropertyInfo<DictionaryItem, string>(x => x.ItemKey);
public readonly PropertyInfo TranslationsSelector = ExpressionHelper.GetPropertyInfo<DictionaryItem, IEnumerable<IDictionaryTranslation>>(x => x.Translations);
//Custom comparer for enumerable
public readonly DelegateEqualityComparer<IEnumerable<IDictionaryTranslation>> DictionaryTranslationComparer =
new DelegateEqualityComparer<IEnumerable<IDictionaryTranslation>>(
(enumerable, translations) => enumerable.UnsortedSequenceEqual(translations),
enumerable => enumerable.GetHashCode());
}
/// <summary>
@@ -79,10 +85,7 @@ namespace Umbraco.Core.Models
}
SetPropertyValueAndDetectChanges(asArray, ref _translations, Ps.Value.TranslationsSelector,
//Custom comparer for enumerable
new DelegateEqualityComparer<IEnumerable<IDictionaryTranslation>>(
(enumerable, translations) => enumerable.UnsortedSequenceEqual(translations),
enumerable => enumerable.GetHashCode()));
Ps.Value.DictionaryTranslationComparer);
}
}
}

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