Repository navigation
Expand file tree
/
Copy pathScriptController.php
More file actions
112 lines (95 loc) · 3.78 KB
/
Copy pathScriptController.php
File metadata and controls
112 lines (95 loc) · 3.78 KB
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
<?php
namespace ProcessMaker\Http\Controllers\Process;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;
use ProcessMaker\Events\ScriptBuilderStarting;
use ProcessMaker\Http\Controllers\Controller;
use ProcessMaker\Managers\ScriptBuilderManager;
use ProcessMaker\Models\ProcessRequest;
use ProcessMaker\Models\Script;
use ProcessMaker\Models\ScriptCategory;
use ProcessMaker\Models\ScriptExecutor;
use ProcessMaker\Models\User;
use ProcessMaker\PackageHelper;
use ProcessMaker\Traits\HasControllerAddons;
class ScriptController extends Controller
{
use HasControllerAddons;
/**
* Get the list of environment variables
*
* @return \Illuminate\View\View|\Illuminate\Contracts\View
*/
public function index(Request $request)
{
$catConfig = (object) [
'labels' => (object) [
'countColumn' => __('# Scripts'),
],
'routes' => (object) [
'itemsIndexWeb' => 'scripts.index',
'editCategoryWeb' => 'script-categories.edit',
'categoryListApi' => 'api.script_categories.index',
],
'countField' => 'scripts_count',
'apiListInclude' => 'scriptsCount',
'permissions' => [
'view' => $request->user()->can('view-script-categories'),
'create' => $request->user()->can('create-script-categories'),
'edit' => $request->user()->can('edit-script-categories'),
'delete' => $request->user()->can('delete-script-categories'),
],
];
$listConfig = (object) [
'scriptExecutors' => ScriptExecutor::list(),
'countCategories' => ScriptCategory::where(['status' => 'ACTIVE', 'is_system' => false])->count(),
];
return view('processes.scripts.index', compact('listConfig', 'catConfig'));
}
public function edit(Script $script, User $users)
{
$selectedUser = $script->runAsUser;
$scriptExecutors = ScriptExecutor::list($script->scriptExecutor->language);
$addons = $this->getPluginAddons('edit', compact(['script']));
return view('processes.scripts.edit', compact('script', 'selectedUser', 'scriptExecutors', 'addons'));
}
public function builder(ScriptBuilderManager $manager, Request $request, Script $script)
{
$processRequestAttributes = $this->getProcessRequestAttributes();
$processRequestAttributes['user_id'] = $request->user()->id;
$testData = [
'_request' => $processRequestAttributes,
];
$draft = $script->versions()->draft()->first();
if ($draft) {
$script->fill($draft->only(['code']));
}
/**
* Emit the ScriptBuilderStarting event, passing in our ScriptBuilderManager instance. This will
* allow packages to add additional javascript for Script Builder initialization which
* can customize the Script Builder controls list.
*/
event(new ScriptBuilderStarting($manager));
return view('processes.scripts.builder', [
'script' => $script,
'manager' => $manager,
'testData' => $testData,
'autoSaveDelay' => config('versions.delay.script', 5000),
'isVersionsInstalled' => PackageHelper::isPmPackageVersionsInstalled(),
]);
}
private function getProcessRequestAttributes()
{
$emptyProcessRequest = new ProcessRequest();
$columns = Schema::connection(
$emptyProcessRequest->getConnectionName()
)->getColumnListing(
$emptyProcessRequest->getTable()
);
$attributes = [];
foreach ($columns as $column) {
$attributes[$column] = null;
}
return $attributes;
}
}