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

(-)a/.gitignore (-1 / +1 lines)
Lines 4-7 Link Here
4
/pm_to_blib
4
/pm_to_blib
5
node_modules/
5
node_modules/
6
koha-tmpl/opac-tmpl/bootstrap/css/maps/
6
koha-tmpl/opac-tmpl/bootstrap/css/maps/
7
koha-tmpl/intranet-tmpl/prog/css/maps/
7
koha-tmpl/intranet-tmpl/prog/css/maps/
(-)a/installer/data/mysql/atomicupdate/add-syspref-AuthorityXSLTOpacDetailsDisplay.perl (+9 lines)
Line 0 Link Here
1
$DBversion = 'XXX';
2
if (CheckVersion($DBversion)) {
3
    $dbh->do(q{
4
        INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`)
5
        VALUES ('AuthorityXSLTOpacDetailsDisplay','','','Enable XSL stylesheet control over authority results page display on intranet','Free')
6
    });
7
8
    NewVersion($DBversion, '11083', 'Add syspref AuthorityXSLTOpacDetailsDisplay');
9
}
(-)a/installer/data/mysql/mandatory/sysprefs.sql (+1 lines)
Lines 69-74 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
69
('AuthorityMergeLimit','50',NULL,'Maximum number of biblio records updated immediately when an authority record has been modified.','integer'),
69
('AuthorityMergeLimit','50',NULL,'Maximum number of biblio records updated immediately when an authority record has been modified.','integer'),
70
('AuthorityMergeMode','loose','loose|strict','Authority merge mode','Choice'),
70
('AuthorityMergeMode','loose','loose|strict','Authority merge mode','Choice'),
71
('AuthoritySeparator','--','10','Used to separate a list of authorities in a display. Usually --','free'),
71
('AuthoritySeparator','--','10','Used to separate a list of authorities in a display. Usually --','free'),
72
('AuthorityXSLTOpacDetailsDisplay','','','Enable XSL stylesheet control over authority details page display on opac','Free'),
72
('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'),
73
('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'),
73
('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'),
74
('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'),
74
('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'),
75
('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_interface.pref (+4 lines)
Lines 1-6 Link Here
1
Staff interface:
1
Staff interface:
2
    Appearance:
2
    Appearance:
3
        -
3
        -
4
            - 'Display authority details in the opac interface using XSLT stylesheet at: '
5
            - pref: AuthorityXSLTOpacDetailsDisplay
6
              class: file
7
            - '<br />Options:<ul><li>Put a path to define a xslt file</li><li>Put an URL for an external specific stylesheet.</li></ul>{langcode} will be replaced with current interface language and {authtypecode} will be replaced by the authority type code'
4
            - "Display language selector on "
8
            - "Display language selector on "
5
            - pref: StaffLangSelectorMode
9
            - pref: StaffLangSelectorMode
6
              choices:
10
              choices:
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth-detail.tt (-90 / +6 lines)
Lines 50-66 Link Here
50
                            </span>
50
                            </span>
51
                        </div>
51
                        </div>
52
52
53
                        [% IF ( displayhierarchy ) %]
54
                            <div id="hierarchies">
55
                                [% PROCESS showhierarchy trees = loophierarchies %]
56
                            </div>
57
                        [% END %]
58
59
                        <h1>[% summary.mainentry | html %][% IF authtypetext %] ([% authtypetext | html %])[% END %]</h1>
53
                        <h1>[% summary.mainentry | html %][% IF authtypetext %] ([% authtypetext | html %])[% END %]</h1>
60
54
61
                        <div class="usedin">
55
                        <div class="usedin">
62
                            [% IF count %]<a href="/cgi-bin/koha/opac-search.pl?type=opac&amp;q=[% authid | uri %]&amp;idx=an,phr">Number of records used in: [% count | html %]</a>[% ELSE %]This authority is not used in any records.[% END %]
56
                            [% IF count %]<a href="/cgi-bin/koha/opac-search.pl?type=opac&amp;q=[% authid | uri %]&amp;idx=an,phr">Number of records used in: [% count | html %]</a>[% ELSE %]This authority is not used in any records.[% END %]
63
                        </div>
57
                        </div>
58
                        <br>
64
59
65
                        <div class="authstanza">
60
                        <div class="authstanza">
66
                            [% FOREACH authorize IN summary.authorized %]
61
                            [% FOREACH authorize IN summary.authorized %]
Lines 72-162 Link Here
72
                            [% PROCESS otherscript headings=summary.otherscript wantcategory='preferred' %]
67
                            [% PROCESS otherscript headings=summary.otherscript wantcategory='preferred' %]
73
                        </div>
68
                        </div>
74
69
75
                        [% IF summary.seefrom.size %]
70
                        [% IF authresult.html %]
76
                            <div class="authstanza seefrom">
71
                            [% authresult.html | $raw %]
77
                                <div class="authstanzaheading">Used for/see from:</div>
72
                        [% ELSE %]
78
                                <ul class="seefrom">
73
                            [% PROCESS authresult summary=authresult.summary authid=authresult.authid %]
79
                                    [% FOREACH seefro IN summary.seefrom %]
80
                                        <li class="heading seefrom auth[% seefro.field | html %]">
81
                                            [% IF seefro.type && seefro.type != 'seefrom' %]
82
                                                <span class="label">[% PROCESS authtypelabel type=seefro.type | trim %]:</span>
83
                                            [% END %]
84
                                            <span class="seefrom">[% PROCESS authheadingdisplay heading=seefro.heading search=seefrosearch authid=seefro.authid %]</span>
85
                                        </li>
86
                                    [% END %]
87
                                    [% PROCESS otherscript headings=summary.otherscript wantcategory='seefrom' %]
88
                                </ul>
89
                            </div>
90
                        [% END %]
91
92
                        [% IF summary.seealso.size %]
93
                            <div class="authstanza seealso">
94
                                <div class="authstanzaheading">See also:</div>
95
                                <ul class="seelso">
96
                                    [% FOREACH seeals IN summary.seealso %]
97
                                        <li class="heading seealso auth[% seeals.field | html %]">
98
                                            [% IF seeals.type && seeals.type != 'seealso' %]
99
                                                <span class="label">[% PROCESS authtypelabel type=seeals.type | trim %]:</span>
100
                                            [% END %]
101
                                            <span class="seealso">[% PROCESS authheadingdisplay heading=seeals.heading search=seeals.search authid=seeals.authid %]</span>
102
                                        </li>
103
                                    [% END %]
104
                                    [% PROCESS otherscript headings=summary.otherscript wantcategory='seealso' %]
105
                                </ul>
106
                            </div>
107
                        [% END %]
108
109
                        [% IF marcflavour == 'UNIMARC' && summary.otherscript %]
110
                            <div class="authstanza">
111
                                <div class="authstanzaheading">Other forms:</div>
112
                                <ul>
113
                                    [% FOREACH otherscrip IN summary.otherscript %]
114
                                        <li>
115
                                            [% PROCESS language lang=otherscrip.lang | trim %]:
116
                                            <span class="otherscript">[% otherscrip.term | html %]</span>
117
                                        </li>
118
                                    [% END %]
119
                                </ul>
120
                            </div>
121
                        [% END %]
74
                        [% END %]
122
75
                           
123
                        [% IF ( MARCURLS ) %]
124
                            <div class="authstanza online_resources">
125
                                <span class="label">Online resources:</span>
126
                                <ul>
127
                                    [% FOREACH MARCurl IN MARCURLS %]
128
                                        <li>[% IF ( MARCurl.part ) %][% MARCurl.part | html %]<br />[% END %]
129
                                            [% IF ( Koha.Preference('OPACURLOpenInNewWindow') ) %]
130
                                                <a href="[% MARCurl.MARCURL | url %]" title="[% MARCurl.MARCURL | html %]" target="_blank" rel="noreferrer">
131
                                            [% ELSE %]
132
                                                <a href="[% MARCurl.MARCURL | url %]" title="[% MARCurl.MARCURL | html %]">
133
                                            [% END %]
134
                                            [% MARCurl.linktext | html %]</a>
135
                                            [% IF ( MARCurl.notes ) %]
136
                                                <ul>
137
                                                    [% FOREACH note IN MARCurl.notes %]
138
                                                        <li>[% note.note | html %]</li>
139
                                                    [% END %]
140
                                                </ul>
141
                                            [% END %]
142
                                        </li>
143
                                    [% END # /FOREACH MARCURLS %]
144
                                </ul>
145
                            </div>
146
                        [% END # / IF MARCURLS %]
147
148
                        <div id="authdescriptions" class="toptabs">
149
                            <ul>
150
                                <li id="tab_descriptions"><a href="#descriptions">Notes</a></li>
151
                            </ul>
152
                            <div id="descriptions">
153
                                <div class="content_set">
154
                                    [% FOREACH note IN summary.notes %]
155
                                        <p class="note auth[% note.field | html %]">[% note.note | html %]</p>
156
                                    [% END %]
157
                                </div>
158
                            </div>
159
                        </div>
160
                    </div> <!-- / .#userauthdetails -->
76
                    </div> <!-- / .#userauthdetails -->
161
                </div> <!-- / .col-lg-10/12 -->
77
                </div> <!-- / .col-lg-10/12 -->
162
            </div> <!-- / .row -->
78
            </div> <!-- / .row -->
(-)a/opac/opac-authoritiesdetail.pl (-6 / +24 lines)
Lines 69-76 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
69
69
70
my $authid = $query->param('authid');
70
my $authid = $query->param('authid');
71
$authid = int($authid);
71
$authid = int($authid);
72
my $record = GetAuthority( $authid );
72
my $authresult = GetAuthority( $authid );
73
if ( ! $record ) {
73
if ( ! $authresult ) {
74
    print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
74
    print $query->redirect("/cgi-bin/koha/errors/404.pl"); # escape early
75
    exit;
75
    exit;
76
}
76
}
Lines 86-92 if ($display_hierarchy){ Link Here
86
my $count = $authority ? $authority->get_usage_count : 0;
86
my $count = $authority ? $authority->get_usage_count : 0;
87
87
88
my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authtypecode'] } );
88
my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authtypecode'] } );
89
my $marcurlsarray = GetMarcUrls( $record, $marcflavour );
89
my $marcurlsarray = GetMarcUrls( $authresult, $marcflavour );
90
91
my $AuthorityXSLTOpacDetailsDisplay = C4::Context->preference('AuthorityXSLTOpacDetailsDisplay');
92
    if ($authresult && $AuthorityXSLTOpacDetailsDisplay) {
93
        my $lang = C4::Languages::getlanguage();
94
        
95
        my $xsl = $AuthorityXSLTOpacDetailsDisplay;
96
        
97
        $xsl =~ s/\{langcode\}/$lang/g;
98
        $xsl =~ s/\{authtypecode\}/$authtypecode/g;
99
        my $xslt_engine = Koha::XSLT::Base->new;
100
        my $output = $xslt_engine->transform({ xml => $authority->marcxml, file => $xsl });
101
        if ($xslt_engine->err) {
102
            warn "XSL transformation failed ($xsl): " . $xslt_engine->err;
103
            next;
104
        }
105
        $authresult->{html} = $output;
106
        
107
    }
90
108
91
$template->param(
109
$template->param(
92
    authority_types => $authority_types,
110
    authority_types => $authority_types,
Lines 94-99 $template->param( Link Here
94
    authid          => $authid,
112
    authid          => $authid,
95
    count           => $count,
113
    count           => $count,
96
    MARCURLS        => $marcurlsarray,
114
    MARCURLS        => $marcurlsarray,
115
    authresult      => $authresult,
97
);
116
);
98
117
99
# find the marc field/subfield used in biblio by this authority
118
# find the marc field/subfield used in biblio by this authority
Lines 114-120 if ($show_marc) { Link Here
114
    my @loop_data = ();
133
    my @loop_data = ();
115
134
116
# loop through each tag
135
# loop through each tag
117
    my @fields    = $record->fields();
136
    my @fields    = $authresult->fields();
118
    foreach my $field (@fields) {
137
    foreach my $field (@fields) {
119
        my @subfields_data;
138
        my @subfields_data;
120
139
Lines 166-172 if ($show_marc) { Link Here
166
    }
185
    }
167
    $template->param( "Tab0XX" => \@loop_data );
186
    $template->param( "Tab0XX" => \@loop_data );
168
} else {
187
} else {
169
    my $summary = BuildSummary($record, $authid, $authtypecode);
188
    my $summary = BuildSummary($authresult, $authid, $authtypecode);
170
    $template->{VARS}->{'summary'} = $summary;
189
    $template->{VARS}->{'summary'} = $summary;
171
}
190
}
172
191
173
- 

Return to bug 21330