Skip to content

Commit

Permalink
Merge branch 'main' into srvcs_acct_to_login_data
Browse files Browse the repository at this point in the history
  • Loading branch information
hishamco authored Jun 22, 2024
2 parents a6ec2b9 + f95dc8a commit 7be7530
Show file tree
Hide file tree
Showing 15 changed files with 113 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{
"name": "",
"displayName": "",
"description": "",
"author": "",
"website": "",
"version": "1",
"name": "OrchardCore.Facebook.Widgets.Migrations",
"displayName": "Meta Social Plugins Widgets Migration",
"description": "Recipe migration for the OrchardCore.Facebook.Widgets feature.",
"author": "The Orchard Core Team",
"website": "https://orchardcore.net",
"version": "1.0.0",
"issetuprecipe": false,
"categories": "",
"categories": [],
"tags": [],

"steps": [
{
"name": "ContentDefinition",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public override async Task<IDisplayResult> EditAsync(TwitterSettings settings, B
return null;
}

return Initialize<TwitterSettingsViewModel>("XSettings_Edit", model =>
return Initialize<TwitterSettingsViewModel>("TwitterSettings_Edit", model =>
{
model.APIKey = settings.ConsumerKey;
if (!string.IsNullOrWhiteSpace(settings.ConsumerSecret))
Expand Down
4 changes: 2 additions & 2 deletions src/OrchardCore.Modules/OrchardCore.Twitter/Manifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@

[assembly: Feature(
Id = TwitterConstants.Features.Twitter,
Name = "X Integration",
Name = "X (Twitter) Integration",
Category = "X",
Description = "Provides a TwitterClient and Workflow Activities to integrate with X"
)]

[assembly: Feature(
Id = TwitterConstants.Features.Signin,
Name = "Sign in with X",
Name = "Sign in with X (Twitter)",
Category = "X",
Description = "Authenticates users with their X Account.",
Dependencies = [TwitterConstants.Features.Twitter]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public override async Task<IDisplayResult> EditAsync(TwitterSigninSettings setti
return null;
}

return Initialize<TwitterSigninSettingsViewModel>("XSigninSettings_Edit", model =>
return Initialize<TwitterSigninSettingsViewModel>("TwitterSigninSettings_Edit", model =>
{
if (settings.CallbackPath.HasValue)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization;
Expand All @@ -10,12 +11,18 @@ namespace OrchardCore.Workflows.Activities
public class CorrelateTask : TaskActivity<CorrelateTask>
{
private readonly IWorkflowScriptEvaluator _scriptEvaluator;
private readonly IWorkflowExpressionEvaluator _expressionEvaluator;

protected readonly IStringLocalizer S;

public CorrelateTask(IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer<CorrelateTask> localizer)
public CorrelateTask(
IWorkflowScriptEvaluator scriptEvaluator,
IWorkflowExpressionEvaluator expressionEvaluator,
IStringLocalizer<CorrelateTask> stringLocalizer)
{
_scriptEvaluator = scriptEvaluator;
S = localizer;
_expressionEvaluator = expressionEvaluator;
S = stringLocalizer;
}

public override LocalizedString DisplayText => S["Correlate Task"];
Expand All @@ -28,15 +35,26 @@ public WorkflowExpression<string> Value
set => SetProperty(value);
}

public WorkflowScriptSyntax Syntax
{
get => GetProperty(() => WorkflowScriptSyntax.JavaScript);
set => SetProperty(value);
}

public override IEnumerable<Outcome> GetPossibleOutcomes(WorkflowExecutionContext workflowContext, ActivityContext activityContext)
{
return Outcomes(S["Done"]);
}

public override async Task<ActivityExecutionResult> ExecuteAsync(WorkflowExecutionContext workflowContext, ActivityContext activityContext)
{
var value = (await _scriptEvaluator.EvaluateAsync(Value, workflowContext))?.Trim();
workflowContext.CorrelationId = value;
var value = Syntax switch {
WorkflowScriptSyntax.Liquid => await _expressionEvaluator.EvaluateAsync(Value, workflowContext, null),
WorkflowScriptSyntax.JavaScript => await _scriptEvaluator.EvaluateAsync(Value, workflowContext, null),
_ => throw new NotSupportedException($"The syntax {Syntax} isn't supported for CorrelateTask.")
};

workflowContext.CorrelationId = value?.Trim();

return Outcomes("Done");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ public class CorrelateTaskDisplayDriver : ActivityDisplayDriver<CorrelateTask, C
protected override void EditActivity(CorrelateTask activity, CorrelateTaskViewModel model)
{
model.Value = activity.Value.Expression;
model.Syntax = activity.Syntax;
}

protected override void UpdateActivity(CorrelateTaskViewModel model, CorrelateTask activity)
{
activity.Value = new WorkflowExpression<string>(model.Value);
activity.Syntax = model.Syntax;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
using OrchardCore.Workflows.Models;

namespace OrchardCore.Workflows.ViewModels
{
public class CorrelateTaskViewModel
{
public string Value { get; set; }

public WorkflowScriptSyntax Syntax { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,45 +1,62 @@
@using OrchardCore.Workflows.Models
@using OrchardCore.Workflows.ViewModels
@model CorrelateTaskViewModel

<div class="form-group mb-3" asp-validation-class-for="Syntax">
<label asp-for="Syntax" class="form-label">@T["Syntax"]</label>
<select asp-for="Syntax" class="form-select">
<option value="@nameof(WorkflowScriptSyntax.JavaScript)">@T["JavaScript"]</option>
<option value="@nameof(WorkflowScriptSyntax.Liquid)">@T["Liquid"]</option>
</select>
<span asp-validation-for="Syntax"></span>
</div>

<div class="mb-3" asp-validation-class-for="Value">
<label asp-for="Value" class="form-label">@T["Value"]</label>
<input type="hidden" asp-for="Value" class="form-control " />
<div id="@Html.IdFor(x => x.Value)_editor" asp-for="Text" class="form-control"></div>
<textarea asp-for="Value" class="form-control"></textarea>
<span asp-validation-for="Value"></span>
<span class="hint">@T["The value to correlate workflow instances with. With Javascript support."]</span>
<span id="liquid_hint" class="hint @(Model.Syntax == WorkflowScriptSyntax.Liquid ? "" : "d-none")">@T["The value to correlate workflow instances with. With Liquid support."]</span>
<span id="javascript_hint" class="hint @(Model.Syntax == WorkflowScriptSyntax.JavaScript ? "" : "d-none")">@T["The value to correlate workflow instances with. With JavaScript support."]</span>
</div>
<script asp-name="monaco" at="Foot"></script>
<script at="Foot" depends-on="monaco">
document.addEventListener('DOMContentLoaded', function () {
require(['vs/editor/editor.main'], function () {
var settings = {
"automaticLayout": true,
"language": "javascript"
};
var html = document.documentElement;
const mutationObserver = new MutationObserver(setTheme);
mutationObserver.observe(html, { attributes: true });
function setTheme() {
var theme = html.dataset.bsTheme;
if (theme === 'dark' || (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
monaco.editor.setTheme('vs-dark')
} else {
monaco.editor.setTheme('vs')
}
}

setTheme();
<style asp-name="codemirror"></style>
<script asp-name="codemirror" at="Foot"></script>
<script asp-name="codemirror-mode-javascript" at="Foot"></script>
<script asp-name="codemirror-addon-display-autorefresh" at="Foot"></script>
<script asp-name="codemirror-addon-mode-simple" at="Foot"></script>
<script asp-name="codemirror-addon-mode-multiplex" at="Foot"></script>
<script asp-name="codemirror-mode-xml" at="Foot"></script>
<script asp-src="~/OrchardCore.Liquid/codemirror/liquid.js" at="Foot" depends-on="codemirror"></script>
<script at="Foot" depends-on="codemirror">
var editor = monaco.editor.create(document.getElementById('@Html.IdFor(x => x.Value)_editor'), settings);
var textArea = document.getElementById('@Html.IdFor(x => x.Value)');
const initializeEditor = (textArea) => {
textArea.CoreMirrorEditor = CodeMirror.fromTextArea(textArea, {
autoCloseTags: true,
autoRefresh: true,
lineNumbers: true,
lineWrapping: true,
matchBrackets: true,
styleActiveLine: true,
mode: { name: '@(Model.Syntax.GetSyntaxName())' }
});
editor.getModel().setValue(textArea.value);
return textArea.CoreMirrorEditor;
};
window.addEventListener("submit", function () {
textArea.value = editor.getValue();
});
document.addEventListener('DOMContentLoaded', () => {
const editor = initializeEditor(document.getElementById('@Html.IdFor(x => x.Value)'));
document.getElementById('@Html.IdFor(x => x.Syntax)').addEventListener("change", (e) => {
const syntax = e.target.value.toLowerCase();
editor.setOption('mode', syntax);
if (syntax == 'javascript') {
document.getElementById('liquid_hint').classList.add('d-none');
document.getElementById('javascript_hint').classList.remove('d-none');
} else {
document.getElementById('javascript_hint').classList.add('d-none');
document.getElementById('liquid_hint').classList.remove('d-none');
}
});
});
</script>
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using OrchardCore.Workflows.Models;

namespace OrchardCore.Workflows.Helpers;

public static class WorkflowScriptSyntaxExtensions
{
public static string GetSyntaxName(this WorkflowScriptSyntax workflowScriptSyntax)
{
return workflowScriptSyntax switch
{
WorkflowScriptSyntax.JavaScript => "javascript",
WorkflowScriptSyntax.Liquid => "liquid",
_ => throw new NotSupportedException(),
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace OrchardCore.Workflows.Models;

public enum WorkflowScriptSyntax
{
JavaScript,
Liquid
}

0 comments on commit 7be7530

Please sign in to comment.