Bugzilla – Attachment 3194 Details for
Bug 5791
Robust handling of deleted biblios/authorities
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Initial patch
0001-Bug-5791-Robust-handling-of-deleted-biblios-authorit.patch (text/plain), 14.27 KB, created by
Tomás Cohen Arazi (tcohen)
on 2011-02-22 19:50:45 UTC
(
hide
)
Description:
Initial patch
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2011-02-22 19:50:45 UTC
Size:
14.27 KB
patch
obsolete
>From 6b23243360cfb1fb28aff82e06d035ebfbacb993 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@gmail.com> >Date: Tue, 22 Feb 2011 16:46:46 -0300 >Subject: [PATCH] [Bug 5791] Robust handling of deleted biblios/authorities >Content-Type: text/plain; charset="utf-8" > >--- > authorities/detail.pl | 110 +++++++++++--------- > catalogue/detail.pl | 21 +++-- > .../prog/en/modules/authorities/detail.tmpl | 98 +++++++++--------- > .../prog/en/modules/catalogue/detail.tmpl | 11 ++- > 4 files changed, 131 insertions(+), 109 deletions(-) > >diff --git a/authorities/detail.pl b/authorities/detail.pl >index f92e04b..9849f31 100755 >--- a/authorities/detail.pl >+++ b/authorities/detail.pl >@@ -175,53 +175,65 @@ my $authid = $query->param('authid'); > > > my $authtypecode = &GetAuthTypeCode($authid); >-$tagslib = &GetTagsLabels(1,$authtypecode); >- >-my $record; >-if (C4::Context->preference("AuthDisplayHierarchy")){ >- my $trees=BuildUnimarcHierarchies($authid); >- my @trees = split /;/,$trees ; >- push @trees,$trees unless (@trees); >- my @loophierarchies; >- foreach my $tree (@trees){ >- my @tree=split /,/,$tree; >- push @tree,$tree unless (@tree); >- my $cnt=0; >- my @loophierarchy; >- foreach my $element (@tree){ >- my $elementdata = GetAuthority($element); >- $record= $elementdata if ($authid==$element); >- push @loophierarchy, BuildUnimarcHierarchy($elementdata,"child".$cnt, $authid); >- $cnt++; >- } >- push @loophierarchies, { 'loopelement' =>\@loophierarchy}; >- } >- $template->param( >- 'displayhierarchy' =>C4::Context->preference("AuthDisplayHierarchy"), >- 'loophierarchies' =>\@loophierarchies, >- ); >-} else { >- $record=GetAuthority($authid); >-} >-my $count = CountUsage($authid); >- >-# find the marc field/subfield used in biblio by this authority >-my $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); >-$sth->execute($authtypecode); >-my $biblio_fields; >-while (my ($tagfield) = $sth->fetchrow) { >- $biblio_fields.= $tagfield."9,"; >-} >-chop $biblio_fields; > >+if ( defined $authtypecode ) { >+ # authid is valid >+ $tagslib = &GetTagsLabels(1,$authtypecode); >+ >+ my $record; >+ if (C4::Context->preference("AuthDisplayHierarchy")){ >+ my $trees=BuildUnimarcHierarchies($authid); >+ my @trees = split /;/,$trees ; >+ push @trees,$trees unless (@trees); >+ my @loophierarchies; >+ foreach my $tree (@trees){ >+ my @tree=split /,/,$tree; >+ push @tree,$tree unless (@tree); >+ my $cnt=0; >+ my @loophierarchy; >+ foreach my $element (@tree){ >+ my $elementdata = GetAuthority($element); >+ $record= $elementdata if ($authid==$element); >+ push @loophierarchy, BuildUnimarcHierarchy($elementdata,"child".$cnt, $authid); >+ $cnt++; >+ } >+ push @loophierarchies, { 'loopelement' =>\@loophierarchy}; >+ } >+ $template->param( >+ 'displayhierarchy' =>C4::Context->preference("AuthDisplayHierarchy"), >+ 'loophierarchies' =>\@loophierarchies, >+ ); >+ } else { >+ $record=GetAuthority($authid); >+ } >+ >+ my $count = CountUsage($authid); >+ >+ # find the marc field/subfield used in biblio by this authority >+ my $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); >+ $sth->execute($authtypecode); >+ my $biblio_fields; >+ while (my ($tagfield) = $sth->fetchrow) { >+ $biblio_fields.= $tagfield."9,"; >+ } >+ chop $biblio_fields; >+ >+ # loop through each tab 0 through 9 >+ # for (my $tabloop = 0; $tabloop<=10;$tabloop++) { >+ # loop through each tag >+ build_tabs ($template, $record, $dbh,"",$query); >+ >+ $template->param(authid => $authid, >+ count => $count, >+ biblio_fields => $biblio_fields, >+ ); > >-# fill arrays >-my @loop_data =(); >-my $tag; >-# loop through each tab 0 through 9 >-# for (my $tabloop = 0; $tabloop<=10;$tabloop++) { >-# loop through each tag >- build_tabs ($template, $record, $dbh,"",$query); >+} else { >+ # authid invalid >+ # set default $authtypecode >+ $authtypecode = ''; >+ $template->param ( errauthid => $authid,unknownauthid => 1 ); >+} > > my $authtypes = getauthtypes; > my @authtypesloop; >@@ -233,11 +245,9 @@ foreach my $thisauthtype (sort { $authtypes->{$b} cmp $authtypes->{$a} } keys %$ > push @authtypesloop, \%row; > } > >-$template->param(authid => $authid, >- count => $count, >- biblio_fields => $biblio_fields, >+$template->param ( > authtypetext => $authtypes->{$authtypecode}{'authtypetext'}, > authtypesloop => \@authtypesloop, >- ); >-output_html_with_http_headers $query, $cookie, $template->output; >+); > >+output_html_with_http_headers $query, $cookie, $template->output; >\ No newline at end of file >diff --git a/catalogue/detail.pl b/catalogue/detail.pl >index 6ee79e6..6682482 100755 >--- a/catalogue/detail.pl >+++ b/catalogue/detail.pl >@@ -52,11 +52,21 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > ); > > my $biblionumber = $query->param('biblionumber'); >-my $fw = GetFrameworkCode($biblionumber); > > ## get notes and subjects from MARC record >-my $marcflavour = C4::Context->preference("marcflavour"); >-my $record = GetMarcBiblio($biblionumber); >+my $record = GetMarcBiblio($biblionumber); >+ >+if ( not defined $record ) { >+ # biblionumber invalid -> report and exit >+ $template->param( unknownbiblionumber => 1, >+ biblionumber => $biblionumber >+ ); >+ output_html_with_http_headers $query, $cookie, $template->output; >+ exit; >+} >+ >+my $fw = GetFrameworkCode($biblionumber); >+my $marcflavour = C4::Context->preference("marcflavour"); > > # XSLT processing of some stuff > if (C4::Context->preference("XSLTDetailsDisplay") ) { >@@ -81,11 +91,6 @@ $template->param( > normalized_isbn => $isbn, > ); > >-unless (defined($record)) { >- print $query->redirect("/cgi-bin/koha/errors/404.pl"); >- exit; >-} >- > my $marcnotesarray = GetMarcNotes( $record, $marcflavour ); > my $marcisbnsarray = GetMarcISBN( $record, $marcflavour ); > my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour ); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/detail.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/detail.tmpl >index 417581c..c51e697 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/detail.tmpl >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/detail.tmpl >@@ -1,5 +1,5 @@ > <!-- TMPL_INCLUDE NAME="doc-head-open.inc" --> >-<title>Koha › Authorities › Details for Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->)</title> >+<title>Koha › Authorities › <!-- TMPL_IF NAME="unknownauthid" --> Unknown authority<!-- TMPL_ELSE -->Details for Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->)<!-- /TMPL_IF --></title> > <!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> > <script type="text/javascript"> > >@@ -62,7 +62,7 @@ function searchauthority() { > <body> > <!-- TMPL_INCLUDE NAME="header.inc" --> > <!-- TMPL_INCLUDE NAME="authorities-search.inc" --> >-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/authorities/authorities-home.pl">Authorities</a> › Details for Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->) </div> >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/authorities/authorities-home.pl">Authorities</a> › <!-- TMPL_IF NAME="unknownauthid" --> Unknown authority<!-- TMPL_ELSE--> Details for Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->)<!-- /TMPL_IF --></div> > > <div id="doc" class="yui-t7"> > >@@ -103,55 +103,57 @@ function searchauthority() { > </div> > <!-- /TMPL_IF --> > >-<h1>Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->)</h1> >+<!-- TMPL_IF NAME="unknownauthid" --> >+ <div class="dialog message">The authority you requested does not exist (<!-- TMPL_VAR NAME="errauthid" -->).</div> >+<!-- TMPL_ELSE --> > >-<div id="action"> >- >- >- Used in <a href="/cgi-bin/koha/catalogue/search.pl?type=intranet&op=do_search&q=an=<!--TMPL_VAR Name="authid" -->"><!-- TMPL_VAR name="count" --> record(s)</a> >-</div> >+ <h1>Authority #<!-- TMPL_VAR NAME="authid" --> (<!-- TMPL_VAR name="authtypetext" -->)</h1> >+ <div id="action"> >+ Used in <a href="/cgi-bin/koha/catalogue/search.pl?type=intranet&op=do_search&q=an=<!--TMPL_VAR Name="authid" -->"><!-- TMPL_VAR name="count" --> record(s)</a> >+ </div> > >-<div id="authoritiestabs" class="toptabs numbered"> >- <ul> >- <!-- TMPL_LOOP name="BIG_LOOP" --> >- <li> >- <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab<!-- TMPL_VAR name="number" -->XX"><!-- TMPL_VAR name="number"--></a> >- </li> >- <!-- /TMPL_LOOP --> >- </ul> >+ <div id="authoritiestabs" class="toptabs numbered"> >+ <ul> >+ <!-- TMPL_LOOP name="BIG_LOOP" --> >+ <li> >+ <a href="/cgi-bin/koha/cataloguing/addbiblio.pl#tab<!-- TMPL_VAR name="number" -->XX"><!-- TMPL_VAR name="number"--></a> >+ </li> >+ <!-- /TMPL_LOOP --> >+ </ul> > >-<!-- TMPL_LOOP name="BIG_LOOP" --> >- <div id="tab<!-- TMPL_VAR name="number" -->XX"> >- <!-- TMPL_LOOP NAME="innerloop" --> >- <!-- TMPL_IF name="tag" --> >- <div class="tag"> >- <div class="tag_title"> >- <!-- TMPL_VAR NAME="tag" --> >- </div> >- <!-- TMPL_ELSE --> >- <div class="tag"> >- <!-- /TMPL_IF --> >- <!-- TMPL_LOOP NAME="subfield" --> >- <p> >- <label class="labelsubfield"> >- <!-- TMPL_UNLESS name="hide_marc" --><b><!-- TMPL_VAR NAME="marc_subfield" --></b><!-- /TMPL_UNLESS --> >- <span title="<!-- TMPL_VAR name="long_desc" -->"><!-- TMPL_VAR NAME="short_desc" --></span></label> >- <!-- TMPL_VAR NAME="marc_value" --> >- <!-- TMPL_IF name="link" --> >- <a href="/cgi-bin/koha/catalogue/search.pl?op=do_search&marclist=<!-- TMPL_VAR NAME="link" -->&operator==&type=intranet&value=<!-- TMPL_VAR NAME="marc_value" ESCAPE="URL" -->"> >- <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->"> >- </a> >- <!-- /TMPL_IF --> >- <!-- TMPL_IF NAME="authority" --> >- <a href="/cgi-bin/koha/authorities/detail.pl?authid=<!-- TMPL_VAR name="authority" -->" class="button">Auth</a> >- <!-- /TMPL_IF --> >- </p> >- <!-- /TMPL_LOOP --> >- </div> >- <!-- /TMPL_LOOP --> >- </div> >-<!-- /TMPL_LOOP --> >-</div> >+ <!-- TMPL_LOOP name="BIG_LOOP" --> >+ <div id="tab<!-- TMPL_VAR name="number" -->XX"> >+ <!-- TMPL_LOOP NAME="innerloop" --> >+ <!-- TMPL_IF name="tag" --> >+ <div class="tag"> >+ <div class="tag_title"> >+ <!-- TMPL_VAR NAME="tag" --> >+ </div> >+ <!-- TMPL_ELSE --> >+ <div class="tag"> >+ <!-- /TMPL_IF --> >+ <!-- TMPL_LOOP NAME="subfield" --> >+ <p> >+ <label class="labelsubfield"> >+ <!-- TMPL_UNLESS name="hide_marc" --><b><!-- TMPL_VAR NAME="marc_subfield" --></b><!-- /TMPL_UNLESS --> >+ <span title="<!-- TMPL_VAR name="long_desc" -->"><!-- TMPL_VAR NAME="short_desc" --></span></label> >+ <!-- TMPL_VAR NAME="marc_value" --> >+ <!-- TMPL_IF name="link" --> >+ <a href="/cgi-bin/koha/catalogue/search.pl?op=do_search&marclist=<!-- TMPL_VAR NAME="link" -->&operator==&type=intranet&value=<!-- TMPL_VAR NAME="marc_value" ESCAPE="URL" -->"> >+ <img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" title="Search on <!-- TMPL_VAR name="marc_value" -->"> >+ </a> >+ <!-- /TMPL_IF --> >+ <!-- TMPL_IF NAME="authority" --> >+ <a href="/cgi-bin/koha/authorities/detail.pl?authid=<!-- TMPL_VAR name="authority" -->" class="button">Auth</a> >+ <!-- /TMPL_IF --> >+ </p> >+ <!-- /TMPL_LOOP --> >+ </div> >+ <!-- /TMPL_LOOP --> >+ </div> >+ <!-- /TMPL_LOOP --> >+ </div> >+<!-- /TMPL_IF --> > </div> > </div> > </div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl >index 8f53e80..dfe483b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl >@@ -1,5 +1,5 @@ > <!-- TMPL_INCLUDE NAME="doc-head-open.inc" --> >-<title>Koha › Catalog › Details for <!-- TMPL_VAR NAME="title" escape="html" --> <!-- TMPL_LOOP NAME="subtitle" --> <!-- TMPL_VAR NAME="subfield" --><!-- /TMPL_LOOP --></title> >+<title>Koha › Catalog › <!-- TMPL_IF NAME="unknownbiblionumber" -->Unknown biblio<!-- TMPL_ELSE -->Details for <!-- TMPL_VAR NAME="title" escape="html" --> <!-- TMPL_LOOP NAME="subtitle" --> <!-- TMPL_VAR NAME="subfield" --><!-- /TMPL_LOOP --><!-- /TMPL_IF --></title> > <!-- TMPL_INCLUDE NAME="doc-head-close.inc" --><script type="text/JavaScript" language="JavaScript"> > //<![CDATA[ > // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html >@@ -44,10 +44,14 @@ function verify_images() { > <!-- TMPL_INCLUDE NAME="header.inc" --> > <!-- TMPL_INCLUDE NAME="cat-search.inc" --> > >-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> › Details for <i><!-- TMPL_VAR NAME="title" escape="html" --> <!-- TMPL_LOOP NAME="subtitle" --> <!-- TMPL_VAR NAME="subfield" --><!-- /TMPL_LOOP --></i></div> >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> › <!-- TMPL_IF NAME="unknownbiblionumber" -->Unknown biblio<!-- TMPL_ELSE --> Details for <i><!-- TMPL_VAR NAME="title" escape="html" --> <!-- TMPL_LOOP NAME="subtitle" --> <!-- TMPL_VAR NAME="subfield" --><!-- /TMPL_LOOP --><!-- /TMPL_IF --></i></div> > > <div id="doc3" class="yui-t2"> >- >+ >+<!-- TMPL_IF NAME="unknownbiblionumber" --> >+ <div class="dialog message">The biblio you requested does not exist (<!-- TMPL_VAR NAME="biblionumber" -->).</div> >+<!-- TMPL_ELSE --> >+ > <div id="bd"> > <div id="yui-main"> > <div class="yui-b"> >@@ -506,5 +510,6 @@ function verify_images() { > <div class="yui-b"> > <!-- TMPL_INCLUDE NAME="biblio-view-menu.inc" --> > </div> >+<!-- /TMPL_IF --> > </div> > <!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> >-- >1.7.1 >
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 5791
:
3194
|
3272
|
3273
|
3844
|
3905
|
3938