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 AdminGenericInterfaceInvokerDefault">
9    <h1 class="InvisibleText">[% Translate("GenericInterface Web Service Management") | html %]</h1>
10
11    [% USE BreadcrumbLink = String("AdminGenericInterfaceWebservice") %]
12
13    [% BreadcrumbPath = [
14            {
15                Name => Translate( 'Web Service Management' ),
16                Link => BreadcrumbLink,
17            },
18            {
19                Name => Data.WebserviceName,
20                Link => BreadcrumbLink.copy.append( ";Subaction=Change;WebserviceID=", Data.WebserviceID ),
21            },
22        ]
23    %]
24
25    [% SWITCH Data.Mode %]
26        [% CASE 'Add' %]
27            [% BreadcrumbPath.push({ Name => Translate("Add Invoker"),}) %]
28        [% CASE 'Change' %]
29            [% USE EditTitle = String(Translate("Edit Invoker")) %]
30            [% BreadcrumbPath.push({ Name => EditTitle.append( ': ', Data.Invoker ), }) %]
31    [% END %]
32
33    [% INCLUDE "Breadcrumb.tt" Path = BreadcrumbPath %]
34
35    <div class="Clear"></div>
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.Mode == '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 invoker?") | 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        <div class="WidgetSimple">
68            <div class="Header">
69                <h2>[% Translate("Invoker Details") | html %]</h2>
70            </div>
71            <div class="Content">
72                <form action="[% Env("CGIHandle") %]" class="Validate" method="post">
73                    <input type="hidden" name="Action" value="AdminGenericInterfaceInvokerDefault" />
74                    <input type="hidden" name="Subaction" value="[% Data.Mode | html %]Action" />
75                    <input type="hidden" name="WebserviceID" value="[% Data.WebserviceID | html %]" id="WebserviceID" />
76                    <input type="hidden" name="InvokerType" value="[% Data.InvokerType | html %]" />
77                    [% IF Data.Mode == 'Change' %]
78                        <input type="hidden" name="ContinueAfterSave" id="ContinueAfterSave" value=""/>
79                    [% END %]
80
81                    <fieldset class="TableLike">
82                        <label for="Invoker" class="Mandatory">
83                            <span class="Marker">*</span>
84                            [% Translate("Name") | html %]:
85                        </label>
86                        <div class="Field">
87                            <input type="text" class="W50pc RegisterChange Validate_Required [% Data.InvokerServerError | html %]" maxlength="200" id="Invoker" name="Invoker" value="[% Data.NewInvoker | html %]" />
88                            <input type="hidden" id="OldInvoker" name="OldInvoker" value="[% Data.Invoker | html %]" />
89                            <p class="FieldExplanation">
90                                [% Translate("The name is typically used to call up an operation of a remote web service.") | html %]
91                            </p>
92                            <div id="InvokerError" class="TooltipErrorMessage">
93                                [% Translate("This field is required.") | html %] [% Translate("Please provide a unique name for this web service.") | html %]
94                            </div>
95                            <div id="InvokerServerError" class="TooltipErrorMessage">
96                                [% Translate("The name you entered already exists.") | html %]
97                            </div>
98                        </div>
99                        <div class="Clear"></div>
100
101                        <label for="Description">
102                            [% Translate("Description") | html %]:
103                        </label>
104                        <div class="Field">
105                            <input type="text" class="W50pc RegisterChange" maxlength="200" id="Description" name="Description" value="[% Data.Description | html %]" />
106                        </div>
107                        <div class="Clear"></div>
108
109                        <label for="InvokerTypeDisplay">[% Translate("Invoker backend") | html %]:</label>
110                        <div class="Field">
111                            <input type="text" readonly="readonly" class="W50pc" id="InvokerTypeDisplay" value="[% Data.InvokerType | html %]" />
112                            <p class="FieldExplanation">
113                                [% Translate("This OTRS invoker backend module will be called to prepare the data to be sent to the remote system, and to process its response data.") | html %]
114                            </p>
115                        </div>
116                        <div class="Clear"></div>
117
118                        <label for="MappingOutbound">[% Translate("Mapping for outgoing request data") | html %]:</label>
119                        <div class="Field">
120                            [% Data.MappingOutboundStrg %]
121[% RenderBlockStart("MappingOutboundConfigureButton") %]
122                            <input type="hidden" id="MappingOutboundConfigDialog" value="[% Data.MappingOutboundConfigDialog | html %]" />
123                            <button type="button" class="HideOnChange CallForAction InLine" id="MappingOutboundConfigureButton" value="[% Translate("Configure") | html %]"><span>[% Translate("Configure") | html %]</span></button>
124[% RenderBlockEnd("MappingOutboundConfigureButton") %]
125                            <p class="FieldExplanation">
126                                [% Translate("The data from the invoker of OTRS will be processed by this mapping, to transform it to the kind of data the remote system expects.") | html %]
127                            </p>
128                        </div>
129                        <div class="Clear"></div>
130
131                        <label for="MappingInbound">[% Translate("Mapping for incoming response data") | html %]:</label>
132                        <div class="Field">
133                            [% Data.MappingInboundStrg %]
134[% RenderBlockStart("MappingInboundConfigureButton") %]
135                            <input type="hidden" id="MappingInboundConfigDialog" value="[% Data.MappingInboundConfigDialog | html %]" />
136                            <button type="button" class="HideOnChange CallForAction InLine" id="MappingInboundConfigureButton" value="[% Translate("Configure") | html %]"><span>[% Translate("Configure") | html %]</span></button>
137[% RenderBlockEnd("MappingInboundConfigureButton") %]
138                            <p class="FieldExplanation">
139                                [% Translate("The response data will be processed by this mapping, to transform it to the kind of data the invoker of OTRS expects.") | html %]
140                            </p>
141                        </div>
142                        <div class="Clear"></div>
143
144                        [% IF Data.Mode == 'Change' %]
145                            <label for="EventsTable">[% Translate("Event Triggers") | html %]:</label>
146                            <div class="Field W50pc">
147                                <table class="DataTable W50pc" id="EventsTable" summary="List of all configured events">
148                                    <thead>
149                                        <tr>
150                                            <th class="Center">[% Translate("Event") | html %]</th>
151                                            <th class="Center">[% Translate("Asynchronous") | html %]</th>
152                                            <th class="Center">[% Translate("Condition") | html %]</th>
153                                            <th class="Center">[% Translate("Edit") | html %]</th>
154                                            <th class="Center">[% Translate("Delete") | html %]</th>
155                                        </tr>
156                                    </thead>
157                                    <tbody>
158[% RenderBlockStart("NoDataFoundMsg") %]
159                                        <tr>
160                                            <td colspan="5">
161                                                [% Translate("No data found.") | html %]
162                                            </td>
163                                        </tr>
164[% RenderBlockEnd("NoDataFoundMsg") %]
165
166[% RenderBlockStart("EventRow") %]
167                                        <tr>
168                                            <td class="AsBlock">[% Data.Event | html %]</td>
169                                            <td class="Center">[% Translate(Data.Asynchronous) | html %]</td>
170                                            <td class="Center">[% Translate(Data.Condition) | html %]</td>
171                                            <td class="Center">
172                                                <a class="Pencil EditEvent HideOnChange" href="[% Env("Baselink") %]Action=AdminGenericInterfaceInvokerEvent;Subaction=Change;WebserviceID=[% Data.WebserviceID | html %];Invoker=[% Data.Invoker | html %];Event=[% Data.Event | html %]" title="[% Translate("Edit this event") | html %]">
173                                                    [% Translate("Edit this event") | html %]
174                                                    <i class="fa fa-edit"></i>
175                                                </a>
176                                            <td class="Center">
177                                                <a id="DeleteEvent[% Data.Event | html %]" class="TrashCan DeleteEvent HideOnChange" href="#" title="[% Translate("Delete this event") | html %]">
178                                                    [% Translate("Delete this event") | html %]
179                                                    <i class="fa fa-trash-o"></i>
180                                                </a>
181                                            </td>
182                                        </tr>
183[% RenderBlockEnd("EventRow") %]
184                                    </tbody>
185                                </table>
186                                <p class="FieldExplanation">
187                                    [% Translate("This invoker will be triggered by the configured events.") | html %]
188                                </p>
189                            </div>
190
191                            <div class="Hidden" id="DeleteEventDialogContainer">
192                                <div id ="DeleteEventDialog" class="InnerContent GenericInterfaceDialog">
193                                    <span class="WarningDialog ">&nbsp;</span>
194                                    <p class="Center Warning">[% Translate("Do you really want to delete this event trigger?") | html %]</p>
195                                    <div class="SpacingTop"></div>
196                                </div>
197                            </div>
198
199                            <div class="SpacingTop"></div>
200                            <label for="EventType">[% Translate("Add Event Trigger") | html %]:</label>
201                            <div class="Field">
202                                [% Data.EventTypeStrg %]
203[% RenderBlockStart("EventAdd") %]
204                                [% Data.EventStrg %]
205[% RenderBlockEnd("EventAdd") %]
206                                <input type="checkbox" id="Asynchronous" checked="checked" class="GenericInterfaceSpacing" name="Asynchronous"/><label for="Asynchronous">[% Translate("Asynchronous") | html %]</label>
207                                <button type="button" id="AddEvent" class="Add GenericInterfaceSpacing HideOnChange" name="AddEvent" value="[% Translate("Add Event") | html %]">[% Translate("Add Event") | html %]</button>
208                                <p class="FieldExplanation">
209                                    [% Translate("To add a new event select the event object and event name and click on the \"+\" button") | html %].
210                                </p>
211                                <p class="FieldExplanation">
212                                    [% Translate("Asynchronous event triggers are handled by the OTRS Scheduler Daemon in background (recommended).") | html %]
213                                    <br/>
214                                    [% Translate("Synchronous event triggers would be processed directly during the web request.") | html %]
215                                </p>
216                            </div>
217                            <div class="Clear"></div>
218                        [% END %]
219
220                        <div class="Field SpacingTop">
221                            [% IF Data.Mode == 'Change' %]
222                                <button class="CallForAction Primary" id="SubmitAndContinue" type="button" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
223                                [% Translate("or") | html %]
224                                <button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save and finish") | html %]</span></button>
225                            [% ELSE %]
226                                <button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
227                            [% END %]
228                            [% Translate("or") | html %]
229                            <a href="[% Env("Baselink") %]Action=AdminGenericInterfaceWebservice;Subaction=Change;WebserviceID=[% Data.WebserviceID | uri %]"><span>[% Translate("Cancel") | html %]</span></a>
230                        </div>
231                        <div class="Clear"></div>
232
233                    </fieldset>
234                </form>
235            </div>
236        </div>
237    </div>
238    <div class="Clear"></div>
239</div>
240