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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tt (-80 / +125 lines)
Lines 22-28 Link Here
22
    Notices › Tools › Koha
22
    Notices › Tools › Koha
23
</title>
23
</title>
24
[% INCLUDE 'doc-head-close.inc' %]
24
[% INCLUDE 'doc-head-close.inc' %]
25
<style>#preview_template .modal-dialog { width : 80%; } .spinner { display: none; } @media (max-width: 767px) { #preview_template { margin: 0; width : auto; } }</style>
25
[% FILTER collapse %]
26
    <style>
27
        #preview_template .modal-dialog {
28
            width : 80%;
29
        }
30
        .spinner {
31
            display: none;
32
        }
33
        @media (max-width: 767px) {
34
            #preview_template {
35
                margin: 0; width : auto;
36
            }
37
        }
38
        .panel-body fieldset.rows {
39
            border: 0;
40
            background: transparent none;
41
            margin: 0 0 .5em 0;
42
        }
43
        #tabs,
44
        .panel-group {
45
            margin-top: 3px;
46
        }
47
    </style>
48
[% END %]
26
</head>
49
</head>
27
50
28
<body id="tools_letter" class="tools">
51
<body id="tools_letter" class="tools">
Lines 416-520 Link Here
416
                    [% IF Koha.Preference('TranslateNotices') %]
439
                    [% IF Koha.Preference('TranslateNotices') %]
417
                        <div style="clear:both"></div>
440
                        <div style="clear:both"></div>
418
                        <div id="tabs">
441
                        <div id="tabs">
419
                            <ul>
442
                            <!-- Nav tabs -->
420
                                <li><a href="#lang_default">Default</a></li>
443
                            <ul class="nav nav-tabs" role="tablist">
444
                                <li role="presentation">
445
                                    <a href="#lang_default" aria-controls="lang_default" role="tab" data-toggle="tab">Default</a>
446
                                </li>
421
                                [% FOR language IN languages %]
447
                                [% FOR language IN languages %]
422
                                    [% FOR sublanguage IN language.sublanguages_loop %]
448
                                    [% FOR sublanguage IN language.sublanguages_loop %]
423
                                        [% IF language.plural %]
449
                                        [% IF language.plural %]
424
                                            <li><a href="#lang_[% sublanguage.rfc4646_subtag | uri %]">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
450
                                            <li role="presentation">
451
                                                <a href="#lang_[% sublanguage.rfc4646_subtag | uri %]" aria-controls="lang_[% sublanguage.rfc4646_subtag | uri %]" role="tab" data-toggle="tab">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a>
452
                                            </li>
425
                                        [% ELSE %]
453
                                        [% ELSE %]
426
                                            <li><a href="#lang_[% sublanguage.rfc4646_subtag | uri %]">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
454
                                            <li role="presentation">
455
                                                <a href="#lang_[% sublanguage.rfc4646_subtag | uri %]" aria-controls="lang_[% sublanguage.rfc4646_subtag | uri %]" role="tab" data-toggle="tab">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a>
456
                                            </li>
427
                                        [% END %]
457
                                        [% END %]
428
                                    [% END %]
458
                                    [% END %]
429
                                [% END %]
459
                                [% END %]
430
                            </ul>
460
                            </ul>
461
                            <div class="tab-content">
462
                    [% ELSE %]
463
                        <div style="clear:both"></div>
