-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Export specific workflow #11939
Export specific workflow #11939
Changes from 66 commits
9a11bf6
9b36d38
8e174ab
daf2eb0
5b7496a
3be2bf4
610c224
2d7f3df
cd23dd2
40d482a
58bc7ff
d6fbf96
718ecdd
22d5e7a
c1ac8f2
ab07997
ea0e561
ba2353f
44b7e3b
54462be
55a1458
e98dd4c
60a1fdd
7469f29
18374c4
58c3026
b676da6
af6bc49
da0ca43
0953df0
05ae3e3
4df2b22
d5b4400
a3059d4
6707813
d435ac8
21b7395
0cd30c2
a674da5
79d22f8
f137fbb
7454104
a583ea1
58c0b53
8479979
5d2639b
6109ba3
c7f92c5
7b27cbe
ec55cb4
36bbeea
43da408
d5e09ff
5a892ed
c755ec4
1f1e717
1a40c63
c82be47
4d2f4e9
d69fd8f
e0fef27
5a4bfa1
8c54c41
1d04a0e
942e63f
4c04662
3a8590d
92ab660
3495276
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,5 +1,6 @@ | ||||||||||||||||||||||||||||||||||||||||
using System; | ||||||||||||||||||||||||||||||||||||||||
using System.Collections.Generic; | ||||||||||||||||||||||||||||||||||||||||
using System.IO.Compression; | ||||||||||||||||||||||||||||||||||||||||
using System.Linq; | ||||||||||||||||||||||||||||||||||||||||
using System.Text.Json; | ||||||||||||||||||||||||||||||||||||||||
using System.Text.Json.Nodes; | ||||||||||||||||||||||||||||||||||||||||
|
@@ -13,12 +14,17 @@ | |||||||||||||||||||||||||||||||||||||||
using Microsoft.Extensions.Localization; | ||||||||||||||||||||||||||||||||||||||||
using Microsoft.Extensions.Options; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Admin; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Deployment; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Deployment.Core.Services; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.DisplayManagement; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.DisplayManagement.ModelBinding; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.DisplayManagement.Notify; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Json; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Navigation; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Recipes.Models; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Routing; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Workflows.Activities; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Workflows.Deployment; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Workflows.Helpers; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Workflows.Indexes; | ||||||||||||||||||||||||||||||||||||||||
using OrchardCore.Workflows.Models; | ||||||||||||||||||||||||||||||||||||||||
|
@@ -41,9 +47,9 @@ | |||||||||||||||||||||||||||||||||||||||
private readonly IAuthorizationService _authorizationService; | ||||||||||||||||||||||||||||||||||||||||
private readonly IActivityDisplayManager _activityDisplayManager; | ||||||||||||||||||||||||||||||||||||||||
private readonly INotifier _notifier; | ||||||||||||||||||||||||||||||||||||||||
private readonly ISecurityTokenService _securityTokenService; | ||||||||||||||||||||||||||||||||||||||||
private readonly IUpdateModelAccessor _updateModelAccessor; | ||||||||||||||||||||||||||||||||||||||||
private readonly IShapeFactory _shapeFactory; | ||||||||||||||||||||||||||||||||||||||||
private readonly JsonSerializerOptions _documentJsonSerializerOptions; | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
protected readonly IStringLocalizer S; | ||||||||||||||||||||||||||||||||||||||||
protected readonly IHtmlLocalizer H; | ||||||||||||||||||||||||||||||||||||||||
|
@@ -60,10 +66,10 @@ | |||||||||||||||||||||||||||||||||||||||
IActivityDisplayManager activityDisplayManager, | ||||||||||||||||||||||||||||||||||||||||
IShapeFactory shapeFactory, | ||||||||||||||||||||||||||||||||||||||||
INotifier notifier, | ||||||||||||||||||||||||||||||||||||||||
ISecurityTokenService securityTokenService, | ||||||||||||||||||||||||||||||||||||||||
IStringLocalizer<WorkflowTypeController> stringLocalizer, | ||||||||||||||||||||||||||||||||||||||||
IHtmlLocalizer<WorkflowTypeController> htmlLocalizer, | ||||||||||||||||||||||||||||||||||||||||
IUpdateModelAccessor updateModelAccessor) | ||||||||||||||||||||||||||||||||||||||||
IUpdateModelAccessor updateModelAccessor, | ||||||||||||||||||||||||||||||||||||||||
IOptions<DocumentJsonSerializerOptions> documentJsonSerializerOptions) | ||||||||||||||||||||||||||||||||||||||||
hishamco marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
_pagerOptions = pagerOptions.Value; | ||||||||||||||||||||||||||||||||||||||||
_session = session; | ||||||||||||||||||||||||||||||||||||||||
|
@@ -74,11 +80,11 @@ | |||||||||||||||||||||||||||||||||||||||
_authorizationService = authorizationService; | ||||||||||||||||||||||||||||||||||||||||
_activityDisplayManager = activityDisplayManager; | ||||||||||||||||||||||||||||||||||||||||
_notifier = notifier; | ||||||||||||||||||||||||||||||||||||||||
_securityTokenService = securityTokenService; | ||||||||||||||||||||||||||||||||||||||||
_updateModelAccessor = updateModelAccessor; | ||||||||||||||||||||||||||||||||||||||||
_shapeFactory = shapeFactory; | ||||||||||||||||||||||||||||||||||||||||
S = stringLocalizer; | ||||||||||||||||||||||||||||||||||||||||
H = htmlLocalizer; | ||||||||||||||||||||||||||||||||||||||||
_documentJsonSerializerOptions = jsonSerializerOptions.Value.SerializerOptions; | ||||||||||||||||||||||||||||||||||||||||
Check failure on line 87 in src/OrchardCore.Modules/OrchardCore.Workflows/Controllers/WorkflowTypeController.cs GitHub Actions / Build & Test (ubuntu-latest)
Check failure on line 87 in src/OrchardCore.Modules/OrchardCore.Workflows/Controllers/WorkflowTypeController.cs GitHub Actions / Build & Test (ubuntu-latest)
Check failure on line 87 in src/OrchardCore.Modules/OrchardCore.Workflows/Controllers/WorkflowTypeController.cs GitHub Actions / Build & Test (windows-latest)
|
||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The assignment to - _documentJsonSerializerOptions = jsonSerializerOptions.Value.SerializerOptions;
+ _jsonSerializerOptions = documentJsonSerializerOptions.Value.SerializerOptions; Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
[Admin("Workflows/Types", "WorkflowTypes")] | ||||||||||||||||||||||||||||||||||||||||
|
@@ -192,6 +198,9 @@ | |||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
case WorkflowTypeBulkAction.None: | ||||||||||||||||||||||||||||||||||||||||
break; | ||||||||||||||||||||||||||||||||||||||||
case WorkflowTypeBulkAction.Export: | ||||||||||||||||||||||||||||||||||||||||
return await ExportWorkflows(itemIds.ToArray()); | ||||||||||||||||||||||||||||||||||||||||
hyzx86 marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid duplicate calls to - return await ExportWorkflows(itemIds.ToArray()); Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
case WorkflowTypeBulkAction.Delete: | ||||||||||||||||||||||||||||||||||||||||
foreach (var entry in checkedEntries) | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
|
@@ -213,7 +222,19 @@ | |||||||||||||||||||||||||||||||||||||||
return RedirectToAction(nameof(Index)); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
public async Task<IActionResult> EditProperties(long? id, string returnUrl = null) | ||||||||||||||||||||||||||||||||||||||||
[HttpPost] | ||||||||||||||||||||||||||||||||||||||||
public async Task<IActionResult> Export(int id) | ||||||||||||||||||||||||||||||||||||||||
Piedone marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows)) | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
return Forbid(); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
hyzx86 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
return await ExportWorkflows(id); | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+226
to
+234
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The + [HttpGet]
public async Task<IActionResult> Export(int id) Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
public async Task<IActionResult> EditProperties(int? id, string returnUrl = null) | ||||||||||||||||||||||||||||||||||||||||
hyzx86 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows)) | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
|
@@ -546,5 +567,28 @@ | |||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
return activityShape; | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
private async Task<IActionResult> ExportWorkflows(params long[] itemIds) | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
using var fileBuilder = new TemporaryFileBuilder(); | ||||||||||||||||||||||||||||||||||||||||
var archiveFileName = fileBuilder.Folder + ".zip"; | ||||||||||||||||||||||||||||||||||||||||
var recipeDescriptor = new RecipeDescriptor(); | ||||||||||||||||||||||||||||||||||||||||
var deploymentPlanResult = new DeploymentPlanResult(fileBuilder, recipeDescriptor); | ||||||||||||||||||||||||||||||||||||||||
var workflowTypes = await _workflowTypeStore.GetAsync(itemIds); | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
AllWorkflowTypeDeploymentSource.ProcessWorkflowType(deploymentPlanResult, workflowTypes, _documentJsonSerializerOptions); | ||||||||||||||||||||||||||||||||||||||||
hishamco marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
await deploymentPlanResult.FinalizeAsync(); | ||||||||||||||||||||||||||||||||||||||||
Piedone marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
ZipFile.CreateFromDirectory(fileBuilder.Folder, archiveFileName); | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
var packageName = itemIds.Length == 1 | ||||||||||||||||||||||||||||||||||||||||
? workflowTypes.FirstOrDefault().Name | ||||||||||||||||||||||||||||||||||||||||
: S["Workflow Types"]; | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
return new PhysicalFileResult(archiveFileName, "application/zip") | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
FileDownloadName = packageName + ".zip", | ||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
hishamco marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,6 +46,7 @@ public enum WorkflowTypeFilter | |
public enum WorkflowTypeBulkAction | ||
{ | ||
None, | ||
Export, | ||
Delete | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The field
_documentJsonSerializerOptions
should be renamed to_jsonSerializerOptions
to match its usage throughout the class.Committable suggestion