From 1a68acf2c9a37ae628a2ce71e42733533aa78568 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 31 Oct 2012 11:10:44 +0100 Subject: [PATCH] Bug 8992: Interfacing with the Idref webservice On the detail page (in the opac), if the biblio comes from the Sudoc, you must have a link (on the right of the author link) which open a popup with informations about this author (publications by role). To test: 1/ Switch on the Idref system preference 2/ Simulate a SUDOC record: Fill a 7..$3 field with a ppn (032581270 for example). Fill the 009 field with an integer 3/ Go to the opac detail page of this notice. You should see the IDREF link. If you click on it, a popup displays a loading icon and after a few seconds (depending of the productivity of the authority :)), a list of roles. For each role, a table displays all his corresponding publications. 4/ On the right, you have 2 links: 1 for a koha search for this result and 1 for a SUDOC link --- C4/Biblio.pm | 6 ++ etc/zebradb/marc_defs/unimarc/biblios/record.abs | 7 ++ installer/data/mysql/updatedatabase.pl | 16 ++++ .../en/modules/admin/preferences/web_services.pref | 7 ++ koha-tmpl/opac-tmpl/prog/en/css/datatables.css | 42 ++++----- koha-tmpl/opac-tmpl/prog/en/css/opac.css | 41 +++++++++ koha-tmpl/opac-tmpl/prog/en/includes/greybox.inc | 7 ++ koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 10 ++- koha-tmpl/opac-tmpl/prog/en/modules/opac-idref.tt | 66 ++++++++++++++ koha-tmpl/opac-tmpl/prog/images/first-disabled.png | Bin 0 -> 843 bytes koha-tmpl/opac-tmpl/prog/images/first.png | Bin 0 -> 720 bytes koha-tmpl/opac-tmpl/prog/images/last-disabled.png | Bin 0 -> 826 bytes koha-tmpl/opac-tmpl/prog/images/last.png | Bin 0 -> 737 bytes koha-tmpl/opac-tmpl/prog/images/next-disabled.png | Bin 0 -> 866 bytes koha-tmpl/opac-tmpl/prog/images/next.png | Bin 0 -> 736 bytes koha-tmpl/opac-tmpl/prog/images/prev-disabled.png | Bin 0 -> 862 bytes koha-tmpl/opac-tmpl/prog/images/prev.png | Bin 0 -> 745 bytes opac/opac-detail.pl | 13 +++ opac/opac-idref.pl | 91 ++++++++++++++++++++ 19 files changed, 284 insertions(+), 22 deletions(-) create mode 100644 koha-tmpl/opac-tmpl/prog/en/includes/greybox.inc create mode 100644 koha-tmpl/opac-tmpl/prog/en/modules/opac-idref.tt create mode 100644 koha-tmpl/opac-tmpl/prog/images/first-disabled.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/first.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/last-disabled.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/last.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/next-disabled.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/next.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/prev-disabled.png create mode 100644 koha-tmpl/opac-tmpl/prog/images/prev.png create mode 100755 opac/opac-idref.pl diff --git a/C4/Biblio.pm b/C4/Biblio.pm index afb60d3..6a8d68c 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -1834,9 +1834,14 @@ sub GetMarcAuthors { } # other subfields + my $unimarc3; for my $authors_subfield (@subfields) { next if ( $authors_subfield->[0] eq '9' ); + # unimarc3 contains the $3 of the author for UNIMARC. + # For french academic libraries, it's the "ppn", and it's required for idref webservice + $unimarc3 = $authors_subfield->[1] if $marcflavour eq 'UNIMARC' and $authors_subfield->[0] =~ /3/; + # don't load unimarc subfields 3, 5 next if ( $marcflavour eq 'UNIMARC' and ( $authors_subfield->[0] =~ /3|5/ ) ); @@ -1872,6 +1877,7 @@ sub GetMarcAuthors { push @marcauthors, { MARCAUTHOR_SUBFIELDS_LOOP => \@subfields_loop, authoritylink => $subfield9, + unimarc3 => $unimarc3 }; } return \@marcauthors; diff --git a/etc/zebradb/marc_defs/unimarc/biblios/record.abs b/etc/zebradb/marc_defs/unimarc/biblios/record.abs index dcbc7a1..7110845 100644 --- a/etc/zebradb/marc_defs/unimarc/biblios/record.abs +++ b/etc/zebradb/marc_defs/unimarc/biblios/record.abs @@ -101,14 +101,21 @@ melm 701 Author,Personal-name,Author:p,Personal-name:p,Personal-name:p melm 702$9 Koha-Auth-Number,Koha-Auth-Number:n melm 702 Author,Personal-name,Author:p,Personal-name:p,Personal-name:p +melm 700$3 Identified-standard +melm 701$3 Identified-standard +melm 702$3 Identified-standard + # collective Author melm 710$9 Koha-Auth-Number,Koha-Auth-Number:n melm 710 Author,Author-name-corporate,Author-name-conference,Corporate-name,Conference-name,Author:p,Author-name-corporate:p,Author-name-conference:p,Corporate-name:p,Conference-name:p +melm 710$3 Identified-standard melm 711$9 Koha-Auth-Number,Koha-Auth-Number:n melm 711 Author,Author-name-corporate,Author-name-conference,Corporate-name,Conference-name,Author:p,Author-name-corporate:p,Author-name-conference:p,Corporate-name:p,Conference-name:p +melm 711$3 Identified-standard melm 712$9 Koha-Auth-Number,Koha-Auth-Number:n melm 712 Author,Author-name-corporate,Author-name-conference,Corporate-name,Conference-name,Author:p,Author-name-corporate:p,Author-name-conference:p,Corporate-name:p,Conference-name:p +melm 712$3 Identified-standard ############## TITLE ################## # main Title diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 7ab48ee..8e9509b 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6020,6 +6020,22 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { SetVersion ($DBversion); } + + + +$DBversion = "3.09.00.XXX"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do(qq{ + INSERT INTO systempreferences (variable,value,explanation,options,type) + VALUES('IDREF','0','Disable/enable the IDREF webservice from the OPAC detail page.',NULL,'YesNo') + }); + print "Upgrade to $DBversion done (Add system preference IDREF))\n"; + SetVersion($DBversion); +} + + + + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref index 7244675..a3ad67f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/web_services.pref @@ -44,3 +44,10 @@ Web services: - pref: SvcMaxReportRows class: integer - rows of a report requested via the reports web service. + IDREF: + - + - pref: IDREF + choices: + yes: Enable + no: Disable + - the IDREF webservice from the opac detail page diff --git a/koha-tmpl/opac-tmpl/prog/en/css/datatables.css b/koha-tmpl/opac-tmpl/prog/en/css/datatables.css index e7b11bd..2a80b5a 100644 --- a/koha-tmpl/opac-tmpl/prog/en/css/datatables.css +++ b/koha-tmpl/opac-tmpl/prog/en/css/datatables.css @@ -3,23 +3,23 @@ input.search_init { } .sorting_asc { padding-right: 19px; - background: url("../../img/asc.gif") no-repeat scroll right center #EEEEEE; + background: url("../../images/asc.gif") no-repeat scroll right center #EEEEEE; } .sorting_desc { padding-right: 19px; - background: url("../../img/desc.gif") no-repeat scroll right center #EEEEEE; + background: url("../../images/desc.gif") no-repeat scroll right center #EEEEEE; } .sorting { padding-right: 19px; - background: url("../../img/ascdesc.gif") no-repeat scroll right center #EEEEEE; + background: url("../../images/ascdesc.gif") no-repeat scroll right center #EEEEEE; } .sorting_asc_disabled { padding-right: 19px; - background: url("../../img/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE; + background: url("../../images/datatables/sort_asc_disabled.png") no-repeat scroll right center #EEEEEE; } .sorting_desc_disabled { padding-right: 19px; - background: url("../../img/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE; + background: url("../../images/datatables/sort_desc_disabled.png") no-repeat scroll right center #EEEEEE; } .sorting_disabled { padding-right: 19px; @@ -83,25 +83,25 @@ div.dataTables_paginate { color : #0000CC; } .paging_full_numbers span.paginate_button.first { - background-image : url('../../img/first.png'); + background-image : url('../../images/first.png'); background-repeat: no-repeat; background-position : 2px center; padding-left : 2em; } .paging_full_numbers span.paginate_button.previous { - background-image : url('../../img/prev.png'); + background-image : url('../../images/prev.png'); background-repeat: no-repeat; background-position : 2px center; padding-left : 2em; } .paging_full_numbers span.paginate_button.next { - background-image : url('../../img/next.png'); + background-image : url('../../images/next.png'); background-repeat: no-repeat; background-position : right center; padding-right : 2em; } .paging_full_numbers span.paginate_button.last { - background-image : url('../../img/last.png'); + background-image : url('../../images/last.png'); background-repeat: no-repeat; background-position : right center; border-right : 1px solid #686868; @@ -147,31 +147,31 @@ div.dataTables_paginate.paging_four_button { width: 16px; } .paginate_disabled_first { - background-image: url("../../img/first-disabled.png"); + background-image: url("../../images/first-disabled.png"); } .paginate_enabled_first { - background-image: url("../../img/first.png"); + background-image: url("../../images/first.png"); cursor: pointer; } .paginate_disabled_previous { - background-image: url("../../img/prev-disabled.png"); + background-image: url("../../images/prev-disabled.png"); } .paginate_enabled_previous { - background-image: url("../../img/prev.png"); + background-image: url("../../images/prev.png"); cursor: pointer; } .paginate_disabled_next { - background-image: url("../../img/next-disabled.png"); + background-image: url("../../images/next-disabled.png"); } .paginate_enabled_next { - background-image: url("../../img/next.png"); + background-image: url("../../images/next.png"); cursor: pointer; } .paginate_disabled_last { - background-image: url("../../img/last-disabled.png"); + background-image: url("../../images/last-disabled.png"); } .paginate_enabled_last { - background-image: url("../../img/last.png"); + background-image: url("../../images/last.png"); cursor: pointer; } @@ -248,16 +248,16 @@ table.display thead th { width: 19px; } .paginate_disabled_previous { - background-image: url("../../img/datatables/back_disabled.jpg"); + background-image: url("../../images/datatables/back_disabled.jpg"); } .paginate_enabled_previous { - background-image: url("../../img/datatables/back_enabled.jpg"); + background-image: url("../../images/datatables/back_enabled.jpg"); } .paginate_disabled_next { - background-image: url("../../img/datatables/forward_disabled.jpg"); + background-image: url("../../images/datatables/forward_disabled.jpg"); } .paginate_enabled_next { - background-image: url("../../img/datatables/forward_enabled.jpg"); + background-image: url("../../images/datatables/forward_enabled.jpg"); } .spacer { clear: both; diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css index 7ab95e0..5fdcc07 100644 --- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css +++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css @@ -2820,3 +2820,44 @@ body#opac-main #opacmainuserblockmobile { .tagweight9 { font-size: 30px; } + +div.pager { + background-color : #E8E8E8; + border : 1px solid #BCBCBC; + -moz-border-radius : 5px; + display : inline-block; + font-size : 85%; + padding : .3em .5em .3em .5em; + margin : .4em 0; +} +div.pager img { + vertical-align : middle; +} +div.pager img.last { + padding-right: 5px; +} +div.pager input.pagedisplay { + border : 0; + background-color : transparent; + font-weight: bold; + text-align : center; +} +a.localimage img { + border : 1px solid #0000CC; + margin : 0 .5em; + padding : .3em; +} +div.pager p { + margin: 0; +} + + +/* IDREF */ +#idref h2.role { + background-color: #DDDEEE; + cursor: pointer; +} + +#idref table { + margin: 0; +} diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/greybox.inc b/koha-tmpl/opac-tmpl/prog/en/includes/greybox.inc new file mode 100644 index 0000000..b955b44 --- /dev/null +++ b/koha-tmpl/opac-tmpl/prog/en/includes/greybox.inc @@ -0,0 +1,7 @@ + + + + + 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 1d0523a..c942b2b 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt @@ -11,6 +11,7 @@ [% END %] [% IF ( OpacStarRatings != 'disable' ) %] [% END %] +[% INCLUDE greybox.inc %] [% IF ( OpacHighlightedWords ) %][% END %] + [% INCLUDE 'datatables-strings.inc' %] + + + + +
+ [% IF error %] + This ppn is not found on the idref service. + [% ELSE %] + [% FOREACH role IN content %] +
+