431
                    [% END # /IF TranslateNotices %]
464
                    [% END # /IF TranslateNotices %]
432
465
433
                    [% FOREACH lang IN letters.keys %]
466
                    [% FOREACH lang IN letters.keys %]
434
                        <div id="lang_[% lang | html %]">
467
                        <div role="tabpanel" class="tab-pane" id="lang_[% lang | html %]">
435
                            <div class="transport-types" style="clear:both">
468
                            <div class="panel-group" id="group_[% lang | html %]" role="tablist" aria-multiselectable="true">
436
                                [% FOR mtt IN letters.$lang.templates.keys.sort %]
469
                            [% FOR mtt IN letters.$lang.templates.keys.sort %]
437
                                    [% SET letter = letters.$lang.templates.$mtt %]
470
                                [% SET letter = letters.$lang.templates.$mtt %]
438
                                    [% NEXT IF letter.message_transport_type == "itiva" && !Koha.Preference('TalkingTechItivaPhoneNotification') %]
471
                                [% NEXT IF letter.message_transport_type == "itiva" && !Koha.Preference('TalkingTechItivaPhoneNotification') %]
439
                                    [% NEXT IF letter.message_transport_type == "phone" && !Koha.Preference('PhoneNotification') %]
472
                                [% NEXT IF letter.message_transport_type == "phone" && !Koha.Preference('PhoneNotification') %]
440
                                    <h3>
473
                                <div class="panel panel-default">
441
                                        [% SWITCH letter.message_transport_type %]
474
                                    <div class="panel-heading" role="tab" id="[% letter.message_transport_type | html %]_[% lang | html %]Heading">
442
                                            [% CASE 'email' %]<span>Email</span>
475
                                        <h3 class="panel-title">
443
                                            [% CASE 'print' %]<span>Print</span>
476
                                            <a role="button" class="collapsed" data-toggle="collapse" data-parent="#group_[% lang | html %]" href="#[% letter.message_transport_type | html %]_[% lang | html %]" aria-expanded="false" aria-controls="[% letter.message_transport_type | html %]_[% lang | html %]">
444
                                            [% CASE 'sms' %]<span>SMS</span>
477
                                                [% SWITCH letter.message_transport_type %]
445
                                            [% CASE 'feed' %]<span>Feed</span>
478
                                                    [% CASE 'email' %]<span>Email</span>
446
                                            [% CASE 'itiva' %]<span>Phone ( Itiva )</span>
479
                                                    [% CASE 'print' %]<span>Print</span>
447
                                            [% CASE 'phone' %]<span>Phone</span>
480
                                                    [% CASE 'sms' %]<span>SMS</span>
448
                                            [% CASE %]<span>[% letter.message_transport_type | html %]</span>
481
                                                    [% CASE 'feed' %]<span>Feed</span>
449
                                        [% END %]
482
                                                    [% CASE 'itiva' %]<span>Phone ( Itiva )</span>
450
                                    </h3>
483
                                                    [% CASE 'phone' %]<span>Phone</span>
451
                                    [% IF letter.message_transport_type == "sms" and not Koha.Preference("SMSSendDriver") %]
484
                                                    [% CASE %]<span>[% letter.message_transport_type | html %]</span>
452
                                        <fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]" disabled="disabled">
453
                                            <div class="dialog message">You should enable the SMSSendDriver preference to use the SMS templates.</div>
454
                                    [% ELSE %]
455
                                        <fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]">
456
                                    [% END %]
457
                                        <ol>
458
                                            [% IF ( letter.updated_on ) %]
459
                                                <li>
460
                                                    <label for="updated_on_[% letter.message_transport_type | html %]_[% lang | html %]">Last updated:</label>
461
                                                    [% letter.updated_on | $KohaDates with_hours = 1 %]
462
                                                </li>
463
                                            [% END %]
464
                                            <li>
465
                                                <input type="hidden" name="message_transport_type" value="[% letter.message_transport_type | html %]" />
466
                                                <input type="hidden" name="lang" value="[% lang | html %]" />
467
                                                <label for="is_html_[% letter.message_transport_type | html %]_[% lang | html %]">HTML message:</label>
468
                                                [% IF letter.is_html %]
469
                                                    <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" checked="checked" />
470
                                                [% ELSE %]
471
                                                    <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" />
472
                                                [% END %]
485
                                                [% END %]
473
                                            </li>
486
                                            </a>
474
                                            <li>
487
                                        </h3>
