View | Details | Raw Unified | Return to bug 30474
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/additional-contents.tt (-31 / +70 lines)
Lines 558-571 Link Here
558
    [% ELSE %]
558
    [% ELSE %]
559
        <script>
559
        <script>
560
            $(document).ready(function() {
560
            $(document).ready(function() {
561
                if( $("#tabs .tab-pane.active").length < 1 ){
562
                    $("#tabs a:first").tab("show");
563
                }
564
                [% IF category == 'news' %]
561
                [% IF category == 'news' %]
565
                $("#add_additional_content").validate({
562
                $("#add_additional_content").validate({
566
                    submitHandler: function(form){
563
                    submitHandler: function(form){
567
                        if ( ! $("#title_default").val().length > 0 ) {
564
                        if ( ! $("#title_default").val().length > 0 ) {
568
                            alert(__("Please specify a title for 'Default'"));
565
                            alert(_("Please specify a title for 'Default'"));
569
                            return false;
566
                            return false;
570
                        }
567
                        }
571
568
Lines 594-633 Link Here
594
        [% Asset.js( "lib/linters/htmlhint.min.js" ) | $raw %]
591
        [% Asset.js( "lib/linters/htmlhint.min.js" ) | $raw %]
595
        [% Asset.js( "lib/codemirror/html-lint.min.js" ) | $raw %]
592
        [% Asset.js( "lib/codemirror/html-lint.min.js" ) | $raw %]
596
        <script>
593
        <script>
597
            $("textarea[name^='content_']").each( function(index) {
594
            let editors = new Object(); /* Keeps track of initialized CodeMirror instances */
598
                var this_lang = $(this).attr('data-lang');
595
            $(document).ready(function(){
599
                var editor = CodeMirror.fromTextArea(document.getElementById('content_' + this_lang), {
596
600
                    lineNumbers: true,
597
                if( $("#tabs .tab-pane.active").length < 1 ){
601
                    lineWrapping: true,
598
                    /* Activate first tab and initialize its CodeMirror instance */
602
                    lint: true,
599
                    let firstTab = $("#tabs a:first");
603
                    mode: "text/html",
600
                    firstTab.tab("show");
604
                    gutters: ["CodeMirror-lint-markers"],
601
                    initCodeMirror( firstTab[0].hash );
605
                    viewportMargin: Infinity,
602
                }
603
604
                $("#tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
605
                    /* Try to initialize CodeMirror instance when tab opens */
606
                    initCodeMirror( e.target.hash );
606
                });
607
                });
607
            });
608
            });
609
610
            function initCodeMirror( container ){
611
                /* Initialize CodeMirror instance only if it doesn't exist */
612
                if( !editors[ container ] ){
613
                    let textarea = $( container ).find("textarea[name^='content_']");
614
                    let this_lang = textarea.attr('data-lang');
615
                    let editor = CodeMirror.fromTextArea( document.getElementById('content_' + this_lang), {
616
                        lineNumbers: true,
617
                        lineWrapping: true,
618
                        lint: true,
619
                        mode: "text/html",
620
                        gutters: ["CodeMirror-lint-markers"],
621
                        viewportMargin: Infinity,
622
                    });
623
                    editors[ container ] = editor;
624
                    return editor;
625
                }
626
            }
608
        </script>
627
        </script>
609
    [% ELSE %]
628
    [% ELSE %]
610
        [% Asset.js("lib/tiny_mce/tinymce.min.js") | $raw %]
629
        [% Asset.js("lib/tiny_mce/tinymce.min.js") | $raw %]
611
        [% INCLUDE 'str/tinymce_i18n.inc' %]
630
        [% INCLUDE 'str/tinymce_i18n.inc' %]
612
        <script>
631
        <script>
613
            tinyMCE.init({
632
614
                verify_html: false,
633
            $(document).ready(function(){
615
                force_br_newlines : false,
634
                if( $("#tabs .tab-pane.active").length < 1 ){
616
                force_p_newlines : false,
635
                    /* Activate first tab and initialize its tinyMCE instance */
617
                forced_root_block : '',
636
                    let firstTab = $("#tabs a:first");
618
                branding : false,
637
                    firstTab.tab("show");
619
                relative_urls : false,
638
                    initTinyMce( firstTab[0].hash );
620
                content_css : "[% interface | html %]/[% theme | html %]/css/tinymce.css",
639
                }
621
                menubar : "file edit view insert format tools table",
640
622
                mode : "specific_textareas",
641
                $("#tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
623
                plugins : "autoresize table hr link image charmap lists code emoticons",
642
                    /* Try to initialize tinyMCE instance when tab opens */
624
                extended_valid_elements:"style,link[href|rel]",
643
                    initTinyMce( e.target.hash );
625
                custom_elements:"style,link,~link",
644
                });
626
                toolbar : [
627
                    "formatselect | bold italic | cut copy paste | alignleft aligncenter alignright | outdent indent | image link unlink anchor cleanup hr",
628
                    "table | bullist numlist | undo redo | removeformat | emoticons charmap | forecolor backcolor | code"
629
                ],
630
            });
645
            });
646
647
            function initTinyMce( container ){
648
                let textarea = $( container ).find("textarea[name^='content_']");
649
                /* TinyMCE seems to do its own check to prevent double-initialization
650
                   so We don't need to keep track of it */
651
                let editor = tinyMCE.init({
652
                    branding : false,
653
                    content_css : "[% interface | html %]/[% theme | html %]/css/tinymce.css",
654
                    custom_elements:"style,link,~link",
655
                    extended_valid_elements:"style,link[href|rel]",
656
                    force_br_newlines : false,
657
                    force_p_newlines : false,
658
                    forced_root_block : '',
659
                    menubar : "file edit view insert format tools table",
660
                    plugins : "autoresize table hr link image charmap lists code emoticons",
661
                    relative_urls : false,
662
                    selector: "#" + textarea[0].id,
663
                    verify_html: false,
664
                    toolbar : [
665
                        "formatselect | bold italic | cut copy paste | alignleft aligncenter alignright | outdent indent | image link unlink anchor cleanup hr",
666
                        "table | bullist numlist | undo redo | removeformat | emoticons charmap | forecolor backcolor | code"
667
                    ],
668
                });
669
                return editor;
670
            }
631
        </script>
671
        </script>
632
    [% END # /UNLESS wysiwyg %]
672
    [% END # /UNLESS wysiwyg %]
633
[% END %]
673
[% END %]
634
- 

Return to bug 30474