-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathEdit.cshtml
134 lines (120 loc) · 5.48 KB
/
Edit.cshtml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
@model AdminEditViewModel
@using Orchard.Forms.Services
@using Orchard.Workflows.ViewModels;
@{
Layout.Title = @T("Edit Workflow {0}", Model.WorkflowDefinition.Name);
Style.Require("WorkflowsAdmin");
Style.Require("WorkflowsActivities");
Style.Require("jQueryUI_Orchard");
Script.Require("jQueryUI_Dialog").AtFoot();
Script.Require("jsPlumb").AtFoot();
Script.Include("orchard-workflows-serialize.js").AtFoot();
Script.Include("orchard-workflows.js").AtFoot();
}
@using (Html.BeginFormAntiForgeryPost("Edit")) {
@Html.ValidationSummary()
<div id="workflow-container">
<div id="editor-wrapper">
<div id="activity-editor">
<div id="activity-toolbar">
<div id="activity-toolbar-start">
<input type="checkbox" id="activity-toolbar-start-checkbox"/>
<label for="activity-toolbar-start-checkbox" title="@T("Starts workflow")"></label>
</div>
<div id="activity-toolbar-edit">
<label title="@T("Edit")"></label>
</div>
<div id="activity-toolbar-delete">
<label title="@T("Delete")"></label>
</div>
</div>
</div>
</div>
<div id="activity-toolbox" @if(Model.Workflow != null) { <text>style="visibility:hidden"</text>}>
@Display.ActivityToolbox(Model)
</div>
<div id="workflow-footer"></div>
</div>
using (Script.Head()) {
<script type="text/javascript">
//<![CDATA[
var renderActivityUrl = '@HttpUtility.JavaScriptStringEncode(Url.Action("RenderActivity", "Admin", new { area = "Orchard.Workflows" }))';
var editActivityUrl = '@HttpUtility.JavaScriptStringEncode(Url.Action("EditActivity", "Admin", new { area = "Orchard.Workflows" }))';
var stateUrl = '@HttpUtility.JavaScriptStringEncode(Url.Action("State", "Admin", new { area = "Orchard.Workflows" }))';
var requestAntiForgeryToken = '@HttpUtility.JavaScriptStringEncode(Html.AntiForgeryTokenValueOrchard().ToString())';
var localId = '@HttpUtility.JavaScriptStringEncode(Model.LocalId)';
var updatedActivityClientId = null;
var updatedActivityState = null;
var awaitingRecords = [];
@if (TempData.ContainsKey("UpdatedViewModel")) {
var model = TempData["UpdatedViewModel"] as UpdatedActivityModel;
if (model != null) {
@: updatedActivityClientId = '@(model.ClientId)';
@: updatedActivityState = '@Html.Raw(model.Data)';
}
}
else if (!Model.IsLocal) {
@: var state = @Html.Raw(Model.WorkflowDefinition.JsonData);
@: sessionStorage.setItem(localId, JSON.stringify(state));
}
@if (Model.Workflow != null) {
@: awaitingRecords = [@String.Join(",", Model.Workflow.AwaitingActivities.Select(x => x.ActivityRecord.Id.ToString()).ToArray())];
}
//]]>
</script>
}
@Html.Hidden("id", Model.WorkflowDefinition.Id)
@Html.Hidden("localId", Model.LocalId)
@Html.Hidden("data", String.Empty)
@Html.Hidden("confirm-delete-activity", T("Are you sure you want to remove this activity?"))
@Html.Hidden("confirm-delete-instances", T("You have running instances of this workflow, do you want to stop them?"))
using (Script.Foot()) {
<script type="text/javascript">
//<![CDATA[
$("form").submit(function (e, submit, clearWorkflows) {
if(submit){
saveLocal(localId);
var workflow = loadWorkflow(localId);
var data = JSON.stringify(workflow);
$("[name='data']").val(data);
var values = [$("<input>", { type: "hidden", name: "clearWorkflows", value: clearWorkflows }), $("<input>", { type: "hidden", name: "submit.Save", value: "Save" })];
$(this).append(values);
return true;
}
e.preventDefault();
$.ajax({
url: stateUrl + "/" + $("#id").val(),
async: false,
success: function(state) {
if (state.isRunning) {
var dialog = $('<p>' + $("#confirm-delete-instances").val() + '</p>').dialog({
buttons: {
'@T("Yes")': function() { $('form').trigger('submit', [true, true]); },
'@T("No")': function() { $('form').trigger('submit', [true, false]); },
'@T("Cancel")': function() {
dialog.dialog('close');
}
}
});
}
else {
$('form').trigger('submit', [true, false]);
}
}
});
});
//]]>
</script>
}
<fieldset>
@* Can only save if not debugging a workflow *@
@if (Model.Workflow == null) {
<button class="primaryAction" type="submit" name="submit.Save" value="@T("Save")">@T("Save")</button>
}
@Html.ActionLink(T("Close").Text, "Index", "Admin", new { area = "Orchard.Workflows" }, new { @class = "primaryAction button" })
</fieldset>
}
@using (Capture(Layout.Messages)) {
<div id="save-message" class="message message-Warning" style="display:none">@T("You need to hit \"Save\" in order to save your changes.")</div>
<div id="start-message" class="message message-Warning" style="display:none">@T("The workflow needs at least one activity to be set as a starting state.")</div>
}