Bugzilla – Attachment 9855 Details for
Bug 5888
opac-detail subject/author links improvements
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 5888: opac-detail subject/author links improvements
0001-Bug-5888-opac-detail-subject-author-links-improvemen.patch (text/plain), 14.10 KB, created by
Julian Maurice
on 2012-05-31 10:32:44 UTC
(
hide
)
Description:
Bug 5888: opac-detail subject/author links improvements
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2012-05-31 10:32:44 UTC
Size:
14.10 KB
patch
obsolete
>From 845726872a7e5c21e5b379bde1687dfdd9107961 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Wed, 23 May 2012 11:00:17 +0200 >Subject: [PATCH] Bug 5888: opac-detail subject/author links improvements > >When the user clicks on a subject or an author, the list of subjects >(authors) is displayed and the user can choose more than 1 subject >(author) to search on. >Also added a link to opac-authoritiesdetail.pl when possible. > >Only affects 'Normal view'. Does not affect XSLT display. >--- > C4/Biblio.pm | 12 +- > koha-tmpl/opac-tmpl/prog/en/css/opac.css | 30 +++ > koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 200 +++++++++++++++++++- > 3 files changed, 230 insertions(+), 12 deletions(-) > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index 2aa17d5..8206855 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -1705,6 +1705,7 @@ sub GetMarcSubjects { > > # if there is an authority link, build the link with an= subfield9 > my $found9 = 0; >+ my $authoritylink; > for my $subject_subfield (@subfields) { > > # don't load unimarc subfields 3,4,5 >@@ -1722,6 +1723,7 @@ sub GetMarcSubjects { > } > if ( $code eq 9 ) { > $found9 = 1; >+ $authoritylink = $linkvalue; > @link_loop = ( { 'limit' => 'an', link => "$linkvalue" } ); > } > if ( not $found9 ) { >@@ -1738,7 +1740,10 @@ sub GetMarcSubjects { > $counter++; > } > >- push @marcsubjects, { MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop }; >+ push @marcsubjects, { >+ MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop, >+ authoritylink => $authoritylink, >+ }; > > } > return \@marcsubjects; >@@ -1821,7 +1826,10 @@ sub GetMarcAuthors { > unless ( $authors_subfield->[0] eq '9' || $authors_subfield->[0] eq '0'); > $count_auth++; > } >- push @marcauthors, { MARCAUTHOR_SUBFIELDS_LOOP => \@subfields_loop }; >+ push @marcauthors, { >+ MARCAUTHOR_SUBFIELDS_LOOP => \@subfields_loop, >+ authoritylink => $subfield9, >+ }; > } > return \@marcauthors; > } >diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css >index ea538aa..3b07d45 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css >+++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css >@@ -2159,6 +2159,36 @@ a.p1:active { > div.ft { > clear : both; > } >+ >+.authorSearch { >+ position: absolute; >+ display: none; >+ z-index: 2; >+ background-color: white; >+ border: 1px solid black; >+ padding: 4px; >+} >+.authorSearch li { >+ list-style-type: none; >+} >+.authorSearch ul { >+ padding-left: 0px; >+} >+.subjectSearch { >+ position: absolute; >+ display: none; >+ z-index: 2; >+ background-color: white; >+ border: 1px solid black; >+ padding: 4px; >+} >+.subjectSearch li { >+ list-style-type: none; >+} >+.subjectSearch ul { >+ padding-left: 0px; >+} >+ > #basket td ul li { > font-size:90%; > list-style:disc outside url("../../images/item-bullet.gif"); >diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt >index 3c45aff..953c3e4 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt >+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt >@@ -269,6 +269,102 @@ YAHOO.util.Event.onContentReady("furtherm", function () { > }); > //]]> > </script> >+ >+<script type="text/JavaScript" language="JavaScript"> >+//<![CDATA[ >+ function showAuthors(element, authornumber){ >+ // Hide subjects menu if displayed >+ hideMenu(".subjectSearch"); >+ >+ // Check checkbox related to the clicked link >+ $("#authorsList input[type='checkbox']").attr('checked', false); >+ $("#author_"+authornumber).attr('checked', true); >+ >+ makeAuthorRequest(); >+ >+ // Display menu >+ var left = element.offsetLeft || 0; >+ var top = element.offsetTop || 0; >+ $('.authorSearch').css('display', 'block'); >+ $('.authorSearch').css('left', left); >+ $('.authorSearch').css('top', top + 15); >+ } >+ >+ function hideMenu(elem) { >+ $(elem).css('display', 'none'); >+ } >+ >+ function checkAll(checkbox, elem) { >+ var check = $(checkbox).attr('checked') ? true : false; >+ $(elem).find("input[type='checkbox']").attr('checked', check); >+ elem == "#authorsList" ? makeAuthorRequest() : makeSubjectRequest(); >+ } >+ >+ function makeAuthorRequest(){ >+ var values = []; >+ >+ $("#authorsList").find("input[type='checkbox']:checked").each(function () { >+ values.push($(this).val()); >+ }); >+ >+ if (values.length > 0) { >+ var request = "/cgi-bin/koha/opac-search.pl?q=" + values.join(' and '); >+ $("#validAuthorSearch").attr("href", request); >+ } else { >+ $("#validAuthorSearch").removeAttr("href"); >+ } >+ >+ } >+ >+ //Subjects >+ function showSubjects(element, subjectnumber, subfieldnumber){ >+ // Hide author menu if displayed >+ hideMenu(".authorSearch"); >+ >+ // Check checkbox related to the clicked link >+ $("#subjectsList input[type='checkbox']").attr('checked', false); >+ $("#subject_"+subjectnumber+"_"+subfieldnumber).attr('checked', true); >+ >+ makeSubjectRequest(); >+ >+ // Display menu >+ var left = element.offsetLeft || 0; >+ var top = element.offsetTop || 0; >+ $('.subjectSearch').css('display', 'block'); >+ $('.subjectSearch').css('left', left); >+ $('.subjectSearch').css('top', top + 15); >+ } >+ >+ function makeSubjectRequest() { >+ var values = []; >+ $("#subjectsList > ul").each(function() { >+ var all_checked = true; >+ var local_values = []; >+ $(this).find('input[type="checkbox"]').each(function() { >+ if($(this).attr('checked')) { >+ local_values.push($(this).val()); >+ } else { >+ all_checked = false; >+ } >+ }); >+ var authid = $(this).attr('data-authid'); >+ if(all_checked && authid) { >+ values.push('an:' + authid); >+ } else { >+ values = values.concat(local_values); >+ } >+ }); >+ >+ if(values.length > 0) { >+ var request = "/cgi-bin/koha/opac-search.pl?q=" + values.join(' and '); >+ $("#validSubjectSearch").attr('href', request); >+ } else { >+ $("#validSubjectSearch").removeAttr("href"); >+ } >+ } >+//]]> >+</script> >+ > [% IF ( opacuserlogin ) %][% IF ( loggedinusername ) %][% IF ( TagsEnabled ) %]<style type="text/css"> > #addtagl { display: none; } > </style>[% END %][% END %][% END %] >@@ -336,12 +432,51 @@ YAHOO.util.Event.onContentReady("furtherm", function () { > </span> > > [% IF ( MARCAUTHORS ) %] >- <span class="results_summary"><span class="label">Authors:</span> >+ <span class="results_summary"> >+ <span class="label">Authors:</span> >+ <div class="authorSearch" id="authorSearch"> >+ <span><b>Select the item(s) to search :</b></span> >+ <ul id="authorsList"> >+ <li><input type="checkbox" onchange="checkAll(this, '#authorsList')"> <b>all</b></li> >+ <li><hr /></li> > [% FOREACH MARCAUTHOR IN MARCAUTHORS %] >- [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %][% MARCAUTHOR_SUBFIELDS_LOO.separator %]<a title="â¡[% MARCAUTHOR_SUBFIELDS_LOO.code %] [% MARCAUTHOR_SUBFIELDS_LOO.value %]" href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link_loo IN MARCAUTHOR_SUBFIELDS_LOO.link_loop %][% link_loo.operator |url %][% link_loo.limit |url %]:[% link_loo.link |url %][% END %]">[% MARCAUTHOR_SUBFIELDS_LOO.value %]</a>[% END %] >- [% UNLESS ( loop.last ) %]| >-[% END %] >+ <li> >+ [% IF (MARCAUTHOR.authoritylink) %] >+ <input type="checkbox" name="checkbox" >+ id="author_[% loop.count %]" >+ onclick="makeAuthorRequest()" >+ value="an:[% MARCAUTHOR.authoritylink %]" /> >+ [% ELSE %] >+ <input type="checkbox" name="checkbox" >+ id="author_[% loop.count %]" >+ onclick="makeAuthorRequest()" >+ value="au,wrdl:[% FOREACH SUBFIELD IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %][% SUBFIELD.value |url %][% UNLESS (loop.last) %]+[% END %][% END %]" /> >+ [% END %] >+ >+ [% FOREACH SUBFIELD IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %] >+ [% SUBFIELD.value %] >+ [% END %] >+ </li> > [% END %] >+ </ul> >+ <hr /> >+ <a href="#" onclick="hideMenu('.authorSearch'); return false">Cancel</a> >+ | >+ <a id="validAuthorSearch">Search</a> >+ </div> >+ [% FOREACH MARCAUTHOR IN MARCAUTHORS %] >+ [% authorsloop = loop %] >+ [% FOREACH SUBFIELD IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %] >+ <a title="$[% SUBFIELD.code %] [% SUBFIELD.value %]" >+ onclick="showAuthors(this, [% authorsloop.count %]); return false;" >+ href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link IN SUBFIELD.link_loop %][% link.operator |url %][% link.limit |url %]:[% link.link |url %][% END %]">[% SUBFIELD.value %]</a> >+ [% UNLESS (loop.last) %][% SUBFIELD.separator %][% END %] >+ [% END %] >+ [% IF (MARCAUTHOR.authoritylink) %] >+ <a href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% MARCAUTHOR.authoritylink %]"><img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png"></a> >+ [% END %] >+ [% UNLESS ( loop.last ) %]|[% END %] >+ [% END %] > </span> > [% END %] > >@@ -395,12 +530,57 @@ YAHOO.util.Event.onContentReady("furtherm", function () { > [% END %] > > [% IF ( MARCSUBJCTS ) %] >- <span class="results_summary"><span class="label">Subject(s):</span> >- [% FOREACH MARCSUBJCT IN MARCSUBJCTS %] >- [% FOREACH MARCSUBJECT_SUBFIELDS_LOO IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %] >- [% MARCSUBJECT_SUBFIELDS_LOO.separator %]<a title="$[% MARCSUBJECT_SUBFIELDS_LOO.code %] [% MARCSUBJECT_SUBFIELDS_LOO.value %]" href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link_loo IN MARCSUBJECT_SUBFIELDS_LOO.link_loop %][% link_loo.operator |url %][% link_loo.limit |url %]:[% link_loo.link |url %][% END %]">[% MARCSUBJECT_SUBFIELDS_LOO.value %]</a>[% END %] >- [% IF ( loop.last ) %][% ELSE %]|[% END %] >- [% END %]</span> >+ <span class="results_summary"> >+ <span class="label">Subject(s):</span> >+ <div class="subjectSearch" > >+ <span><b>Select the item(s) to search :</b></span> >+ <div id="subjectsList"> >+ <input type="checkbox" id="all_subjects" >+ onchange="checkAll(this, '#subjectsList')" /> >+ <label for="all_subjects"> >+ <b>all</b> >+ </label> >+ <hr /> >+ [% FOREACH MARCSUBJCT IN MARCSUBJCTS %] >+ [% subjectsloop = loop %] >+ [% IF MARCSUBJCT.authoritylink %] >+ <ul id="subjectsList[% loop.count %]" >+ data-authid="[% MARCSUBJCT.authoritylink %]"> >+ [% ELSE %] >+ <ul id="subjectsList[% loop.count %]"> >+ [% END %] >+ [% FOREACH SUBFIELD IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %] >+ <li> >+ <input type="checkbox" onclick="makeSubjectRequest()" >+ name="checkbox" >+ id="subject_[% subjectsloop.count %]_[% loop.count %]" >+ value="su,wrdl:[% SUBFIELD.value |url %]" /> >+ <label for="subject_[% subjectsloop.count %]_[% loop.count %]"> >+ [% SUBFIELD.value %] >+ </label> >+ </li> >+ [% END %] >+ </ul> >+ <hr /> >+ [% END %] >+ </div> >+ <a href="#" >+ onclick="hideMenu('.subjectSearch'); return false">Cancel</a> >+ | >+ <a id="validSubjectSearch">Search</a> >+ </div> >+ [% FOREACH MARCSUBJCT IN MARCSUBJCTS %] >+ [% subjectsloop = loop %] >+ [% FOREACH SUBFIELD IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %] >+ [% SUBFIELD.separator %] >+ <a title="$[% SUBFIELD.code %] [% SUBFIELD.value %]" href="/cgi-bin/koha/opac-search.pl?q=[% FOREACH link_loo IN SUBFIELD.link_loop %][% link_loo.operator |url %][% link_loo.limit |url %]:[% link_loo.link |url %][% END %]" onclick="showSubjects(this, [% subjectsloop.count %], [% loop.count %]); return false;">[% SUBFIELD.value %]</a> >+ [% END %] >+ [% IF (MARCSUBJCT.authoritylink) %] >+ <a href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% MARCSUBJCT.authoritylink %]"><img style="vertical-align:middle" height="15" width="15" src="/opac-tmpl/prog/images/filefind.png" /></a> >+ [% END %] >+ [% UNLESS ( loop.last ) %] | [% END %] >+ [% END %] >+ </span> > [% ELSE %] > [% IF ( subjects ) %]<span class="results_summary"><span class="label">Subject(s):</span> [% FOREACH subject IN subjects %]<a href="/cgi-bin/koha/opac-search.pl?q=su:[% subject.subject |url %]">[% subject.subject %]</a> | [% END %]</span>[% END %] > [% END %] >-- >1.7.10 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5888
:
3345
|
9738
|
9855
|
9856
|
11586
|
11592
|
12308
|
12343
|
12344
|
13631
|
13632
|
13973
|
13974
|
14140
|
14141
|
15230
|
15231
|
15341
|
15342
|
15343
|
15344
|
15345
|
15346
|
15347
|
15348