475
                                                <label for="title_[% letter.message_transport_type | html %]_[% lang | html %]">Message subject:</label><input type="text" id="title_[% letter.message_transport_type | html %]_[% lang | html %]" name="title" size="60" value="[% letter.title | html %]" />
488
                                    </div> <!-- /.panel-heading -->
476
                                            </li>
489
                                    <div id="[% letter.message_transport_type | html %]_[% lang | html %]" class="panel-collapse collapse" role="tabpanel" aria-labelledby="[% letter.message_transport_type | html %]_[% lang | html %]Heading">
477
                                            <li>
490
                                        <div class="panel-body">
478
                                                <label for="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]">Message body:</label>
491
                                            [% IF letter.message_transport_type == "sms" and not Koha.Preference("SMSSendDriver") %]
479
                                                [% IF letter.message_transport_type == 'sms' %]
492
                                                <fieldset class="rows mtt" disabled="disabled">
480
                                                    <span class="sms_counter" id="sms_counter_[% lang | html %]">[% IF letter.content && letter.content.length > 0 %][% letter.content.length | html %][% ELSE %]0[% END %]/160 characters</span>
493
                                                    <div class="dialog message">You should enable the SMSSendDriver preference to use the SMS templates.</div>
481
                                                [% END %]
494
                                            [% ELSE %]
482
                                                <table>
495
                                                <fieldset class="rows mtt">
483
                                                    <tr>
484
                                                        <td>
485
                                                            <select name="SQLfieldname" id="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]" multiple="multiple" size="9">
486
                                                                [% FOREACH SQLfieldname IN SQLfieldnames %]
487
                                                                    <option value="[% SQLfieldname.value | html %]">[% SQLfieldname.text | html %]</option>
488
                                                                [% END %]
489
                                                            </select>
490
                                                        </td>
491
                                                        <td class="actions">
492
                                                            <button type="button" data-containerid="[% letter.message_transport_type | html %]_[% lang | html %]" class="btn btn-default btn-sm insert">Insert <i class="fa fa-long-arrow-right"></i></button>
493
                                                        </td>
494
                                                        <td>
495
                                                            <textarea name="content" data-lang="[% lang | html %]" class="content_[% letter.message_transport_type | html %]" id="content_[% letter.message_transport_type | html %]_[% lang | html %]" cols="80" rows="15">[% letter.content | html %]</textarea>
496
                                                        </td>
497
                                                    </tr>
498
                                                </table>
499
                                            </li>
500
                                            [% IF preview_is_available %]
501
                                                <li>
502
                                                    <a href="/cgi-bin/koha/svc/letters/preview" class="preview_template btn btn-default btn-xs" title="Preview this notice template" data-mtt="[% letter.message_transport_type | html %]" data-lang="[% lang | html %]"><i class="fa fa-eye"></i> Preview</a>
503
                                                </li>
504
                                            [% END %]
496
                                            [% END %]
505
                                        </ol>
497
                                                <ol>
506
                                    </fieldset> <!-- /.rows.mtt -->
498
                                                    [% IF ( letter.updated_on ) %]
