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