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