507
                                [% END # /FOR mtt %]
499
                                                        <li>
508
                            </div>
500
                                                            <span class="label">Last updated:</span>
509
                        </div> <!-- / #transport-types -->
501
                                                            [% letter.updated_on | $KohaDates with_hours = 1 %]
502
                                                        </li>
503
                                                    [% END %]
504
                                                    <li>
505
                                                        <input type="hidden" name="message_transport_type" value="[% letter.message_transport_type | html %]" />
506
                                                        <input type="hidden" name="lang" value="[% lang | html %]" />
507
                                                        <label for="is_html_[% letter.message_transport_type | html %]_[% lang | html %]">HTML message:</label>
508
                                                        [% IF letter.is_html %]
509
                                                            <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" checked="checked" />
510
                                                        [% ELSE %]
511
                                                            <input type="checkbox" name="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" />
512
                                                        [% END %]
513
                                                    </li>
514
                                                    <li>
515
                                                        <label for="title_[% letter.message_transport_type | html %]_[% lang | html %]">Message subject:</label><input type="text" id="title_[% letter.message_transport_type | html %]_[% lang | html %]" name="title" size="60" value="[% letter.title | html %]" />
516
                                                    </li>
517
                                                    <li>
518
                                                        <label for="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]">Message body:</label>
519
                                                        [% IF letter.message_transport_type == 'sms' %]
520
                                                            <span class="sms_counter" id="sms_counter_[% lang | html %]">[% IF letter.content && letter.content.length > 0 %][% letter.content.length | html %][% ELSE %]0[% END %]/160 characters</span>
521
                                                        [% END %]
522
                                                        <table>
523
                                                            <tr>
524
                                                                <td>
525
                                                                    <select name="SQLfieldname" id="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]" multiple="multiple" size="9">
526
                                                                        [% FOREACH SQLfieldname IN SQLfieldnames %]
527
                                                                            <option value="[% SQLfieldname.value | html %]">[% SQLfieldname.text | html %]</option>
528
                                                                        [% END %]
529
                                                                    </select>
530
                                                                </td>
531
                                                                <td class="actions">
532
                                                                    <button type="button" data-containerid="[% letter.message_transport_type | html %]_[% lang | html %]" class="btn btn-default btn-sm insert">Insert <i class="fa fa-long-arrow-right"></i></button>
533
                                                                </td>
534
                                                                <td>
535
                                                                    <textarea name="content" data-lang="[% lang | html %]" class="content_[% letter.message_transport_type | html %]" id="content_[% letter.message_transport_type | html %]_[% lang | html %]" cols="80" rows="15">[% letter.content | html %]</textarea>
536
                                                                </td>
537
                                                            </tr>
538
                                                        </table>
539
                                                    </li>
540
                                                    [% IF preview_is_available %]
541
                                                        <li>
542
                                                            <a href="/cgi-bin/koha/svc/letters/preview" class="preview_template btn btn-default btn-xs" title="Preview this notice template" data-mtt="[% letter.message_transport_type | html %]" data-lang="[% lang | html %]"><i class="fa fa-eye"></i> Preview</a>
543
                                                        </li>
544
                                                    [% END %]
545
                                                </ol>
546
                                            </fieldset> <!-- /.rows.mtt -->
547
                                        </div> <!-- /.panel-body -->
548
                                    </div> <!-- /.panel-collapse -->
549
                                </div> <!-- /.panel.panel-default -->
550
                            [% END # /FOR mtt %]
551
                        </div> <!-- /.panel-group#lang_[% lang | html %] -->
552
                    </div> <!-- /.tab-panel -->
510
                    [% END # /FOREACH lang %]
553
                    [% END # /FOREACH lang %]
511
554
512
                    [% IF Koha.Preference('TranslateNotices') %]
555
                    [% IF Koha.Preference('TranslateNotices') %]
513
                        </div>
556
                            </div> <!-- /.tab-content -->
557
                        </div> <!-- /#tabs -->
514
                    [% END %]
558
                    [% END %]
515
559
516
                        <input type="hidden" id="redirect" name="redirect" value="" />
560
                        <input type="hidden" id="redirect" name="redirect" value="" />
517
                        <input type="hidden" id="section" name="section" value="[% section | html %]" />
561
                        <input type="hidden" id="section" name="section" value="[% section | html %]" />
562
                        <input type="hidden" id="langtab" name="langtab" value="[% langtab | html %]" />
518
                        <input type="hidden" name="searchfield" value="[% searchfield | html %]" />
563
                        <input type="hidden" name="searchfield" value="[% searchfield | html %]" />
519
                    </form> <!-- /#add_notice -->
564
                    </form> <!-- /#add_notice -->
520
                [% END # /IF add_form %]
565
                [% END # /IF add_form %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/letter.js (-15 / +23 lines)
Lines 128-148 $(document).ready(function() { Link Here
128
        }
128
        }
129
    });
129
    });
130
130
131
    $( ".transport-types" ).accordion({
131
    let section = $("#section").val();
132
        header: "h3",
132
    if( section != "" ){
133
        collapsible: true,
133
        $("a[href='#" + section + "']").click();
134
        active: parseInt( $("#section").val(), 10),
134
    }
135
        animate: 200,
135
136
        activate: function() {
136
    $(".panel-group").on("shown.bs.collapse", function (e) {
137
            var active = $( ".transport-types" ).accordion( "option", "active" );
137
        $("#section").val( e.target.id );
138
            if( active === false ){
138
    }).on("hidden.bs.collapse", function (e) {
139
                $("#section").val("");
139
        $("#section").val("");
140
            } else {
141
                $("#section").val( active );
142
            }
143
        }
144
    });
140
    });
145
141
142
    if( $("#tabs").length > 0 ){
143
        let langtab = $("#langtab").val();
144
        $("#tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
145
            var link = e.target.hash.replace("#","");
146
            $("#langtab").val( link );
147
        });
148
149
        if( langtab != "" ){
150
            $("#tabs a[href='#" + langtab + "']").tab("show");
151
        } else {
152
            $("#tabs a:first").tab("show");
153
        }
154
    }
155
146
    $(".insert").on("click",function(){
156
    $(".insert").on("click",function(){
147
        var containerid = $(this).data("containerid");
157
        var containerid = $(this).data("containerid");
148
        insertValueQuery( containerid );
158
        insertValueQuery( containerid );
Lines 154-161 $(document).ready(function() { Link Here
154
        $("#submit_form").click();
164
        $("#submit_form").click();
155
    });
165
    });
156
166
157
    $("#tabs").tabs();
158
159
    $("body").on("click", ".preview_template", function(e){
167
    $("body").on("click", ".preview_template", function(e){
160
        e.preventDefault();
168
        e.preventDefault();
161
        var mtt = $(this).data("mtt");
169
        var mtt = $(this).data("mtt");
(-)a/tools/letter.pl (-2 / +3 lines)
Lines 70-75 my $content = $input->param('content'); Link Here
70
my $op          = $input->param('op') || '';
70
my $op          = $input->param('op') || '';
71
my $redirect    = $input->param('redirect');
71
my $redirect    = $input->param('redirect');
72
my $section     = $input->param('section');
72
my $section     = $input->param('section');
73
my $langtab     = $input->param('langtab');
73
74
74
my $dbh = C4::Context->dbh;
75
my $dbh = C4::Context->dbh;
75
76
Lines 93-105 $template->param( Link Here
93
  searchfield => $searchfield,
94
  searchfield => $searchfield,
94
    branchcode => $branchcode,
95
    branchcode => $branchcode,
95
    section => $section,
96
    section => $section,
97
    langtab => $langtab,
96
	action => $script_name
98
	action => $script_name
97
);
99
);
98
100
99
if ( $op eq 'add_validate' or $op eq 'copy_validate' ) {
101
if ( $op eq 'add_validate' or $op eq 'copy_validate' ) {
100
    add_validate();
102
    add_validate();
101
    if( $redirect eq "just_save" ){
103
    if( $redirect eq "just_save" ){
102
        print $input->redirect("/cgi-bin/koha/tools/letter.pl?op=add_form&branchcode=$branchcode&module=$module&code=$code&redirect=done&section=$section");
104
        print $input->redirect("/cgi-bin/koha/tools/letter.pl?op=add_form&branchcode=$branchcode&module=$module&code=$code&redirect=done&section=$section&langtab=$langtab");
103
        exit;
105
        exit;
104
    } else {
106
    } else {
105
        $op = q{}; # we return to the default screen for the next operation
107
        $op = q{}; # we return to the default screen for the next operation
106
- 

Return to bug 30545