Bug 34112: Replace fa.fa-pencil-alt with fa-solid.fa-pencil in edit buttons
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / smtp_servers.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% SET footerjs = 1 %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>
6     [% IF op == 'add_form' %]
7         New SMTP server &rsaquo; [% ELSIF op == 'edit_form' %]
8         Edit SMTP server &rsaquo; [% END %]
9
10     SMTP servers &rsaquo; Administration &rsaquo; Koha
11 </title>
12 [% INCLUDE 'doc-head-close.inc' %]
13 </head>
14
15 <body id="admin_smtp_servers" class="admin">
16 [% WRAPPER 'header.inc' %]
17     [% INCLUDE 'prefs-admin-search.inc' %]
18 [% END %]
19
20 [% WRAPPER 'sub-header.inc' %]
21     [% WRAPPER breadcrumbs %]
22         [% WRAPPER breadcrumb_item %]
23             <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
24         [% END %]
25
26         [% IF op == 'add_form' || op == 'edit_form' %]
27             [% WRAPPER breadcrumb_item %]
28                 <a href="/cgi-bin/koha/admin/smtp_servers.pl">SMTP servers</a>
29             [% END %]
30         [% END %]
31
32         [% IF op == 'add_form' %]
33             [% WRAPPER breadcrumb_item bc_active= 1 %]
34                 <span>New</span>
35             [% END %]
36
37         [% ELSIF op == 'edit_form' %]
38             [% WRAPPER breadcrumb_item bc_active= 1 %]
39                 <span>Edit</span>
40             [% END %]
41
42         [% ELSE %]
43             [% WRAPPER breadcrumb_item bc_active= 1 %]
44                 <span>SMTP servers</span>
45             [% END %]
46         [% END %]
47     [% END #/ WRAPPER breadcrumbs %]
48 [% END #/ WRAPPER sub-header.inc %]
49
50 <div class="main container-fluid">
51     <div class="row">
52         <div class="col-sm-10 col-sm-push-2">
53             <main>
54
55 [% FOREACH m IN messages %]
56     <div class="dialog [% m.type | html %]" id="smtp_action_result_dialog">
57         [% SWITCH m.code %]
58         [% CASE 'error_on_update' %]
59             <span>An error occurred trying to open the server for editing. The passed ID is invalid.</span>
60         [% CASE 'error_on_insert' %]
61             <span>An error occurred when adding the server. The library already has an SMTP server set.</span>
62         [% CASE 'success_on_update' %]
63             <span>Server updated successfully.</span>
64         [% CASE 'success_on_insert' %]
65             <span>Server added successfully.</span>
66         [% CASE %]
67             <span>[% m.code | html %]</span>
68         [% END %]
69     </div>
70 [% END %]
71
72     <div class="dialog message" id="smtp_delete_success" style="display: none;"></div>
73     <div class="dialog alert"   id="smtp_delete_error"   style="display: none;"></div>
74
75 [% IF op == 'add_form' %]
76     <h1>New SMTP server</h1>
77     <form action="/cgi-bin/koha/admin/smtp_servers.pl" id="add" name="add" class="validated" method="post">
78         <input type="hidden" name="op" value="add" />
79         <fieldset class="rows">
80             <ol>
81                 <li>
82                     <label for="smtp_name" class="required">Name: </label>
83                     <input type="text" name="smtp_name" id="smtp_name" size="60" class="required focus" required="required" />
84                     <span class="required">Required</span>
85                 </li>
86             </ol>
87         </fieldset>
88
89         <fieldset class="rows">
90             <ol>
91                 <li>
92                     <label for="smtp_host" class="required">Host: </label>
93                     <input type="text" name="smtp_host" id="smtp_host" size="60" class="required"/>
94                     <span class="required">Required</span>
95                 </li>
96                 <li>
97                     <label for="smtp_port" class="required">Port: </label>
98                     <input type="text" inputmode="numeric" pattern="[0-9]*" value="25" name="smtp_port" id="smtp_port" size="20" class="required"/>
99                     <span class="required">Required</span>
100                 </li>
101                 <li>
102                     <label for="smtp_timeout">Timeout (seconds): </label>
103                     <input type="text" inputmode="numeric" pattern="[0-9]*" value="120" name="smtp_timeout" id="smtp_timeout" size="20" />
104                 </li>
105                 <li>
106                     <label for="smtp_ssl_mode">SSL: </label>
107                     <select name="smtp_ssl_mode" id="smtp_ssl_mode">
108                         <option value="disabled" selected="selected">Disabled</option>
109                         <option value="ssl">SSL</option>
110                         <option value="starttls">STARTTLS</option>
111                     </select>
112                 </li>
113                 <li>
114                     <label for="smtp_user_name">User name: </label>
115                     <input type="text" name="smtp_user_name" id="smtp_user_name" size="60" autocomplete="off" />
116                 </li>
117                 <li>
118                     <label for="smtp_password">Password: </label>
119                     <input type="password" name="smtp_password" id="smtp_password" size="60" autocomplete="off" />
120                 </li>
121                 <li>
122                     <label for="smtp_debug_mode">Debug mode: </label>
123                     <select name="smtp_debug_mode" id="smtp_debug_mode">
124                         <option value="1">Enabled</option>
125                         <option value="0" selected="selected">Disabled</option>
126                     </select>
127                     <span>Enables additional debug output in the logs</span>
128                 </li>
129                 <li>
130                     <label for="smtp_default">Default server: </label>
131                     <input type="checkbox" name="smtp_default" id="smtp_default" />
132                     <span>Sets this SMTP server as the default SMTP server.</span>
133                 </li>
134             </ol>
135         </fieldset>
136         <fieldset class="action">
137             <input type="submit" class="btn btn-primary" value="Submit" />
138             <a class="cancel" href="/cgi-bin/koha/admin/smtp_servers.pl">Cancel</a>
139         </fieldset>
140     </form>
141 [% END %]
142
143 [% IF op == 'edit_form' %]
144     <h1>Edit SMTP server</h1>
145     <form action="/cgi-bin/koha/admin/smtp_servers.pl" id="edit_save" name="edit_save" class="validated" method="post">
146         <input type="hidden" name="op" value="edit_save" />
147         <input type="hidden" name="smtp_server_id" value="[%- smtp_server.id | html -%]" />
148         <fieldset class="rows">
149             <ol>
150                 <li>
151                     <label for="smtp_name" class="required">Name: </label>
152                     <input type="text" name="smtp_name" id="smtp_name" size="60" class="required" required="required" value="[%- smtp_server.name | html -%]"/>
153                     <span class="required">Required</span>
154                 </li>
155             </ol>
156         </fieldset>
157
158         <fieldset class="rows">
159             <ol>
160                 <li>
161                     <label for="smtp_host" class="required">Host: </label>
162                     <input type="text" name="smtp_host" id="smtp_host" size="60" class="required" value="[%- smtp_server.host | html -%]"/>
163                     <span class="required">Required</span>
164                 </li>
165                 <li>
166                     <label for="smtp_port" class="required">Port: </label>
167                     <input type="text" inputmode="numeric" pattern="[0-9]*" name="smtp_port" id="smtp_port" size="20" class="required" value="[%- smtp_server.port | html -%]"/>
168                     <span class="required">Required</span>
169                 </li>
170                 <li>
171                     <label for="smtp_timeout">Timeout (seconds): </label>
172                     <input type="text" inputmode="numeric" pattern="[0-9]*" name="smtp_timeout" id="smtp_timeout" size="20" value="[%- smtp_server.timeout | html -%]"/>
173                 </li>
174                 <li>
175                     <label for="smtp_ssl_mode">SSL: </label>
176                     <select name="smtp_ssl_mode" id="smtp_ssl_mode">
177                     [%- IF smtp_server.ssl_mode == 'disabled' -%]
178                         <option value="disabled" selected="selected">Disabled</option>
179                         <option value="ssl">SSL</option>
180                         <option value="starttls">STARTTLS</option>
181                     [%- ELSIF smtp_server.ssl_mode == 'ssl' -%]
182                         <option value="disabled">Disabled</option>
183                         <option value="ssl" selected="selected">SSL</option>
184                         <option value="starttls">STARTTLS</option>
185                     [%- ELSE -%]
186                         <option value="disabled">Disabled</option>
187                         <option value="ssl">SSL</option>
188                         <option value="starttls" selected="selected">STARTTLS</option>
189                     [%- END -%]
190                     </select>
191                 </li>
192                 <li>
193                     <label for="smtp_user_name">User name: </label>
194                     <input type="text" name="smtp_user_name" id="smtp_user_name" size="60"  value="[%- smtp_server.user_name | html -%]" autocomplete="off" />
195                 </li>
196                 <li>
197                     <label for="smtp_password">Password: </label>
198                     [% IF smtp_server.password %]
199                         <input type="password" name="smtp_password" id="smtp_password" size="60" value="****" autocomplete="off"/>
200                     [% ELSE %]
201                         <input type="password" name="smtp_password" id="smtp_password" size="60" value="" autocomplete="off"/>
202                     [% END %]
203                 </li>
204                 <li>
205                     <label for="smtp_debug_mode">Debug mode: </label>
206                     <select name="smtp_debug_mode" id="smtp_debug_mode">
207                     [%- IF smtp_server.debug == 1 -%]
208                         <option value="1" selected="selected">Enabled</option>
209                         <option value="0">Disabled</option>
210                     [%- ELSE -%]
211                         <option value="1">Enabled</option>
212                         <option value="0" selected="selected">Disabled</option>
213                     [%- END -%]
214                     </select>
215                 </li>
216                 <li>
217                     <label for="smtp_default">Default server: </label>
218                     [% IF smtp_server.is_default %]
219                         <input type="checkbox" name="smtp_default" id="smtp_default" checked="checked"/>
220                     [% ELSE %]
221                         <input type="checkbox" name="smtp_default" id="smtp_default" />
222                     [% END %]
223                     <span>Sets this SMTP server as the default SMTP server.</span>
224                 </li>
225                 [% UNLESS smtp_server.is_default %]
226                     <div class="dialog message" id="default_server_message">
227                         <p>Current default configuration:</p>
228
229                         <ul>
230                             <li><strong>Host</strong>: [%- default_config.host | html -%]</li>
231                             <li><strong>Port</strong>: [%- default_config.port | html -%]</li>
232                             <li><strong>Timeout (secs)</strong>: [%- default_config.timeout | html -%]</li>
233                             <li><strong>SSL</strong>: [%- IF default_config.ssl_mode == 'disabled' -%]<span>Disabled</span>[%- ELSIF default_config.ssl_mode == 'ssl' -%]<span>SSL</span>[%- ELSE -%]<span>STARTTLS</span>[%- END -%]</li>
234                             <li><strong>Debug mode</strong>: [%- IF default_config.debug -%]Yes[%- ELSE -%]No[%- END -%]</li>
235                         </ul>
236                     </div>
237                 [% END %]
238             </ol>
239         </fieldset>
240         <fieldset class="action">
241             <input type="submit" class="btn btn-primary" value="Submit" />
242             <a class="cancel" href="/cgi-bin/koha/admin/smtp_servers.pl">Cancel</a>
243         </fieldset>
244     </form>
245 [% END %]
246
247 [% IF op == 'list' %]
248
249     <div id="toolbar" class="btn-toolbar">
250         <a class="btn btn-default" id="new_smtp_server" href="/cgi-bin/koha/admin/smtp_servers.pl?op=add_form"><i class="fa fa-plus"></i> New SMTP server</a>
251     </div>
252
253     <h1>SMTP servers</h1>
254
255     <div class="dialog message" id="default_server_message">
256         <p>Default configuration:</p>
257
258         <ul>
259             <li><strong>Host</strong>: [%- default_config.host | html -%]</li>
260             <li><strong>Port</strong>: [%- default_config.port | html -%]</li>
261             <li><strong>Timeout (secs)</strong>: [%- default_config.timeout | html -%]</li>
262             <li><strong>SSL</strong>: [%- IF default_config.ssl_mode == 'disabled' -%]<span>Disabled</span>[%- ELSIF default_config.ssl_mode == 'ssl' -%]<span>SSL</span>[%- ELSE -%]<span>STARTTLS</span>[%- END -%]</li>
263             <li><strong>Debug mode</strong>: [%- IF default_config.debug -%]Yes[%- ELSE -%]No[%- END -%]</li>
264         </ul>
265     </div>
266
267     [% IF servers_count > 0 %]
268         <div class="page-section">
269             <table id="smtp_servers">
270                 <thead>
271                     <tr>
272                         <th>Name</th>
273                         <th>Host</th>
274                         <th>Port</th>
275                         <th>Timeout (secs)</th>
276                         <th>SSL</th>
277                         <th>Authenticated</th>
278                         <th>Is default</th>
279                         <th data-class-name="actions noExport">Actions</th>
280                     </tr>
281                 </thead>
282             </table>
283         </div> <!-- /.page-section -->
284     [% END %]
285 [% END %]
286
287             <div id="delete_confirm_modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="delete_confirm_modal_label" aria-hidden="true">
288                 <div class="modal-dialog">
289                     <div class="modal-content">
290                         <div class="modal-header">
291                             <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
292                             <h3 id="delete_confirm_modal_label">Delete server</h3>
293                         </div>
294                         <div class="modal-body">
295                             <div id="delete_confirm_dialog"></div>
296                         </div>
297                         <div class="modal-footer">
298                             <a href="#" class="btn btn-default" id="delete_confirm_modal_button" role="button" data-toggle="modal">Delete</a>
299                             <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
300                         </div>
301                     </div> <!-- /.modal-content -->
302                 </div> <!-- /.modal-dialog -->
303             </div> <!-- #delete_confirm_modal -->
304
305             <div id="default_confirm_modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="default_confirm_modal_label" aria-hidden="true">
306                 <div class="modal-dialog">
307                     <div class="modal-content">
308                         <div class="modal-header">
309                             <button type="button" class="default_confirm_modal_no closebtn" data-dismiss="modal" aria-hidden="true">×</button>
310                             <h3 id="default_confirm_modal_label">Set default server</h3>
311                         </div>
312                         <div class="modal-body">
313                             <div id="default_confirm_dialog">Are you sure you want to change the default SMTP server?</div>
314                         </div>
315                         <div class="modal-footer">
316                             <a id="default_confirm_dialog" href="#" class="btn btn-default default_confirm_modal_yes" id="default_confirm_modal_button" role="button" data-toggle="modal">Yes</a>
317                             <button class="btn btn-link default_confirm_modal_no" data-dismiss="modal" aria-hidden="true">No</button>
318                         </div>
319                     </div> <!-- /.modal-content -->
320                 </div> <!-- /.modal-dialog -->
321             </div> <!-- #default_confirm_modal -->
322
323             </main>
324         </div> <!-- /.col-sm-10.col-sm-push-2 -->
325
326         <div class="col-sm-2 col-sm-pull-10">
327             <aside>
328                 [% INCLUDE 'admin-menu.inc' %]
329             </aside>
330         </div> <!-- /.col-sm-2.col-sm-pull-10 -->
331      </div> <!-- /.row -->
332
333
334 [% MACRO jsinclude BLOCK %]
335     [% Asset.js("js/admin-menu.js") | $raw %]
336     [% INCLUDE 'datatables.inc' %]
337     <script>
338         $(document).ready(function() {
339
340             var smtp_servers_url = '/api/v1/config/smtp_servers';
341             window.smtp_servers = $("#smtp_servers").kohaTable({
342                 "ajax": {
343                     "url": smtp_servers_url
344                 },
345                 'language': {
346                     'emptyTable': '<div class="dialog message">'+_("There are no SMTP servers defined.")+'</div>'
347                 },
348                 "columnDefs": [ {
349                     "targets": [0,1],
350                     "render": function (data, type, row, meta) {
351                         if ( type == 'display' ) {
352                             if ( data != null ) {
353                                 return data.escapeHtml();
354                             }
355                             else {
356                                 return "Default";
357                             }
358                         }
359                         return data;
360                     }
361                 } ],
362                 "columns": [
363                     {
364                         "data": "name",
365                         "searchable": true,
366                         "orderable": true
367                     },
368                     {
369                         "data": "host",
370                         "searchable": true,
371                         "orderable": true
372                     },
373                     {
374                         "data": "port",
375                         "searchable": true,
376                         "orderable": false
377                     },
378                     {
379                         "data": "timeout",
380                         "searchable": true,
381                         "orderable": false
382                     },
383                     {
384                         "data": "ssl_mode",
385                         "render": function (data, type, row, meta) {
386                             if (data == 'disabled') {
387                                 return _("Disabled");
388                             }
389                             else if (data == 'ssl') {
390                                 return _("SSL");
391                             }
392                             else {
393                                 return _("STARTTLS");
394                             }
395                         },
396                         "searchable": false,
397                         "orderable": false
398                     },
399                     {
400                         "data": function( row, type, val, meta ) {
401                             if ( row.user_name != null ) {
402                                 return _("Yes");
403                             }
404                             else {
405                                 return _("No");
406                             }
407                         },
408                         "searchable": false,
409                         "orderable": false
410                     },
411                     {
412                         "data": function( row, type, val, meta ) {
413                             if ( row.is_default ) {
414                                 return _("Yes");
415                             }
416                             else {
417                                 return _("No");
418                             }
419                         },
420                         "searchable": false,
421                         "orderable": false
422                     },
423                     {
424                         "data": function( row, type, val, meta ) {
425                             var result = '<a class="btn btn-default btn-xs" role="button" href="/cgi-bin/koha/admin/smtp_servers.pl?op=edit_form&amp;smtp_server_id='+ encodeURIComponent(row.smtp_server_id) +'"><i class="fa-solid fa-pencil" aria-hidden="true"></i> '+_("Edit")+'</a>'+"\n";
426                             result += '<a class="btn btn-default btn-xs delete_server" role="button" href="#" data-toggle="modal" data-target="#delete_confirm_modal" data-smtp-server-id="'+ encodeURIComponent(row.smtp_server_id) +'" data-smtp-server-name="'+ encodeURIComponent(row.name.escapeHtml()) +'"><i class="fa fa-trash-can" aria-hidden="true"></i>'+_("Delete")+'</a>';
427                             return result;
428                         },
429                         "searchable": false,
430                         "orderable": false
431                     }
432                 ],
433                 createdRow: function (row, data, dataIndex) {
434                     if ( data.is_default ) {
435                         $(row).addClass('default warn');
436                     }
437                     if ( data.debug ) {
438                         $(row).addClass('debug');
439                     }
440                 },
441             });
442
443             $('#smtp_servers').on( "click", '.delete_server', function () {
444                 var smtp_server_id   = $(this).data('smtp-server-id');
445                 var smtp_server_name = decodeURIComponent($(this).data('smtp-server-name'));
446
447                 $("#delete_confirm_dialog").html(
448                     _("You are about to delete the '%s' SMTP server.").format(smtp_server_name)
449                 );
450                 $("#delete_confirm_modal_button").data('smtp-server-id', smtp_server_id);
451                 $("#delete_confirm_modal_button").data('smtp-server-name', smtp_server_name);
452             });
453
454             $('#smtp_default').on( "click", function () {
455                 $("#default_confirm_modal").show();
456             });
457             $('.default_confirm_modal_yes').on( "click", function () {
458                 $("#default_confirm_modal").hide();
459             });
460             $('.default_confirm_modal_no').on( "click", function () {
461                 $("#smtp_default").prop('checked', !$("#smtp_default").prop('checked') );
462                 $("#default_confirm_modal").hide();
463             });
464
465             $("#delete_confirm_modal_button").on( "click", function () {
466
467                 var smtp_server_id   = $(this).data('smtp-server-id');
468                 var smtp_server_name = $(this).data('smtp-server-name');
469
470                 $.ajax({
471                     method: "DELETE",
472                     url: "/api/v1/config/smtp_servers/"+smtp_server_id
473                 }).success(function() {
474                     window.smtp_servers.api().ajax.reload(function (data) {
475                         $("#smtp_action_result_dialog").hide();
476                         $("#smtp_delete_success").html(_("Server '%s' deleted successfully.").format(smtp_server_name)).show();
477                     });
478                 }).fail(function () {
479                     $("#smtp_delete_error").html(_("Error deleting server '%s'. Check the logs.").format(smtp_server_name)).show();
480                 }).done(function () {
481                     $("#delete_confirm_modal").modal('hide');
482                 });
483             });
484         });
485     </script>
486 [% END %]
487
488 [% INCLUDE 'intranet-bottom.inc' %]