1# --
2# Copyright (C) 2001-2020 OTRS AG, https://otrs.com/
3# --
4# This software comes with ABSOLUTELY NO WARRANTY. For details, see
5# the enclosed file COPYING for license information (GPL). If you
6# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
7# --
8<div class="MainBox ARIARoleMain LayoutFixedSidebar SidebarFirst">
9    <h1 class="InvisibleText">[% Translate( "GenericInterface Web Service Management" ) | html %]</h1>
10
11    [% USE WebserviceLink = String("AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=") %]
12
13    [% BreadcrumbPath = [
14            {
15                Name => Translate( 'Web Service Management' ),
16                Link => BreadcrumbLink,
17            },
18            {
19                Name => Data.WebserviceName,
20                Link => WebserviceLink.append( Data.WebserviceID ),
21            },
22        ]
23    %]
24
25    [% SWITCH Data.Action %]
26        [% CASE 'Add' %]
27            [% USE AddTitle = String(Translate("Add ErrorHandling")) %]
28            [% BreadcrumbPath.push({ Name => AddTitle.append( ': ', Data.ErrorHandlingType ), }) %]
29        [% CASE 'Change' %]
30            [% USE EditTitle = String(Translate("Edit ErrorHandling")) %]
31            [% BreadcrumbPath.push({ Name => EditTitle.append( ': ', Data.ErrorHandlingType ), }) %]
32    [% END %]
33
34    [% INCLUDE "Breadcrumb.tt" Path = BreadcrumbPath %]
35
36    <div class="SidebarColumn">
37        <div class="WidgetSimple">
38            <div class="Header">
39                <h2>[% Translate("Actions") | html %]</h2>
40            </div>
41            <div class="Content">
42                <ul class="ActionList">
43                    <li>
44                        <a href="[% Env("Baselink") %]Action=AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=[% Data.WebserviceID | uri %]" class="CallForAction Fullsize Center"><span><i class="fa fa-caret-left"></i> [% Translate("Go back to web service") | html %]</span></a>
45                    </li>
46[% IF Data.Action == 'Change' %]
47                    <li>
48                        <button class="CallForAction Fullsize Center" type="button" id="DeleteButton"><span> <i class="fa fa-trash-o"></i> [% Translate("Delete") | html %]</span></button>
49                        <div class="Hidden" id="DeleteDialogContainer">
50                            <span class="WarningDialog ">&nbsp;</span>
51                            <p id="DeleteDialog" class="Center Warning">
52                                [% Translate("Do you really want to delete this error handling module?") | html %]
53                            </p>
54                            <p class="Center Warning">
55                                [% Translate("All configuration data will be lost.") | html %]
56                            </p>
57                            <div class="SpacingTop"></div>
58                        </div>
59                    </li>
60[% END %]
61                </ul>
62            </div>
63        </div>
64    </div>
65    <div class="ContentColumn">
66
67        <form action="[% Env("CGIHandle") %]" class="Validate" method="post">
68            <input type="hidden" name="Action" value="AdminGenericInterfaceErrorHandlingDefault" />
69            <input type="hidden" name="Subaction" value="[% Data.Action | html %]Action" />
70            <input type="hidden" id="WebserviceID" name="WebserviceID" value="[% Data.WebserviceID | html %]" />
71            <input type="hidden" name="CommunicationType" value="[% Data.CommunicationType | html %]" />
72            <input type="hidden" name="ErrorHandlingType" value="[% Data.ErrorHandlingType | html %]" />
73            [% IF Data.Action == 'Change' %]
74                <input type="hidden" name="ContinueAfterSave" id="ContinueAfterSave" value=""/>
75            [% END %]
76
77            <!-- General options -->
78            <div class="WidgetSimple Expanded">
79                <div class="Header">
80                    <div class="WidgetAction Toggle">
81                        <a href="#" title="[% Translate("Show or hide the content") | html %]"><i class="fa fa-caret-right"></i><i class="fa fa-caret-down"></i></a>
82                    </div>
83                    <h2>[% Translate("General options") | html %]</h2>
84                </div>
85                <div class="Content">
86
87                    <fieldset class="TableLike">
88                        <label for="ErrorHandling" class="Mandatory">
89                            <span class="Marker">*</span>
90                            [% Translate("Name") | html %]:
91                        </label>
92                        <div class="Field">
93                            <input type="text" class="W50pc Validate_Required [% Data.ErrorHandlingServerError | html %]" maxlength="200" id="ErrorHandling" name="ErrorHandling" value="[% Data.ErrorHandling | html %]" />
94                            <input type="hidden" name="OldErrorHandling" value="[% Data.OldErrorHandling | html %]" />
95                            <p class="FieldExplanation">
96                                [% Translate("The name can be used to distinguish different error handling configurations.") | html %]
97                            </p>
98                            <div id="ErrorHandlingError" class="TooltipErrorMessage">
99                                [% Translate("Please provide a unique name for this web service.") | html %]
100                            </div>
101                            <div id="ErrorHandlingServerError" class="TooltipErrorMessage">
102                                [% Translate("The name you entered already exists.") | html %]
103                            </div>
104                        </div>
105                        <div class="Clear"></div>
106
107                        <label for="Description">
108                            [% Translate("Description") | html %]:
109                        </label>
110                        <div class="Field">
111                            <input type="text" class="W50pc" maxlength="200" id="Description" name="Description" value="[% Data.Description | html %]" />
112                        </div>
113                        <div class="Clear"></div>
114
115                        <label for="ErrorHandlingTypeDisplay">[% Translate("Error handling module backend") | html %]:</label>
116                        <div class="Field">
117                            <input type="text" readonly="readonly" class="W50pc" id="ErrorHandlingTypeDisplay" value="[% Data.ErrorHandlingType | html %]" />
118                            <p class="FieldExplanation">
119                                [% Translate("This OTRS error handling backend module will be called internally to process the error handling mechanism.") | html %]
120                            </p>
121                        </div>
122                        <div class="Clear"></div>
123
124                    </fieldset>
125                </div>
126            </div>
127
128            <!-- Processing options -->
129            <div class="WidgetSimple Expanded">
130                <div class="Header">
131                    <div class="WidgetAction Toggle">
132                        <a href="#" title="[% Translate("Show or hide the content") | html %]"><i class="fa fa-caret-right"></i><i class="fa fa-caret-down"></i></a>
133                    </div>
134                    <h2>[% Translate("Processing options") | html %]</h2>
135                </div>
136                <div class="Content">
137
138                    <fieldset class="TableLike">
139
140                        <div class="Field">
141                            [% Translate("Configure filters to control error handling module execution.") | html %]
142                            <p class="FieldExplanation">
143                                [% Translate("Only requests matching all configured filters (if any) will trigger module execution.") | html %]
144                            </p>
145                        </div>
146                        <div class="Clear"></div>
147
148[% RenderBlockStart("OperationFilter") %]
149                        <label for="OperationFilter">
150                            [% Translate("Operation filter") | html %]:
151                        </label>
152                        <div class="Field">
153                            [% Data.OperationFilterStrg %]
154                            <p class="FieldExplanation">
155                                [% Translate("Only execute error handling module for selected operations.") | html %]<br/>
156                                [% Translate("Note: Operation is undetermined for errors occuring while receiving incoming request data. Filters involving this error stage should not use operation filter.") | html %]
157                            </p>
158                        </div>
159                        <div class="Clear"></div>
160[% RenderBlockEnd("OperationFilter") %]
161[% RenderBlockStart("InvokerFilter") %]
162                        <label for="InvokerFilter">
163                            [% Translate("Invoker filter") | html %]:
164                        </label>
165                        <div class="Field">
166                            [% Data.InvokerFilterStrg %]
167                            <p class="FieldExplanation">
168                                [% Translate("Only execute error handling module for selected invokers.") | html %]
169                            </p>
170                        </div>
171                        <div class="Clear"></div>
172[% RenderBlockEnd("InvokerFilter") %]
173
174                        <label for="ErrorMessageContentFilter">
175                            [% Translate("Error message content filter") | html %]:
176                        </label>
177                        <div class="Field">
178                            <input type="text" class="W50pc [% Data.ErrorMessageContentFilterServerError | html %]" maxlength="200" id="ErrorMessageContentFilter" name="ErrorMessageContentFilter" value="[% Data.ErrorMessageContentFilter | html %]" />
179                            <input type="hidden" id="ErrorMessageContentFilter" name="ErrorMessageContentFilter" value="[% Data.ErrorMessageContentFilter | html %]" />
180                            <p class="FieldExplanation">
181                                [% Translate("Enter a regular expression to restrict which error messages should cause error handling module execution.") | html %]<br/>
182                                [% Translate("Error message subject and data (as seen in the debugger error entry) will considered for a match.") | html %]<br/>
183                                [% Translate("Example: Enter '^.*401 Unauthorized.*\$' to handle only authentication related errors.") | html %]
184                            </p>
185                        </div>
186                        <div class="Clear"></div>
187
188                        <label for="ErrorStageFilter">
189                            [% Translate("Error stage filter") | html %]:
190                        </label>
191                        <div class="Field">
192                            [% Data.ErrorStageFilterStrg %]
193                            <p class="FieldExplanation">
194                                [% Translate("Only execute error handling module on errors that occur during specific processing stages.") | html %]<br/>
195                                [% Translate("Example: Handle only errors where mapping for outgoing data could not be applied.") | html %]
196                            </p>
197                        </div>
198                        <div class="Clear"></div>
199
200                        <label for="ErrorCode">
201                            [% Translate("Error code") | html %]:
202                        </label>
203                        <div class="Field">
204                            <input type="text" class="W50pc" maxlength="200" id="ErrorCode" name="ErrorCode" value="[% Data.ErrorCode | html %]" />
205                            <p class="FieldExplanation">
206                                [% Translate("An error identifier for this error handling module.") | html %]<br/>
207                                [% Translate("This identifier will be available in XSLT-Mapping and shown in debugger output.") | html %]
208                            </p>
209                        </div>
210                        <div class="Clear"></div>
211
212                        <label for="ErrorMessage">
213                            [% Translate("Error message") | html %]:
214                        </label>
215                        <div class="Field">
216                            <input type="text" class="W50pc" maxlength="200" id="ErrorMessage" name="ErrorMessage" value="[% Data.ErrorMessage | html %]" />
217                            <p class="FieldExplanation">
218                                [% Translate("An error explanation for this error handling module.") | html %]<br/>
219                                [% Translate("This message will be available in XSLT-Mapping and shown in debugger output.") | html %]
220                            </p>
221                        </div>
222                        <div class="Clear"></div>
223
224                        <label for="StopAfterMatch">
225                            [% Translate("Stop after match") | html %]:
226                        </label>
227                        <div class="Field">
228                            [% Data.StopAfterMatchStrg %]
229                            <p class="FieldExplanation">
230                                [% Translate("Define if processing should be stopped after module was executed, skipping all remaining modules or only those of the same backend.") | html %]<br/>
231                                [% Translate("Default behavior is to resume, processing the next module.") | html %]
232                            </p>
233                        </div>
234                        <div class="Clear"></div>
235
236                    </fieldset>
237                </div>
238            </div>
239
240            <!-- Submit options -->
241            <div class="WidgetSimple">
242                <div class="Header">
243                    <h2>[% Translate("Submit") | html %]</h2>
244                </div>
245                <div class="Content">
246
247                    <fieldset class="TableLike">
248
249                        <div class="Field SpacingTop">
250                            [% IF Data.Action == 'Change' %]
251                                <button class="CallForAction Primary" id="SubmitAndContinue" type="button" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
252                                [% Translate("or") | html %]
253                                <button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save and finish") | html %]</span></button>
254                            [% ELSE %]
255                                <button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
256                            [% END %]
257                            [% Translate("or") | html %]
258                            <a href="[% Env("Baselink") %]Action=AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=[% Data.WebserviceID | uri %]"><span>[% Translate("Cancel") | html %]</span></a>
259                        </div>
260                        <div class="Clear"></div>
261
262                    </fieldset>
263                </div>
264            </div>
265        </form>
266    </div>
267    <div class="Clear"></div>
268</div>
269