1- # Umbraco.Community.SimpleTrees
2-
3- [ ![ Umbraco Marketplace] ( https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco )] ( https://marketplace.umbraco.com/package/Umbraco.Community.SimpleTrees )
4- [ ![ License] ( https://img.shields.io/github/license/jcdcdev/Umbraco.Community.SimpleTrees?color=8AB803&label=License&logo=github )] ( https://github.com/jcdcdev/Umbraco.Community.SimpleTrees?tab=MIT-1-ov-file )
5- [ ![ NuGet Downloads] ( https://img.shields.io/nuget/dt/Umbraco.Community.SimpleTrees?color=cc9900&label=Downloads&logo=nuget )] ( https://www.nuget.org/packages/Umbraco.Community.SimpleTrees )
6- [ ![ Project Website] ( https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg== )] ( https://jcdc.dev/umbraco-packages/simple-trees )
7-
8-
1+ # Umbraco.Community.SimpleTrees
2+
3+ [ ![ Umbraco Marketplace] ( https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco )] ( https://marketplace.umbraco.com/package/Umbraco.Community.SimpleTrees )
4+ [ ![ License] ( https://img.shields.io/github/license/jcdcdev/Umbraco.Community.SimpleTrees?color=8AB803&label=License&logo=github )] ( https://github.com/jcdcdev/Umbraco.Community.SimpleTrees?tab=MIT-1-ov-file )
5+ [ ![ NuGet Downloads] ( https://img.shields.io/nuget/dt/Umbraco.Community.SimpleTrees?color=cc9900&label=Downloads&logo=nuget )] ( https://www.nuget.org/packages/Umbraco.Community.SimpleTrees )
6+ [ ![ Project Website] ( https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg== )] ( https://jcdc.dev/umbraco-packages/simple-trees )
7+
8+
99This packages aims to help developers quickly put together Umbraco Trees using C#.
1010
1111## Features
1212
1313- C# custom tree creation
1414- No javascript or umbraco-package.json files required
1515- Supports both Views & View Components
16- - Easy to define section permissions
17-
18- ## Quick Start
19-
16+ - Easy to define section permissions
17+ - ✨ Custom Entity Actions!
18+
19+ ## Quick Start
20+
2021### Install Package
2122
2223``` csharp
@@ -29,7 +30,7 @@ By default, this will display in the content section.
2930
3031``` csharp title="ExampleTree.cs"
3132using Umbraco .Cms .Core .Models ;
32- using Umbraco .Community .SimpleTrees .Models ;
33+ using Umbraco .Community .SimpleTrees .Core . Models ;
3334
3435namespace Umbraco .Community .SimpleTrees .TestSite .Trees ;
3536
@@ -78,17 +79,101 @@ public class MyTree : SimpleTree
7879 < / table >
7980 < / div >
8081< / uui - box >
81- ```
82-
83-
84-
85- ## Contributing
86-
87- Contributions to this package are most welcome ! Please visit the [Contributing ](https :// github.com/jcdcdev/Umbraco.Community.SimpleTrees/contribute) page.
88-
89- ## Acknowledgements (Thanks)
90-
91- - LottePitcher - [opinionated - package - starter ](https :// github.com/LottePitcher/opinionated-package-starter)
92-
93-
82+ ```
83+
84+
85+ ## Extending
86+
87+ ### Entity Actions
88+
89+ It is possible to implement two Entity Actions
90+
91+ #### Url Actions
92+
93+ When clicked , the user will be taken to the specific URL .
94+
95+ ```csharp title = " NuGetPackageItemEntityUrlAction.cs"
96+ using Umbraco .Community .SimpleTrees .Core .Models ;
97+
98+ namespace Umbraco .Community .SimpleTrees .TestSite .Trees ;
99+
100+ public class NuGetPackageItemEntityUrlAction : SimpleEntityUrlAction
101+ {
102+ public override string Icon => " icon-link" ;
103+ public override string Name => " Go to Package" ;
104+ public override Type [] ForTreeItems => [typeof (NuGetPackageTree )];
105+ public override Type [] ForSimpleEntityTypes => [typeof (NuGetPackageVersionEntityType )];
106+
107+ public override Task <Uri > GetUrlAsync (string unique , string entityType )
108+ {
109+ var uri = new Uri (" https://www.nuget.org/packages/" + unique );
110+ return Task .FromResult (uri );
111+ }
112+ }
113+ ```
114+
115+ #### Execute Actions
116+
117+ When clicked, you custom logic will be executed. You can also return a helpful response to the user.
118+
119+ ``` csharp title="NuGetPackageItemEntityExecuteAction"
120+ using System .Net .Http .Headers ;
121+ using Umbraco .Community .SimpleTrees .Core .Models ;
122+ using Umbraco .Community .SimpleTrees .Web .Models ;
123+
124+ namespace Umbraco .Community .SimpleTrees .TestSite .Trees ;
125+
126+ public class NuGetPackageItemEntityExecuteAction : SimpleEntityExecuteAction
127+ {
128+ private readonly HttpClient _client ;
129+
130+ public NuGetPackageItemEntityExecuteAction (HttpClient client )
131+ {
132+ var url = " https://functions.marketplace.umbraco.com/api/" ;
133+ client .BaseAddress = new Uri (url );
134+ client .DefaultRequestHeaders .UserAgent .Add (new ProductInfoHeaderValue (" Umbraco.Community.SimpleTrees.TestSite" , " 1.0" ));
135+ _client = client ;
136+ }
137+
138+ public override string Icon => " icon-refresh" ;
139+ public override string Name => " Sync Package" ;
140+ public override Type [] ForTreeItems => [typeof (NuGetPackageTree )];
141+
142+ public override async Task <SimpleEntityActionExecuteResponse > ExecuteAsync (string unique , string entityType )
143+ {
144+ try
145+ {
146+ var split = unique .Split ('_' );
147+ var packageId = split [0 ];
148+ var model = new MarketplaceRequest
149+ {
150+ PackageId = packageId ,
151+ };
152+
153+ var result = await _client .PostAsJsonAsync (" InitiateSinglePackageSyncFunction" , model );
154+ if (! result .IsSuccessStatusCode )
155+ {
156+ return SimpleEntityActionExecuteResponse .Error (" Failed to initiate package update" , $" Status Code: {result .StatusCode }, Reason: {result .ReasonPhrase }" );
157+ }
158+
159+ var message = $" Package {packageId } update has been initiated. You can check the progress in the Umbraco Marketplace." ;
160+ return SimpleEntityActionExecuteResponse .Success (" Package update initiated successfully" , message );
161+ }
162+ catch (Exception ex )
163+ {
164+ return SimpleEntityActionExecuteResponse .Error (" An error occurred while initiating the package update" , ex .Message );
165+ }
166+ }
167+ }
168+ ```
169+
170+ ## Contributing
171+
172+ Contributions to this package are most welcome! Please visit the [ Contributing] ( https://github.com/jcdcdev/Umbraco.Community.SimpleTrees/contribute ) page.
173+
174+ ## Acknowledgements (Thanks)
175+
176+ - LottePitcher - [ opinionated-package-starter] ( https://github.com/LottePitcher/opinionated-package-starter )
177+
178+
94179
0 commit comments