Giter Site home page Giter Site logo

umbraco / umbraco-cms Goto Github PK

View Code? Open in Web Editor NEW
4.3K 226.0 2.6K 327.52 MB

The simple, flexible and friendly ASP.NET CMS used by more than 730.000 websites

Home Page: https://umbraco.com

License: MIT License

CSS 0.07% C# 97.91% HTML 0.32% JavaScript 0.07% TypeScript 1.63% Dockerfile 0.01% Smalltalk 0.01%
umbraco-cms cms umbraco csharp hacktoberfest dotnet-core asp-net-core

umbraco-cms's Introduction

GitHub license PRs Welcome Follow Umbraco on Twitter Chat about Umbraco on Discord Read what's going on in the Umbraco Discord chat now Build status Open in GitHub Codespaces

Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.

Learn more at umbraco.com

Umbraco Logo

See the official Umbraco website for an introduction, core mission and values of the product and team behind it.

Please also see our Code of Conduct.

Getting Started

Umbraco Cloud is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed.

If you want to DIY, then you can download Umbraco either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you.

Documentation

The documentation for Umbraco CMS can be found on Our Umbraco. The source for the Umbraco docs is open source as well and we're happy to look at your documentation contributions.

Join the Umbraco community

Our friendly community is available 24/7 at the community hub, we call "Our Umbraco". Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources.

Besides "Our", we all support each other in our Community Discord Server and on Twitter: Umbraco HQ, Release Updates, #umbraco

Contributing

Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our guide to contributing.

umbraco-cms's People

Contributors

abjerner avatar abryukhov avatar andr317c avatar andybutland avatar batjan avatar bergmania avatar bjarnef avatar clausjensen avatar dawoe avatar elit0451 avatar emmagarland avatar iovergaard avatar jeavon avatar kjac avatar lars-erik avatar leekelleher avatar madsrasmussen avatar nathanwoulfe avatar nielslyngsoe avatar nikolajlauridsen avatar nul800sebastiaan avatar nzdev avatar poornimanayar avatar robert-cpl avatar ronaldbarendse avatar shazwazza avatar simonbusborg avatar sitereactor avatar zeegaan avatar zpqrtbnk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

umbraco-cms's Issues

Content/Media picker picked details should be contextual to the variant language

As an example, lets say there are 3 languages installed and English is the default.

If i have a content picker that is variant and I am editing the Danish language. When I choose a content item in the tree, the content picker displays some details including the "Name", "Url" and "Icon" ... but the "Name" and "Url" are both going to be displaying the default language information.

Also I think the 'edit' button to edit that particular content item will default to editing the default language.

Similarly this will be a problem for the media picker too, and since a different image can be picked between variants that will need to be update too.

Un-publish button not showing

Unpublish button definition will not be added because the publishDate from the content will always be undefined as it has been moved to the variant object.

Code at: contenteditinghelper.service.js
Capture.PNG

Move, Copy & Change Doc Type functionality doesn't work

This is due to the logic that is used to copy the values across, it doesn't take into account the new variations structure so you'll probably end up with a YSOD like:

Server Error in '/' Application.
Variation InvariantNeutral is invalid for property type "content".
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NotSupportedException: Variation InvariantNeutral is invalid for property type "content".

Source Error: 


Line 248:                if (throwIfInvalid)
Line 249:                    throw new NotSupportedException($"Variation {variation} is invalid for property type \"{Alias}\".");
Line 250:                return false;
Line 251:            }
Line 252:            return true;

Source File: C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\PropertyType.cs    Line: 250 

Stack Trace: 


[NotSupportedException: Variation InvariantNeutral is invalid for property type "content".]
   Umbraco.Core.Models.PropertyType.ValidateVariation(String culture, String segment, Boolean throwIfInvalid) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\PropertyType.cs:250
   Umbraco.Core.Models.Property.SetValue(Object value, String culture, String segment) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\Property.cs:274
   Umbraco.Core.Models.ContentBase.SetValue(String propertyTypeAlias, Object value, String culture, String segment) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\ContentBase.cs:273
   Umbraco.Web.UI.Umbraco.Dialogs.ChangeDocType.ValidateAndSave_Click(Object sender, EventArgs e) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Web.UI\Umbraco\Dialogs\ChangeDocType.aspx.cs:242
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +141
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5445

