Bug 32355: Add css class url to URL syspref
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / tools / additional-contents.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% USE KohaDates %]
5 [% USE Branches %]
6 [% SET footerjs = 1 %]
7 [% INCLUDE 'doc-head-open.inc' %]
8 <title>Additional contents &rsaquo; Tools &rsaquo; Koha</title>
9 [% INCLUDE 'doc-head-close.inc' %]
10 [% IF ( wysiwyg ) %]
11     [% SET editmode = "wysiwyg" %]
12 [% ELSE %]
13     [% SET editmode = "text" %]
14     [% Asset.css("lib/codemirror/codemirror.css") | $raw %]
15     [% Asset.css("lib/codemirror/lint.min.css") | $raw %]
16     <style>
17         .CodeMirror {
18             resize: vertical;
19             z-index: 0;
20         }
21     </style>
22 [% END %]
23     <style>
24         .syspref-link::before {
25             content: " | ";
26         }
27         .customisation-link::before {
28             content: " | ";
29         }
30         .customisation-link:first-child::before {
31             content: none;
32         }
33         label[for^="title_"],
34         label[for^="content_"] {
35             font-weight: 700;
36         }
37     </style>
38 </head>
39
40 <body id="tools_additional-contents" class="tools">
41 [% WRAPPER 'header.inc' %]
42     [% INCLUDE 'cat-search.inc' %]
43 [% END %]
44
45 [% WRAPPER 'sub-header.inc' %]
46 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
47     <ol>
48         <li>
49             <a href="/cgi-bin/koha/mainpage.pl">Home</a>
50         </li>
51         <li>
52             <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
53         </li>
54
55         [% IF op == 'add_form' %]
56             <li>
57                 [% IF category == 'news' %]
58                     <a href="/cgi-bin/koha/tools/additional-contents.pl?category=news">News</a>
59                 [% ELSIF category == 'pages' %]
60                     <a href="/cgi-bin/koha/tools/additional-contents.pl?category=pages">Pages</a>
61                 [% ELSE %]
62                     <a href="/cgi-bin/koha/tools/additional-contents.pl?category=html_customizations">HTML customizations</a>
63                 [% END %]
64             </li>
65             <li>
66                 <a href="#" aria-current="page">
67                     [% IF additional_content.idnew %]
68                         <span>Modify additional content</span>
69                     [% ELSE %]
70                         <span>Add additional content</span>
71                     [% END %]
72                     ([% IF category == 'news' %]<span>News</span>[% ELSIF category == 'pages' %]<span>Pages</span>[% ELSE %]<span>HTML customizations</span>[% END %])
73                 </a>
74             </li>
75         [% ELSE %]
76             <li>
77                 <a href="#" aria-current="page">
78                     [% IF category == 'news' %]
79                         News
80                     [% ELSIF category == 'pages' %]
81                         Pages
82                     [% ELSE %]
83                         HTML customizations
84                     [% END %]
85                 </a>
86             </li>
87         [% END %]
88
89     </ol>
90 </nav>
91 [% END %]
92
93 [% IF op == 'add_form' %]
94 <div class="main container-fluid">
95     <div class="row">
96         <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
97 [% ELSE %]
98 <div class="main container-fluid">
99     <div class="row">
100         <div class="col-sm-10 col-sm-push-2">
101 [% END %]
102
103 <main>
104
105     [% FOR m IN messages %]
106         <div class="dialog [% m.type | html %]">
107             [% SWITCH m.code %]
108             [% CASE 'error_on_update' %]
109                 <span>An error occurred when updating this content. Perhaps it already exists</span>
110             [% CASE 'error_on_insert' %]
111                 <span>An error occurred when adding this content. Check the logs</span>
112             [% CASE 'error_on_delete' %]
113                 <span>An error occurred when deleting this content. Check the logs</span>
114             [% CASE 'success_on_update' %]
115                 <span>Content updated successfully</span>
116             [% CASE 'success_on_insert' %]
117                 <span>Content added successfully</span>
118             [% CASE 'success_on_delete' %]
119                 <span>Content deleted successfully</span>
120             [% CASE %]
121                 <span>[% m.code | html %]</span>
122             [% END %]
123         </div>
124     [% END %]
125
126     [% IF op == 'add_form' %]
127         [% PROCESS add_form %]
128     [% ELSE %]
129         [% PROCESS list %]
130     [% END %]
131
132 </main>
133
134         [% IF op != 'add_form' %]
135             </div> <!-- /.col-sm-10.col-sm-push-2 -->
136
137             <div class="col-sm-2 col-sm-pull-10">
138                 <aside>
139
140                     <div id="news-filter">
141                         <form action="/cgi-bin/koha/tools/additional-contents.pl" method="get">
142                             <h4>Filter</h4>
143                             <fieldset class="brief">
144                                 <ol>
145                                     <li>
146                                         <label for="news_keyword">Keyword:</label>
147                                         <input type="text" name="news_keyword" id="news_keyword" />
148                                     </li>
149                                     <li>
150                                         <label for="news_display_location">Display location:</label>
151                                         <select name="news_display_location" id="news_display_location">
152                                             <option value="">All</option>
153                                             [% PROCESS locations_options category => category %]
154                                         </select>
155                                     </li>
156                                     <li>
157                                         <label for="news_library">Library: </label>
158                                         <select id="news_library" name="news_library">
159                                             <option value=""></option>
160                                             <option value="">All libraries</option>
161                                             [% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode, unfiltered => 1, ) %]
162                                         </select>
163                                     </li>
164                                     <li>
165                                         <label>
166                                             <input type="checkbox" name="show_expired" id="show_expired" /> Show expired
167                                         </label>
168                                     </li>
169                                 </ol>
170                             </fieldset>
171                         </form>
172                     </div>
173
174                     [% INCLUDE 'tools-menu.inc' %]
175                 </aside>
176             </div> <!-- /.col-sm-2.col-sm-pull-10 -->
177         [% END %]
178     </div> <!-- /.row -->
179 </div> <!-- /.main.container-fluid -->
180
181 [% BLOCK add_form %]
182     [% IF additional_content %]
183         <h1>Modify an additional content</h1>
184     [% ELSE %]
185         <h1>New additional content ([% IF category == 'news' %]News[% ELSIF category == 'pages' %]Pages[% ELSE %]HTML customizations[% END %])</h1>
186     [% END %]
187
188     <div id="toolbar" class="btn-toolbar">
189         <div class="btn-group">
190             <button class="btn btn-primary" id="submit_form"><i class="fa fa-save"></i> Save</button>
191             <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
192             <span class="caret"></span>
193             </button>
194             <ul class="dropdown-menu">
195                 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
196             </ul>
197         </div>
198         [% IF category == 'news' %]
199             <a class="btn btn-default cancel" href="/cgi-bin/koha/tools/additional-contents.pl"><i class="fa fa-remove"></i> Cancel</a>
200         [% ELSIF category == 'pages' %]
201             <a class="btn btn-default cancel" href="/cgi-bin/koha/tools/additional-contents.pl?category=pages"><i class="fa fa-remove"></i> Cancel</a>
202         [% ELSE %]
203             <a class="btn btn-default cancel" href="/cgi-bin/koha/tools/additional-contents.pl?category=html_customizations"><i class="fa fa-remove"></i> Cancel</a>
204         [% END %]
205     </div>
206
207     <form id="add_additional_content" method="post" action="/cgi-bin/koha/tools/additional-contents.pl" class="validate">
208         <input type="hidden" name="op" value="add_validate" />
209         <input type="hidden" name="category" value="[% category | html %]" />
210         <input type="hidden" name="code" value="[% additional_content.code | html %]" />
211         <input type="hidden" name="idnew" value="[% additional_content.idnew | html %]" />
212         <input type="hidden" id="redirect" name="redirect" value="" />
213         <input type="hidden" id="editmode" name="editmode" value="[% editmode | html %]" />
214         <fieldset class="rows">
215             <ol>
216                 <li>
217                     <label for="location">Display location:</label>
218                     <select id="location" name="location">
219                         [% PROCESS locations_options location => additional_content.location %]
220                     </select>
221                 </li>
222                 <li>
223                     <label for="branchcode">Library: </label>
224                     <select id="branchcode" name="branchcode">
225                         [% IF additional_content.branchcode == '' %]
226                             <option value="" selected="selected">All libraries</option>
227                         [% ELSE %]
228                             <option value="">All libraries</option>
229                         [% END %]
230                         [% PROCESS options_for_libraries libraries => Branches.all( selected => additional_content.branchcode, unfiltered => 1, ) %]
231                     </select>
232                 </li>
233                 [% UNLESS languages.size %]
234                     <li>
235                         [% IF category == 'news' %]
236                             <label for="title" class="required">Title: </label>
237                             <input id="title" size="100" maxlength="250" type="text" name="title_default" value="[% additional_content.title | html %]" required="required" class="required" /> <span class="required">Required</span>
238                         [% ELSE %]
239                             <label for="title">Title: </label>
240                             <input id="title" size="100" maxlength="250" type="text" name="title_default" value="[% additional_content.title | html %]" />
241                         [% END %]
242                     </li>
243                 [% END %]
244                 <li>
245                     <label for="from">Publication date: </label>
246                     <input id="from" type="text" name="published_on" size="15" value="[% additional_content.published_on | html %]" class="flatpickr" data-date_to="to" />
247                     <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
248                 </li>
249                 <li>
250                     <label for="to">Expiration date: </label>
251                     <input id="to" type="text" name="expirationdate" size="15" value="[% additional_content.expirationdate | html %]" class="flatpickr" />
252                     <div class="hint">
253                         [% INCLUDE 'date-format.inc' %]
254                         [% IF category == 'news' %]
255                             <br>News will still be accessible by direct URL if expired.
256                         [% END %]
257                     </div>
258                 </li>
259                 <li>
260                     <label for="number">Appear in position: </label>
261                     [% IF ( additional_content.number ) %]
262                         <input id="number" size="3" name="number" type="text" value="[% additional_content.number | html %]" />
263                     [% ELSE %]
264                         <input id="number" size="3" name="number" type="text" />
265                     [% END %]
266                 </li>
267             </ol>
268         </fieldset>
269
270         [% IF languages.size %]
271             <div id="tabs" class="toptabs">
272                 <ul class="nav nav-tabs" role="tablist">
273                     [% FOR language IN languages %]
274                         [% IF language.lang == 'default' %]
275                             <li role="presentation"><a href="#lang_default" aria-controls="lang_default" role="tab" data-toggle="tab">Default</a></li>
276                         [% ELSE %]
277                             <li role="presentation"><a href="#lang_[% language.lang | uri %]" aria-controls="lang_[% language.lang | uri %]" role="tab" data-toggle="tab">[% language.description | html %]</a></li>
278                         [% END %]
279                     [% END %]
280                 </ul>
281                 <div class="tab-content">
282                     [% FOR language IN languages %]
283                         <div id="lang_[% language.lang | uri %]" class="lang clearfix tab-pane" data-lang="[% language.description | html %]">
284                             <fieldset>
285                                 <ol>
286                                     <li>
287                                         <label for="title_[% language.lang | html %]">Title: </label>
288                                         <input id="title_[% language.lang| html %]" size="100" maxlength="250" type="text" name="title_[% language.lang | html %]" value="[% translated_contents.item(language.lang).title | html %]">
289                                     </li>
290                                     <li>
291                                         <label for="content_[% language.lang | html %]">Content: </label>
292                                         <textarea name="content_[% language.lang | html %]" id="content_[% language.lang | html %]" data-lang="[% language.lang | html%]" cols="75" rows="10">[% translated_contents.item(language.lang).content | html %]</textarea>
293                                         <input type="hidden" name="lang" value="[% language.lang | html %]" />
294                                     </li>
295                                 </ol>
296                             </fieldset>
297                         </div>
298                     [% END %]
299                 </div> <!-- /.tab-content -->
300             </div>
301         [% ELSE %]
302             <div id="lang_default">
303                 <div class="clearfix">
304                     <textarea name="content" id="content_default" data-lang="[% language.lang | html %]"  cols="75" rows="10">[% additional_content.content | html %]</textarea>
305                 </div>
306             </div>
307         [% END %]
308     </form>
309 [% END %]
310
311 [% BLOCK list %]
312
313     <div id="toolbar" class="btn-toolbar">
314         <div class="btn-group">
315             <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&category=[% category | uri %]&editmode=[% editmode | uri %]" class="btn btn-default" id="newentry"> <i class="fa fa-plus"></i> New entry</a><button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
316                 <span class="caret"></span>
317             </button>
318             <ul class="dropdown-menu pull-right">
319                 <li>
320                     [% IF ( wysiwyg ) %]
321                         <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&category=[% category | uri %]&editmode=text">New entry using text editor</a>
322                     [% ELSE %]
323                         <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&category=[% category | uri %]&editmode=wysiwyg">New entry using WYSIWYG editor</a>
324                     [% END %]
325                 </li>
326             </ul>
327         </div>
328     </div>
329
330     <h2>Additional contents ([% IF category == 'news' %]News[% ELSIF category == 'pages' %]Pages[% ELSE %]HTML customizations[% END %])</h2>
331     <span id="additional_contents_links">
332         See
333         <a class="customisation-link" href="/cgi-bin/koha/tools/additional-contents.pl?category=news">News</a>
334         <a class="customisation-link" href="/cgi-bin/koha/tools/additional-contents.pl?category=html_customizations">HTML customizations</a>
335         <a class="customisation-link" href="/cgi-bin/koha/tools/additional-contents.pl?category=pages">Pages</a>
336         [% IF ( CAN_user_parameters_manage_sysprefs ) %]
337             <a class="syspref-link" href='/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OPACUserJS'>OPACUserJS</a>
338             <a class="syspref-link" href='/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OPACUserCSS'>OPACUserCSS</a>
339         [% END %]
340     </span>
341
342     [% IF additional_contents.count %]
343         <div class="page-section">
344             <form id="del_form" method="post" action="/cgi-bin/koha/tools/additional-contents.pl">
345                 <table id="table_additional_contents">
346                     <thead>
347                         <tr>
348                             <th class="NoSort">&nbsp;</th>
349                             <th>Location</th>
350                             <th>Library</th>
351                             <th>Number</th>
352                             <th>Publication date</th>
353                             <th>Expiration date</th>
354                             <th class="anti-the">Title</th>
355                             <th>Author</th>
356                             [% IF category == 'pages' %]
357                                 <th>Page URL</th>
358                                 <th class="anti-the">Page</th>
359                             [% ELSE %]
360                                 <th class="anti-the">News</th>
361                             [% END %]
362                             <th class="NoSort noExport">Actions</th>
363                         </tr>
364                     </thead>
365                     <tbody>
366                         [% FOREACH c IN additional_contents%]
367                             [% IF ( c.is_expired ) %]<tr class="expired">[% ELSE %]<tr>[% END %]
368                             <td>
369                                 <input type="checkbox" name="ids" value="[% c.idnew | html %]" />
370                             </td>
371                             <td>
372                                 [% IF c.category == 'news' || c.category == 'pages' %]
373                                     [% IF c.location == 'staff_and_opac' %]<span>All</span>
374                                     [% ELSIF c.location == 'staff_only' %]<span>Librarian interface</span>
375                                     [% ELSIF c.location == 'opac_only' %]<span>OPAC</span>
376                                     [% ELSIF c.location == 'slip' %]<span>Slip</span>
377                                     [% ELSE %]<span>Unknown ('[% location | html %]')</span>
378                                     [% END %]
379                                 [% ELSE %]
380                                     [% c.location | html %]
381                                 [% END %]
382                             </td>
383                             <td>
384                                 [% IF ( c.branchcode == "" ) -%]
385                                 All libraries
386                                 [% ELSE %][% c.library.branchname | html %]
387                                 [% END %]
388                             </td>
389                             <td>[% c.number | html %]</td>
390                             <td data-order="[% c.published_on | html %]">[% c.published_on | $KohaDates %]</td>
391                             <td data-order="[% c.expirationdate | html %]">[% c.expirationdate | $KohaDates %] [% IF ( c.is_expired ) %](<span class="expired">expired</span>)[% END %]</td>
392                             <td>[% c.title | html %]</td>
393                             <td>[% IF ( c.author) %][% INCLUDE 'patron-title.inc' patron=c.author %][% END %]</td>
394                             [% IF category == 'pages' %]
395                                 <td class="actions">
396                                     [% IF c.location == 'opac_only' OR c.location == 'staff_and_opac' %]
397                                         <strong>OPAC</strong>:
398                                         <a target="_blank" href="[% Koha.Preference('OPACBaseURL') | url %]/cgi-bin/koha/opac-page.pl?page_id=[% c.idnew | url %]" title="View on OPAC">Default</a>
399                                         OR
400                                         <a target="_blank" href="[% Koha.Preference('OPACBaseURL') | url %]/cgi-bin/koha/opac-page.pl?code=[% c.code | url %]" title="View on OPAC">Current language</a>
401                                     [% END %]
402                                     [% IF c.location == 'staff_only' OR c.location == 'staff_and_opac' %]
403                                         [% IF c.location == 'staff_and_opac' %]<br/>[% END %]
404                                         <strong>Librarian interface</strong>:
405                                         <a href="/cgi-bin/koha/tools/page.pl?page_id=[% c.idnew | url %]" title="View on librarian interface">Default</a>
406                                         OR
407                                         <a href="/cgi-bin/koha/tools/page.pl?code=[% c.code | url %]" title="View on librarian interface">Current language</a>
408                                     [% END %]
409                                 </td>
410                             [% END %]
411                             <td>
412                                 <div class="btn-group">
413                                     <a class="preview_news btn btn-default btn-xs" data-number="[% loop.count | html %]"><i class="fa fa-eye" aria-hidden="true"></i> Preview content</a>
414                                 </div>
415                                 <div id="contentModal[% loop.count | html %]" class="modal" tabindex="-1" role="dialog" data-number="[% loop.count | html %]">
416                                     <div class="modal-dialog" role="document">
417                                         <div class="modal-content modal-lg">
418                                             <div class="modal-header">
419                                                 <h5 class="modal-title">Preview of: "[% c.title | html %]"</h5>
420                                             </div>
421                                         <div class="modal-body">
422                                             [% c.content | $raw %]
423                                         </div>
424                                         <div class="modal-footer">
425                                             <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
426                                         </div>
427                                     </div>
428                                 </div>
429                             </td>
430                             <td class="actions">
431                                 <div class="btn-group dropup">
432                                     <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&amp;id=[% c.idnew | uri %]&editmode=[% editmode | uri %]" class="btn btn-default btn-xs"> <i class="fa fa-pencil"></i> Edit</a><button class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
433                                         <span class="caret"></span>
434                                     </button>
435                                     <ul class="dropdown-menu pull-right">
436                                         <li>
437                                             [% IF ( wysiwyg ) %]
438                                                 <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&amp;id=[% c.idnew | uri %]&editmode=text"><i class="fa fa-pencil"></i> Edit with text editor</a>
439                                             [% ELSE %]
440                                                 <a href="/cgi-bin/koha/tools/additional-contents.pl?op=add_form&amp;id=[% c.idnew | uri %]&editmode=wysiwyg"><i class="fa fa-pencil"></i> Edit with WYSIWYG editor</a>
441                                             [% END %]
442                                         </li>
443                                     </ul>
444                                 </div>
445                                 <div class="btn-group">
446                                     <a href="#" class="delete_news btn btn-default btn-xs" data-idnew="[% c.idnew | html %]"><i class="fa fa-trash"></i> Delete</a>
447                                 </div>
448                             </td>
449                         </tr>
450                         [% END %]
451                     </tbody>
452                 </table>
453                 <input type="hidden" name="op" value="delete_confirmed" />
454                 <input type="hidden" name="category" value="[% category | html %]" />
455                 <fieldset class="action"><input type="submit" class="btn btn-primary" value="Delete selected" /></fieldset>
456             </form>
457             <form action="/cgi-bin/koha/tools/additional-contents.pl" method="post" id="delete_single">
458                 <input type="hidden" id="del_op" name="op" value="delete_confirmed" />
459                 <input type="hidden" id="del_category" name="category" value="[% category | html %]" />
460                 <input type="hidden" id="del_ids" name="ids" />
461             </form>
462         </div> <!-- /.page-section -->
463     [% ELSE %]
464         <div class="dialog message">There are no additional contents.</div>
465     [% END %]
466 [% END %]
467
468 [% BLOCK locations_options %]
469     [% IF category == 'news' || category == 'pages' %]
470         [% IF location == "staff_and_opac" %]
471             <option value="staff_and_opac" selected="selected">Librarian and OPAC interfaces</option>
472         [% ELSE %]
473             <option value="staff_and_opac">Librarian and OPAC interfaces</option>
474         [% END %]
475
476         [% IF location == "staff_only" %]
477             <option value="staff_only" selected="selected">Librarian interface</option>
478         [% ELSE %]
479             <option value="staff_only">Librarian interface</option>
480         [% END %]
481
482         [% IF location == "opac_only" %]
483             <option value="opac_only" selected="selected">OPAC</option>
484         [% ELSE %]
485             <option value="opac_only">OPAC</option>
486         [% END %]
487
488         [% UNLESS category == 'pages' %]
489             [% IF location == "slip" %]
490                 <option value="slip" selected="selected">Slip</option>
491             [% ELSE %]
492                 <option value="slip">Slip</option>
493             [% END %]
494         [% END %]
495     [% ELSE %]
496         [% SET available_options = [ 'OpacNavRight', 'opacheader', 'OpacCustomSearch', 'OpacMainUserBlock', 'opaccredits', 'OpacLoginInstructions', 'OpacNav', 'OpacNavBottom', 'OpacSuggestionInstructions', 'ArticleRequestsDisclaimerText', 'OpacMoreSearches', 'OpacMySummaryNote', 'OpacLibraryInfo' ] %]
497         [% FOREACH l IN available_options.sort %]
498             [% IF l == location %]
499                 <option value="[% l | html %]" selected="selected">[% l | html %]</option>
500             [% ELSE %]
501                 <option value="[% l | html %]">[% l | html %]</option>
502             [% END %]
503         [% END %]
504     [% END %]
505 [% END %]
506
507 [% MACRO jsinclude BLOCK %]
508     [% INCLUDE 'calendar.inc' %]
509     [% Asset.js("js/tools-menu.js") | $raw %]
510     [% Asset.js("lib/hc-sticky.js") | $raw %]
511     <script>
512         $("#saveandcontinue").on("click",function(e){
513             e.preventDefault();
514             $("#redirect").val("just_save");
515             $("#submit_form").click();
516         });
517     </script>
518     [% IF additional_contents.count %]
519         [% INCLUDE 'datatables.inc' %]
520         <script>
521             $('.preview_news').click( function() {
522                 modalNumber = $(this).attr('data-number');
523                 $('.modal[data-number="'+modalNumber+'"]').modal('show');
524             })
525             function Checkbox(){
526                 var form = document.getElementById('del_form');
527                 var inputs = form.getElementsByTagName('input');
528                 var checked = false;
529                 for (var i=0; i<inputs.length; i++) {
530                     if (inputs[i].type == 'checkbox' && inputs[i].name == 'ids') {
531                         checked = inputs[i].checked;
532                         if (checked) return true;
533                     }
534                 }
535             }
536
537             function filterDataTable( table, column, term ){
538                 if( column ){
539                     table.column( column ).search( term ).draw();
540                 } else {
541                     table.search( term ).draw();
542                 }
543                 clearFilter( term );
544             }
545
546             function clearFilter( term ){
547                 if( term == "" ){
548                     $(".dt_button_clear_filter").addClass("disabled");
549                 } else {
550                     $(".dt_button_clear_filter").removeClass("disabled");
551                 }
552             }
553
554             /* Custom table search configuration: If a table row
555                has an "expired" class, hide it UNLESS the
556                show_expired checkbox is checked */
557             $.fn.dataTable.ext.search.push(
558                 function( settings, searchData, index, rowData, counter ) {
559                     var row = $(settings.aoData[index].nTr);
560                     if( row.hasClass("expired") && !$("#show_expired").prop("checked") ){
561                         return false;
562                     } else {
563                         return true;
564                     }
565                 }
566             );
567
568             $(document).ready(function() {
569
570                 var table = $("#table_additional_contents").DataTable($.extend(true, {}, dataTablesDefaults, {
571                     "order": [[ 4, "desc" ]],
572                     "aoColumnDefs": [
573                         { "sortable": false, "searchable": false, 'targets': [ 'NoSort' ] },
574                         { "type": "anti-the", "targets": [ "anti-the" ] }
575                     ],
576                     "sPaginationType": "full_numbers"
577                 }));
578
579                 $("#del_form").on("click", ".delete_news", function(e){
580                     e.preventDefault();
581                     if( confirmDelete( _("Are you sure you want to delete this content? This cannot be undone.") ) ){
582                         $("#del_ids").val( $(this).data("idnew") );
583                         $("#delete_single").submit();
584                     }
585                 });
586
587                 $("#del_form").on("submit",function(){
588                     if ( Checkbox() ) {
589                         return confirmDelete( _("Are you sure you want to delete the selected content?") );
590                     } else {
591                         alert(_("Please select content to delete."));
592                         return false;
593                     }
594                 });
595
596                 $("#show_expired").on("change", function(){
597                     /* redraw the DataTable according to the custom search function */
598                     table.draw();
599                 });
600
601                 table.on( 'search.dt', function () {
602                     var term = table.search();
603                     $("#news_keyword").val( term );
604                 });
605
606                 $("#news_keyword").on("keyup", function(){
607                     var term = $(this).val();
608                     filterDataTable( table, null, term );
609                 });
610
611                 $("#news_display_location").on("change", function(){
612                     var term = $(this).val();
613                     filterDataTable( table, 1, term );
614                 });
615
616                 $("#news_library").on("change", function(){
617                     // Table must be filtered by the <option>'s text, not its value
618                     var opt = $(this).find("option:selected").text();
619                     filterDataTable( table, 2, opt );
620                 });
621
622                 $(".dt_button_clear_filter").on("click", function(){
623                     table.search('').columns().search('').draw();
624                     $("#news-filter select").each(function(){
625                         $(this).val("");
626                     });
627                 });
628             });
629         </script>
630     [% ELSE %]
631         <script>
632             $(document).ready(function() {
633                 [% IF category == 'news' %]
634                 $("#add_additional_content").validate({
635                     submitHandler: function(form){
636                         if ( ! $("#title_default").val().length > 0 ) {
637                             alert(_("Please specify a title for 'Default'"));
638                             return false;
639                         }
640                         else {
641                             [% UNLESS wysiwyg %]
642                                 let content = $('#content_default').siblings(".CodeMirror")[0].CodeMirror.getValue();
643                             [% ELSE %]
644                                 let content = tinyMCE.get('content_default').getContent();
645                             [% END %]
646
647                             if ( ! content.length > 0 ) {
648                                 alert(__("Please specify a content for 'Default'"));
649                                 return false;
650                             }
651                         }
652
653                         form.submit();
654                     }
655                 });
656                 [% END %]
657
658                 $("#submit_form").on("click",function(){
659                     $("#add_additional_content").submit();
660                 });
661
662                 Sticky = $("#toolbar");
663                 Sticky.hcSticky({
664                     stickTo: ".main",
665                     stickyClass: "floating"
666                 });
667
668             });
669         </script>
670     [% END %]
671     [% UNLESS ( wysiwyg ) %]
672         [% Asset.js( "lib/codemirror/codemirror.min.js" ) | $raw %]
673         [% Asset.js( "lib/codemirror/xml.min.js" ) | $raw %]
674         [% Asset.js( "lib/codemirror/lint.min.js" ) | $raw %]
675         [% Asset.js( "lib/linters/htmlhint.min.js" ) | $raw %]
676         [% Asset.js( "lib/codemirror/html-lint.min.js" ) | $raw %]
677         <script>
678             let editors = new Object(); /* Keeps track of initialized CodeMirror instances */
679             $(document).ready(function(){
680
681                 if( $("#tabs .tab-pane.active").length < 1 ){
682                     /* Activate first tab and initialize its CodeMirror instance */
683                     let firstTab = $("#tabs a:first");
684                     firstTab.tab("show");
685                     if ( firstTab[0] ) {
686                         initCodeMirror( firstTab[0].hash );
687                     }
688                 }
689
690                 $("#tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
691                     /* Try to initialize CodeMirror instance when tab opens */
692                     initCodeMirror( e.target.hash );
693                 });
694             });
695
696             function initCodeMirror( container ){
697                 /* Initialize CodeMirror instance only if it doesn't exist */
698                 if( !editors[ container ] ){
699                     let textarea = $( container ).find("textarea[name^='content_']");
700                     let this_lang = textarea.attr('data-lang');
701                     let editor = CodeMirror.fromTextArea( document.getElementById('content_' + this_lang), {
702                         lineNumbers: true,
703                         lineWrapping: true,
704                         lint: true,
705                         mode: "text/html",
706                         gutters: ["CodeMirror-lint-markers"],
707                         viewportMargin: Infinity,
708                     });
709                     editors[ container ] = editor;
710                     return editor;
711                 }
712             }
713         </script>
714     [% ELSE %]
715         [% Asset.js("lib/tiny_mce/tinymce.min.js") | $raw %]
716         [% INCLUDE 'str/tinymce_i18n.inc' %]
717         <script>
718
719             $(document).ready(function(){
720                 if( $("#tabs").length > 0 && $("#tabs .tab-pane.active").length < 1 ){
721                     /* Activate first tab and initialize its tinyMCE instance */
722                     let firstTab = $("#tabs a:first");
723                     firstTab.tab("show");
724                     initTinyMce( firstTab[0].hash );
725                 }
726
727                 $("#tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
728                     /* Try to initialize tinyMCE instance when tab opens */
729                     initTinyMce( e.target.hash );
730                 });
731             });
732
733             function initTinyMce( container ){
734                 let textarea = $( container ).find("textarea[name^='content_']");
735                 /* TinyMCE seems to do its own check to prevent double-initialization
736                    so We don't need to keep track of it */
737                 let editor = tinyMCE.init({
738                     branding : false,
739                     block_unsupported_drop : false,
740                     content_css : "[% interface | html %]/[% theme | html %]/css/tinymce.css",
741                     custom_elements:"style,link,~link",
742                     extended_valid_elements:"style,link[href|rel]",
743                     force_br_newlines : false,
744                     force_p_newlines : false,
745                     forced_root_block : '',
746                     menubar : "file edit view insert format tools table",
747                     plugins : "autoresize table hr link image charmap lists code emoticons",
748                     autoresize_bottom_margin: 60,
749                     relative_urls : false,
750                     selector: "#" + textarea[0].id,
751                     verify_html: false,
752                     toolbar : [
753                         "formatselect | bold italic | cut copy paste | alignleft aligncenter alignright | outdent indent | image link unlink anchor cleanup hr",
754                         "table | bullist numlist | undo redo | removeformat | emoticons charmap | forecolor backcolor | code"
755                     ],
756                 });
757                 return editor;
758             }
759         </script>
760     [% END # /UNLESS wysiwyg %]
761 [% END %]
762
763 [% INCLUDE 'intranet-bottom.inc' %]