[% role.role_name %] ([% role.count %])

+
+ + + + + + + + [% FOREACH doc IN role.docs %] + + + + + + [% END %] + +
CitationKohaSudoc
[% doc.citation %]KohaSudoc
+
+
+ [% END %] + [% END %] +
+[% INCLUDE 'opac-bottom.inc' %] + diff --git a/koha-tmpl/opac-tmpl/prog/images/first-disabled.png b/koha-tmpl/opac-tmpl/prog/images/first-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf2106cf24f9e6536907061ea9be1945552c635 GIT binary patch literal 843 zcmV-R1GM~!P)Tog$2L*+jL@oOM{nwy*Z3|T!u05QT00BYm`YS0i96El~T zl+@zoZ%zW0-vAo)1*8ukfWQWTGy~a&y1Ke9 z;^N{FKtt5HxVRWNI5-$U@;`q3VEFv`GsBZ7Pj0<>^=iePJ9qW~Ejyo+lk){2fLOq$ z0BzRM(Q%QGkSJ18QsM#H%<${iFNUvQzk&?_@qq?2@bU4f{r&s52#6UTJb3UOsPzm$ z05J;-3rhhdU4R;sfmo8Aot@#`yLSw~fB$Cq_wOGVgV^WJonrvXGYAO@u>oBn3G~*} zBS(%r1qdJ}pefQoo3%tmMb$u>K~9}CX%fSdB}?D|b?w?UhBIf*FuZ>Knt_v(lR-g2 zK@CW20bM5z5I`UUM0t3447jc)-NOaPi{BTR_9Efs!^r05Nadw(awwLx=t|Gc*4NMw2lx zU9brX3c_8$#Kgn^Ox6sbSOVF+W5S~~r$Is8t07`Yh^w03<(Ic?UfByVg!NS6_2b3Q`dI16mB{Kmj4WL)dfwUG-qXCEy z)BtkH4IsV%)OZc(B5-B`4Ra{SO}{RpJN*%_!2B|8HI7y#v+ VkuA4ftNj1~002ovPDHLkV1ks|VH^Me literal 0 HcmV?d00001 diff --git a/koha-tmpl/opac-tmpl/prog/images/first.png b/koha-tmpl/opac-tmpl/prog/images/first.png new file mode 100644 index 0000000000000000000000000000000000000000..6f11fcb086b1bfa51bc5070ca45fac0a988c624c GIT binary patch literal 720 zcmV;>0x$iEP)ITpohD^Ctgf=H~o==W*|y0)VM;-LQd9lR=YF)677| z!Jh8V_;KSkP5LJrlF9S+j0qkk+2iPm7~x{#{$ZSbvzK9J-4zqYVC)27V7~717pTZd znit9v$VwYJS3ROyLxp^?0)a!0U)oMn7(0Xv0eUoZ@gH)t)d5_J+J%bT22oSJ)g^nf zqQZVCEIYOm2+rB;rB+cID%~N1o%g50=A<=fWgC_GFUb) z%s4&22M=t~3G+RMgR^pz#KbcfK)ZtsdJ$j@d{400GnQJeAz+sPu#&f$`6hKh0J%~V zq(%oWs|qZyzh}{lfSK@dRK#JSxg@DDP3^*cD+kP0j(npKkSQvp3bk_uYtD5My##O+ z;RpcDs9R5c#9;NFP5{z^GN_^r%PX%(0OOZ~7+aNFP*XZk{E2|i#E`vI`YjCrsfz|V zndEsDXoqvug2CxaF}ZvhdOaY6!{9q~KO+jO!o5Vk0qt%NcD}`cvVR;6QTNzYGWq-= zUX+?7V0e7VLW2m6_>T!vT6W8eRsOC$*+0hNMWWwDsLfA)S*X-WV71;M{bCzlZ#KpzU zrKF^^czAdW*x1-KK=R+ef4}kh^XCgMUc9*W_U+q~K(QM@gT8?D0R#}(fXS05^8nd~ zy1Ke9Km#Jg#KhFNxVRWNI5DJm-R0BvUY_3IbImoH#T7(jfW!3=zSd}^02T>`0Lc<|uCcc9c6fB<3^ z78aHQO1da1DJ283BuMeelP4MY`T4=N|NHk3Y}mJN-#`X10M)a-di6>Y=&GkjjvRRk z5I{`8z>=1bkkA4-8>IQ;$Bzs znh5tZ%;p0J4lulX_YQ6-hz40AARqwZgG}ZJ2p}e84ajU}W@d)pzkf3@F)@L~VB#Pe z6eb`!5C8}uCQu>)2FMMN(||4k+rq-a0#;B|RK#FnVuE5gC=5WZ0=nb|(Dfey0tgg{ zuYmz~0Tg&3Ntg{KB_&}0f(#TD6@|M36jo23JONp70hBrc0tl22p1yqf@)|Gza-4I45g$8m^55K?|L?r+odSTVNnJ96LXt|7TGI4L>d~Fz z&-h8>1xd<>>vgSt=Y;X^$Jv9(As-4y`R%SPp?5wYYBW2LD^|g`7v>f>k`%^{A!C3N&EeR0q1EmI9?j zT<^fuCti3LD9UEdoCoe2BcvKUvD7KhHa~-21gL%Aj#%s&OGVR_$6iSuSoaqp%eN%J z76DWmU8pyEP^yWrwDz7wF9N262N52Jg#ie_jHv7Leqfv#&`?`&#}Fpfom5)T>7B!> zWsOHK0qlpu1b_k9E1Iu8-65F`u4B0T$PKrdAs|z3NmX=VY5BDbP=DEtvNfR%4Y5Zu z5VMpOD@qkb3GkT!aIm-Gn* z`85iZ>7zVE#RF?u>-GjXzTT2IfyTsX6XN-%yiPPHr0n_^E8Hzpe7MH(L!#e?D90zS zP^g}fN@{04Qcb!flJ%iEo~?q;Y!zl{=dXt}`IHwd0cyqO;QYY^WD0dM6YM#f=E3C+ z!2-R=&FDY;{gfv^)4f+|?c7Tj^US!+(gqX%T+i_HIx{<~voklC*uOv1|9t14Z-oeY T&y?y)kBv8+d+}zwRAUS{l0viC*3^d(P zM@Pp+TwFXtR8&-ro12?~gM)(sY5>ERFJBlQKYo1c)vH%4?%cVv2dMr$&^2EG0*D3b z5)F`Mpv^@}N=iIHn;Cxn`o-||>sPQOD=RC5n3xy?FE6j!-@kv0fSBR_{rlg6QfB}H zh*?-zSPE#X3s7USva+%yNb|F25O0DM{`>cj;p4}T48MQ>X5i!FV-OM&VgtHD66mU@ zhYufq3J^d{K&MDcN=j-0ZBPSg2Ktp@&YU@5C&R$(*|Wi}dGqEC11BdZgMxyB8qj-M zAiV$q!~_fjQJ{YfKz{!D^C#F=P`J#UI~S}8 zfuaf&+Ax2E0LTCkUbt`}!;c?7z-*8~ixw?n`0(Ka12Bd_Vj4gf@B;)8$O~{=Kr}2` znVFfv1_A>PEDqy?G=peRn1Iv*1Q5szAAz>q067ih3YcP$g5u(0a1?@K;m@Bx3?(Hc z3`|T+48XJiGUNu(o{sl7rh+t=mX?D33*v)p1Q`YjSS~IuhNn-T zg2XO>^a2DBv!|ygDBwhZSOpk3!oX-^FfuX%YX-RngdH6n!J1`cWWbt%(RT}|ehbim zQvdP)=>w?#3((86f$H}G zlk-i000O5(pyC@ZUcBH0h4`L5dm_};)zyHBi-Dh?A8ZKFU{EqPkh!I_TF$F*h9sL-j zNpc$weSXQZ6Gag%5kOy9HfA1@g zVA*&|VjFHeVhIV!`DzQM7F-a@NRTNvNlYYp4z%6NAQuJno^MeOJ!7dzy8e(=;etr6 z4q2h83Vb36o=G4!6u79$u)6u4LoN!;_)kItHmh9g5CP1HxVh+sSiS*Mlqx_uVfwL~ z+}p|}Y*;r1{g* z9DE4_W&SW~qUN5hWN@-RUJ#q3Ngxr&iJp;+4aEd;HM{A>I)B?7>yL4`Nc6h^we^ve z3YC6fwXTqAQWr8=Cd?emR={YnNptkhuSFVP{Q?6Lt^ zqF4A?)Arx1JpP&Pyh<4sUhXnam)AJ@xmkE-VuVGbg_|=vm|INb-=FD!zVlDxJ_uiv SXLQ>D0000yhD literal 0 HcmV?d00001 diff --git a/koha-tmpl/opac-tmpl/prog/images/prev-disabled.png b/koha-tmpl/opac-tmpl/prog/images/prev-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..225c9a9ab8b4827ea16bde80eeb48b562e9564ad GIT binary patch literal 862 zcmV-k1EKthP)a2goHT| zYw_^#7_hOiX@KN^{P=O>^XJbOUc7j5?aiAvCxOau01f&A(gzSgU<06<4Rv*OUBt!3 zBSb|-)wsF288|pNz=nVS{+$760K=0fPj0<>^=if4yLa~h)t?6$0uVqfAO#?sL7IU! z7bz(z@c?aR`2G7g!`H80!3MCfurL4(X5i!FQ~Ue(ZxIkP+`oVSJ5cHjKmaj|h=@o5 zC0&3TlYv;0ot>TGSXo&$K(>PdYudDF zV5k54_mAP%uU}xzFqeS512O<;AvoNChVlah5XcK)#ULA)n3x#2xVXRyL41&NK`sLY zB1jE1z`+KCya{3h1Q5szAA!!i0Sa-TOBj-qlNo?%0BiurJDHi8U_QujkOolHzI*o$ zWHu>I4WNW=~H~ zkdsA#rmF}D2nYkC37lvQ3=F^;VE)(B(_@g9mS%YR^eMyP!-sDH^=tu(p8^OV=55=y zeLi&P(0`y4f4_eH+87kiz$k?WB*-hEKm!`i@a)+$hV9$8e*p&eY@qsmz?66sAb?n) zdE&k literal 0 HcmV?d00001 diff --git a/koha-tmpl/opac-tmpl/prog/images/prev.png b/koha-tmpl/opac-tmpl/prog/images/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..15d1584bdbb2c26a9fc4c8269aa54615a58a4657 GIT binary patch literal 745 zcmV1hlor z)=Ec^h7>5J3?Bj(D6|X+0|UcQj&m*_Qg!D|-c07sd7pF6opXl(U}#WhWg0W$d_xV%ATb~UcS*dC+@kfS*m{?64KBH-eM78JQAu#&2c z7TM!?0X98;&a@msh@1ehFDx4~_smCS0rm@Z$dv@5Y^ec>Jl}_`uDh5!i#cpZh5&_) z{y|~cgJzZ1d%`?CxkdJIg%by0u(~PqB0%Zdj?maMmYO=M!=;B#0>~5_5YO>&?w*4H z@LRbi!eNPrxg`gUUIeK8JG(3%R{o~|7so$K+8_qZe0Iz($pKd%d&oOhA&AGYXkKE` zO8~w=kN^smCS05H!-WT*2mpbXAJK6B{s*`+;U?8|s%XO8{Hs1d`DH6am$(L0coEX9 z)c+Ho)WS9-4?6~g4NrO@c2FaKCYmmR!DQ~YpfIn+s8pr^?KThtmU&}3Kr*7R^y^Rk z5Xsb_*=oc3w-9KI@B4=+yK6a8uQ@#oTkf1PnlL+NjAm=Zh)+xqld|idFEF=^(avw| z4U*w)Kx6;tnV0ZXQD@SHtHr7{`Y12 bpX>Y!%!CO%>C8GV00000NkvXXu0mjfJYGkQ literal 0 HcmV?d00001 diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index d9ecdfa..1beabb1 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -950,6 +950,19 @@ if (my $search_for_title = C4::Context->preference('OPACSearchForTitleIn')){ $template->param('OPACSearchForTitleIn' => $search_for_title); } +#IDREF +if ( C4::Context->preference("IDREF") ) { + # If the record comes from the SUDOC + if ( $record->field('009') ) { + my $unimarc3 = $record->field("009")->data; + if ( $unimarc3 =~ /^\d+$/ ) { + $template->param( + IDREF => 1, + ); + } + } +} + # We try to select the best default tab to show, according to what # the user wants, and what's available for display my $opac_serial_default = C4::Context->preference('opacSerialDefaultTab'); diff --git a/opac/opac-idref.pl b/opac/opac-idref.pl new file mode 100755 index 0000000..8980a41 --- /dev/null +++ b/opac/opac-idref.pl @@ -0,0 +1,91 @@ +#!/usr/bin/perl + +use Modern::Perl; + +use CGI; +use LWP::UserAgent; +use HTTP::Request::Common; +use JSON; +use Encode; + +use C4::Auth; +use C4::Context; +use C4::Search; +use C4::Output; + +my $cgi = new CGI; +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-idref.tt", + query => $cgi, + type => "opac", + authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ), + flagsrequired => { borrow => 1 }, + } +); + +my $ua = LWP::UserAgent->new; + +my $base = 'http://www.idref.fr/services/biblio/'; +my $unimarc3 = $cgi->param('unimarc3'); + +my $request = HTTP::Request->new( + 'GET', + $base . $unimarc3 . ".json", +); +$request->protocol('HTTP/1.1'); +my $response = $ua->request($request); +if ( not $response->is_success) { + $template->param(error => $base.$unimarc3.'.json'); + output_html_with_http_headers $cgi, $cookie, $template->output; + exit; +} + +my $content = Encode::decode("utf8", $response->content); +my $json = from_json( $content ); +my $r; +my $role_name; +my @unimarc3; +my @results = ref $json->{sudoc}{result} eq "ARRAY" + ? @{ $json->{sudoc}{result} } + : ($json->{sudoc}{result}); + +for my $role_node ( @results ) { + while ( my ( $k, $v ) = each %$role_node ) { + next unless $k eq "role"; + my $role_name; + my $count = 0; + my $role_data = {}; + my @nodes = ref $v eq "ARRAY" + ? @$v + : ($v); + for my $node ( @nodes ) { + while ( ( $k, $v ) = each %$node ) { + given ( $k ) { + when ( "roleName" ) { + $role_name = $v; + $role_data->{role_name} = $role_name; + } + when ( "count" ) { + $role_data->{count} = $v; + } + when ( "doc" ) { + push @{ $role_data->{docs} }, $v; + } + default { + # unimarcCode and marc21Code + } + } + } + } + push @$r, $role_data; + } +} + +$template->param( + content => $r, + unimarc3 => $unimarc3, +); + +output_html_with_http_headers $cgi, $cookie, $template->output; + -- 1.7.10.4