Handle keyboard shortcuts in infinite editing

child of #3649

When a new infinite editor opens it overwrites the keyboard shortcuts from the current editor. When the editor closes again the underlying editor donโ€™t reassign its shortcuts.

We need to find a way to reassign keyboard shortcuts when an infinite editor closes.

Hack for accessing children of a listview

child of #3690

If you set up content start nodes for a user to be children of a listview and children not of a listview, and then you login to the user - when you select the "Move" action on a node from the "Actions" menu in the upper right corner or after right clicking it, you will end up a listview "parent" folder (MoveAction video - https://www.screencast.com/t/wVLxPJ4YkB7) and then if you go back to see the tree structure that you have access to and you double click a listview node it opens a sublistview with all the children of this container (also the ones which were not set as start nodes)

Handle collisions w/models

goes along with #3665 - currently, IPublishedContent has tons of properties that can end up colliding with model properties. For instance, if IPublishedContent has a Parent C# property, and I create a parent user property = collision.

Ideally, we should remove as much as we can from IPublishedContent so there are no collisions. Or something. Having to do content.Umbraco.Parent ie moving everything under Umbraco is really not convenient, but... not sure. We could have them all at IPublishedContent level but only as interface properties... need to think about it.

child of #3661

Open Template via Content Info App - Changing assigned template opens incorrect template

When doing a review of https://github.com/umbraco/Umbraco.Private/issues/92 with @madsrasmussen we discovered a bug where if you have more than one available template assigned to a doctype, change the template assigned to a content node and then click open for the new template editor to show it will show the incorrect template.

The serverside response of JSON for allowedTemplates is a string array of template aliases and does not include the template ID that is needed to be updated to open the correct template.

This was a PR for V7 that was merged up into V8 so it will need to be fixed in both places.

testing

A brief description of the issue goes here.

Reproduction

If you're filing a bug, please describe how to reproduce it. Include as much
relevant information as possible, such as:

Bug summary

Specifics

Steps to reproduce

Expected result

Actual result

Cleanup interface

Goes with #3666, we probably should simplify / cleanup / streamlined the IPublishedContent interface, remove things, etc to make more sense.

(estimated to 1 because would be done as part of #3666)

child of #3661

HasChildren property to be fixed for a container node

When I did a request to get all the content notes in a tree structure, the response back was indicating that the nodes which were List Views had no children, even though there were children on those nodes. What has happened was that the HasChildren property on a node was set to false when a node was marked to be displayed as a list view, even though the node happened to have children.
Connects to #2859

SPIKE: Handle tree when using infinite editing

child of #3649

How do we handle the tree when infinite editing is open? You donโ€™t really need the tree when you are in an infinite flow so we could add a black overlay so it matches the editor.

Another solution would be to warn the user if they change the node. I think we already implemented a warning on route change but it doens't seem to work anymore. We need to look into that.

Upload field/Image cropper removes the wrong file when used with variants

See #2849 for more details.

Add a variant and invariant upload field and image cropper to a doctype so you have 4 properties in total.

Upload the same image to all of the fields (variant and invariant) in all variants. Save. Remove all images from one variant and save. Some images are missing on the other variants.

Build docs for v8

For some reason v8 build scripts don't build the documentation anymore, need to port v7 Build-UmbracoDocs.ps1 as a method in v8 build.ps1.

BUT also need to rethink how it's done - do we really need to rebuild the whole solution in Debug mode just for docs?!

Indexing all data for search

Umbraco needs to be updated to index all variant and invariant data so it can be searched. Currently it only indexes variant data.

Each Lucene document will store all variant data. This means that there will need to be prefixed (or suffixed) field names with the culture (we'll need to determine which is best). For example, all names will need to be indexed so we'll have "en_US_Name" (keeping in mind that Examine uses special underscore and double underscore prefixes to determine how things can be indexed). Similarly for properties, if there's a property called "title", we'll have "en_US_title", "es_ES_title", etc... For invariant content items there won't be any culture prefix just like there is today. The index should probably be updated with another enum field to determine if the document is variant/invariant.

The built in indexes by default will use a PerFieldAnalyzerWrapper which uses the CultureInvariantWhitespaceAnalyzer by default, devs will then have the ability to extend this (which is part of #3535)

requires https://github.com/umbraco/Umbraco.Private/issues/194
child of #3530

Animations

child of #3649

We need another round of animation fixes. We never found a solution to the bad performing animations. With the upgraded Angular we now have access to more ngAnimate classes and we might be able to do a full CSS-animated solution now instead of relaying on javascript animations and a 3rd-part library.

SPIKE: Mockup of save/publish validation messages

Currently, the validation messages in the save/publish dialogs are very generic. We want more detailed messages that tell which properties have validation errors.

The challenge is, with variants, that a lot of properties can have validation messages so we need to explore a way to present the validation messages in the save/publish dialog.

v8 Media activeTree hasn't been set

When selecting a start nodes for a user to be children of a folder that was created in a Media structure and then you login with the user, sometimes an error stating : "Could not find the tree media, activeTree has not been set" appears (https://www.screencast.com/t/asYMBrO5ZJ4) but the tree is behaving as intended - it could collapse and expand and your access to click into the parent node is restricted.
Sometimes the aforementioned error was not being shown, or it happened that when reproducing the same scenario several times - it didn't work the first time I've selected custom start nodes of a list view but when I run the solution again it worked normally.

v8 ContentService variant events

child of #3639

Current ContentService events when (un)publishing documents & cultures are probably not consistent, triggering 'unpublish' when publishing or whatever, without a way to figure out which culture is impacted, etc

Goal: list & understand events (existing and missing), define what needs to be changed

Editing all variants at once - Content Templates (aka blueprints) not working

We need to ensure that all of the functionality for blueprints still works with all of the variant editing changes. Initial tests show things are broken, currently you cannot even create a blueprint based on an existing content item, you will get a ysod:

An error occured
Variation "<null>,<null>" is not supported by the property type.

Exception Details
System.NotSupportedException: Variation "<null>,<null>" is not supported by the property type.
Stacktrace
at Umbraco.Core.Models.Property.SetValue(Object value, String culture, String segment) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\Property.cs:line 282
   at Umbraco.Core.Models.ContentBase.SetValue(String propertyTypeAlias, Object value, String culture, String segment) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Models\ContentBase.cs:line 270
   at Umbraco.Core.Services.Implement.ContentService.CreateContentFromBlueprint(IContent blueprint, String name, Int32 userId) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Core\Services\Implement\ContentService.cs:line 2486
   at Umbraco.Web.Editors.ContentController.CreateBlueprintFromContent(Int32 contentId, String name) in C:\Users\Shannon\Documents\_Projects\Umbraco\Umbraco_8.0\src\Umbraco.Web\Editors\ContentController.cs:line 566
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()

Ensuring search can be extended for specific languages by developers

We are indexing all variant data into one document and each column will contain different variant data. i.e. en_US_name. With this in place developers can use their own implementation of a PerFieldAnalyzerWrapperwhere they can define which analyzer to use for which field/culture.

This would be the most basic/rudimentary way that a developer can extend this functionality so it might be best if we can have our own implementation of PerFieldAnalyzerWrapper that can be modified on startup to include different analyzers.

Ideally, the indexes that we ship with are not config based and instead codebased and if developers want to extend them they would do so via startup code.

don't review until #3534 is reviewed and merged

depends on #3534
child of #3530

Deleting content node - after changing doctype from invariant to variant

I found this issue when testing latest changes to variations.

Repro steps

  • Noticed my doctype was invariant & used infinite editing to update it so it could be varied
  • Then I wanted to delete the previously created content node that was invariant to avoid any weird things with it changing with existing content
  • From list view selected the only one item to delete & got the following ex

Exception

System.InvalidOperationException: Cannot save content with an empty name.

at Umbraco.Core.Persistence.Repositories.Implement.DocumentRepository.EnsureInvariantNameExists(Content content) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Persistence\Repositories\Implement\DocumentRepository.cs:line 1122
   at Umbraco.Core.Persistence.Repositories.Implement.DocumentRepository.SanitizeNames(Content content, Boolean publishing) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Persistence\Repositories\Implement\DocumentRepository.cs:line 1103
   at Umbraco.Core.Persistence.Repositories.Implement.DocumentRepository.PersistUpdatedItem(IContent entity) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Persistence\Repositories\Implement\DocumentRepository.cs:line 433
   at Umbraco.Core.Cache.DefaultRepositoryCachePolicy`2.Update(TEntity entity, Action`1 persistUpdated) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Cache\DefaultRepositoryCachePolicy.cs:line 128
   at Umbraco.Core.Persistence.Repositories.Implement.RepositoryBase`2.Save(TEntity entity) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Persistence\Repositories\Implement\RepositoryBaseOfTIdTEntity.cs:line 167
   at Umbraco.Core.Services.Implement.ContentService.PerformMoveContentLocked(IContent content, Int32 userId, Nullable`1 trash) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Services\Implement\ContentService.cs:line 1685
   at Umbraco.Core.Services.Implement.ContentService.PerformMoveLocked(IContent content, Int32 parentId, IContent parent, Int32 userId, ICollection`1 moves, Nullable`1 trash) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Services\Implement\ContentService.cs:line 1660
   at Umbraco.Core.Services.Implement.ContentService.MoveToRecycleBin(IContent content, Int32 userId) in C:\Code\Umbraco-CMS\src\Umbraco.Core\Services\Implement\ContentService.cs:line 1547
   at Umbraco.Web.Editors.ContentController.DeleteById(Int32 id) in C:\Code\Umbraco-CMS\src\Umbraco.Web\Editors\ContentController.cs:line 881
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()

Move navigation/traversal/methods of IPublishedContent to a IPublishedContentService

We need to cleanup navigating the tree with IPublishedContent. The model IPublishedContent should be as POCO as we can make it so that the logic for traversing/navigating is done via a new service.

This is an important step for unit testing and for implementing IPublishedContent and what will be the new service.

We will still have methods on IPublishedContent to traversal for better backwards compatibility for and for easier API usage. These methods will be extension methods that will need to use a service locator to resolve the underling service. So things like content.Children() will still be possible.

And while we're at it, we should clarify the Root() vs. Site() vs. whatever other navigation methods we may want to support.

child of #3661

List Views

As a content editor in the backoffice I expect to be able to see items in a list view with the current culture used for getting the right variant of the content items being shown.

Acceptance criteria:

  • List view should list content items with the correct names/data from the variant matching the current culture set in the UI.
  • List view should be able to navigate through pages of content items with variant data.

parent of https://github.com/umbraco/Umbraco.Private/issues/18
parent of https://github.com/umbraco/Umbraco.Private/issues/67
parent of https://github.com/umbraco/Umbraco.Private/issues/188
parent of https://github.com/umbraco/Umbraco.Private/issues/189
parent of https://github.com/umbraco/Umbraco.Private/issues/206
parent of https://github.com/umbraco/Umbraco.Private/issues/203
parent of https://github.com/umbraco/Umbraco.Private/issues/204

Document infinite editing

child of #3649

We need to add documentation for infinite editing so we and the community knows how support infinite editing in their custom plugins.

Improve contribution guidance

What type of issue is it? (Choose one - delete the others)

Missing documentation

What article/section is this about?

https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/docs/CONTRIBUTING_DETAILED.md

Describe the issue:

The contribution guide is great and very well written however to make it easier to understand as a reference please separate out the section on What should I know before I get started?. Most users / devs who have not worked with Umbraco before will want to begin with this section so it makes little sense in placing it halfway down a page within a section on contributing in detail.

Snapshot of the entire CMS

I know I can backup the database and config files and there're also built-in versioning of CMS documents. Still, an all inclusive snapshot feature will just make everybody's life easier, starting with the developers. It will also make other features/bug fixes etc. happen quicker. Thanks!

How can you help?

Handling missing values and no fallback

When there is "no value" we want to fall back to something else - but how can you indicate that a value is "intentionally empty" ie "no value" actually means "no value, please don't fallback"?

child of #3661

Query-builder needs to be updated to generate the correct snippets

When Value() methods + navigation have all been updated, we need to update the query builder (in the template editor) to generate proper code.

child of #3661

NOTE: this task is ONLY to get the snippets working, currently all execution, reporting and timing cannot be done in v8, there is a separate task for this: #3908

Issue with the Backoffice side bar appearing twice when you close the Dev tools.

When you go to the Backoffice and you open the Developer tools the side bar size is being adjusted due to the new size of the browser. If you want to see all of the sections you would click on the arrow that will make the rest of the sections appear as a second side bar. If you close the Developer tools after, all the sections will appear on the first side bar but the second side bar won't disappear unless you click on a section.

Get rid of raiseEvents

Get rid of raiseEvents parameter in services. Was done as part of other tasks, proposed here as a PR for review.

#2783

Proper fallback

Implement proper fallback in content.Value<T>() methods. Should be able to fallback on language, or walk up the tree, or anything - should be extensible.

child of #3661

Infinite Editing

Supporting infinite editing throughout the backoffice in Umbraco 8.0

SPIKE: Handle list views in infinite editing.

child of #3649

When you open a list view node in infinite editing you are able to make a lot of actions which will change the route. Create, edit etc. We need to find the best way to handle list view: disable, remove or fully support?

We might want to wait with this task until content apps are closer so we don't implement a hack on top of a hack.

Tags with variants - Database, service and repository changes

child of #3674

We need to update the tags tables to support storing a culture for tags so that we can query tags on the front-end for specific cultures.

There will be a few tasks to get the whole job done, this is firstly to get the DB, Service and Repos updated to store tags with cultures

A different task will exist to query tags #3676

Add Support for Disabling Nested Content Items (i.e., a Toggle Button)

Given this blog post: https://umbraco.com/blog/a-new-take-on-the-umbraco-issue-tracker/

I am migrating this issue to this issue tracker: http://issues.umbraco.org/issue/U4-10422

Much discussion has happened around the issue and I think it's time for a reset to get everybody on the same page. Here is the actual request:

Add a toggle button to nested content items that allows the nested content items to be either enabled or disabled.

There are a bunch of ways of going about that. Here are my recommendations (gathered from the other ticket and from other places this issue was being discussed):

  • Toggle Button Included the toggle button in the core of Umbraco.
  • Opt-In Feature Allow that toggle button to be shown/hidden based on a setting configured for a given nested content data type instance. Make the default hidden so this is an opt-in feature.
  • Surefire Storage Save the full nested content data to the database (i.e., IContent), but only save the enabled nested content data to the XML cache (i.e., IPublishedContent). This ensures that even if the property value converter is bypassed, the correct data will still be represented. This would also mirror how actual pages work (i.e., unpublished pages are not included in the XML cache).

I understand you may not have the resources to implement this feature yourselves at Umbraco HQ. There are a ton of people interested in making this happen, so it's probably safe to assume you can get another pull request that implements this.

Media Picker should not show deleted items

This is somewhat related to http://issues.umbraco.org/issue/U4-9616

I had a customer run into this problem: The media picker remembers the last folder used. However, if the folder is deleted and the media picker opened again, it still opens to the last folder - even though that folder is now deleted. You can still select items from the folder. In this case, the client was confused, as the folder (at a glance) was identical to a later uploaded folder.

In a broader sense, the media picker should not in any way (be it browsing or searching) show or allow selection of deleted media items.

Reproduction

  1. Create a folder and upload some images
  2. Browse to the folder in a media picker and select a few. The media picker will remember the last-used folder.
  3. Go the media section and delete the folder you created earlier
  4. Create a new folder and upload the same images (plus a few others to tell them apart)
  5. Go back and open the media picker again. Note that it still shows the now-deleted folder. You can select files from this folder without issues.

Expected result

The media picker should go back to the root, since the previous item is no longer valid

Also, it should not be possible to find items via search

Actual result

The deleted folder is still shown and items can be selected

Custom start nodes of a listviews cannot collapse or expand

child of #3690

When setting up content start nodes for a user to be both children of a listview and children not of a listview - after you login to that user the children start nodes of a list views cannot collapse and expand (thus the arrow always points to the right, even if it is expanded to a start node), while node which is not a container and has children set as custom start nodes behaves in a usual way (right-for collapsed and down for expanded)
Video reference - https://www.screencast.com/t/ssGLlYBvXHyc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.