Bugzilla – Attachment 185312 Details for
Bug 39589
Search returns 'No results found' despite existing matching records
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 39589: OPAC search returns 'No results found' despite existing matching records
Bug-39589-OPAC-search-returns-No-results-found-des.patch (text/plain), 40.75 KB, created by
Hammat wele
on 2025-08-12 01:00:55 UTC
(
hide
)
Description:
Bug 39589: OPAC search returns 'No results found' despite existing matching records
Filename:
MIME Type:
Creator:
Hammat wele
Created:
2025-08-12 01:00:55 UTC
Size:
40.75 KB
patch
obsolete
>From 1160f8132473f37736d998e729dbe5e26116ccfc Mon Sep 17 00:00:00 2001 >From: Hammat Wele <hammat.wele@inlibro.com> >Date: Tue, 12 Aug 2025 00:56:00 +0000 >Subject: [PATCH] Bug 39589: OPAC search returns 'No results found' despite > existing matching records > >This issue occurs when the records on the first page of results are not displayed. The message "No results found" is shown, and it is not possible to access records on other pages. > >To test > > 1. Set the following system preferences: > OPACnumSearchResults to 5 > OpacHiddenItemsHidesRecord to Hide > OpacHiddenItems to withdrawn: [1] > 2. Create 6 bibliographic records with the following titles: > "notice test 1" > "notice test 2" > "notice test 3" > "notice test 4" > "notice test 5" > "notice test 6" > 3. For the first 5 records, add an item with Withdrawn status. > 4. For "notice test 6", add an item with Available status. > 5. In the OPAC interface, search for "notice test". > 6. Apply the patch > 7. Repeat step 4 > ---> The results table is now shown with the message: "Search results on this page are not available." > ---> You can now access the second page and see "notice test 6" > >Signed-off-by: David Nind <david@davidnind.com> >--- > .../bootstrap/en/modules/opac-results.tt | 389 +++++++++--------- > opac/opac-search.pl | 4 +- > 2 files changed, 201 insertions(+), 192 deletions(-) > >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >index 131972bc3e0..65423c9ac9f 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >@@ -192,70 +192,65 @@ > <div id="floating" class="sticky"> > <div id="toolbar" class="toolbar row align-items-center"> > <div id="top-pages" class="col"> [% INCLUDE 'page-numbers.inc' %] </div> >- [% UNLESS tag %] >- <div class="sort_by col-sm-auto"> >- <label for="sort_by" class="sr-only">Sort by:</label> >- <select id="sort_by" class="resort form-select form-select-sm" name="sort_by"> >- [% INCLUDE 'resort_form.inc' %] >- </select> >- >- [% IF Koha.Preference('OPACnumSearchResultsDropdown') %] >- <label for="results_per_page">Results per page: </label> >- <select id="results_per_page" class="form-select" name="count"> >- [% IF Koha.Preference('OPACnumSearchResults') %] >- [% IF results_per_page == Koha.Preference('OPACnumSearchResults') %] >- <option value="[% Koha.Preference('OPACnumSearchResults') | html %]" selected="selected">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option> >- [% ELSE %] >- <option value="[% Koha.Preference('OPACnumSearchResults') | html %]">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option> >- [% END %] >- [% END %] >- [% IF results_per_page == '20' %]<option value="20" selected="selected">20</option>[% ELSE %]<option value="20">20</option>[% END %] >- [% IF results_per_page == '40' %]<option value="40" selected="selected">40</option>[% ELSE %]<option value="40">40</option>[% END %] >- [% IF results_per_page == '60' %]<option value="60" selected="selected">60</option>[% ELSE %]<option value="60">60</option>[% END %] >- [% IF results_per_page == '80' %]<option value="80" selected="selected">80</option>[% ELSE %]<option value="80">80</option>[% END %] >- [% IF results_per_page == '100' %]<option value="100" selected="selected">100</option>[% ELSE %]<option value="100">100</option>[% END %] >+ [% UNLESS no_result %] >+ [% UNLESS tag %] >+ <div class="sort_by col-sm-auto"> >+ <label for="sort_by" class="sr-only">Sort by:</label> >+ <select id="sort_by" class="resort form-select form-select-sm" name="sort_by"> >+ [% INCLUDE 'resort_form.inc' %] > </select> >- [% END # IF Koha.Preference('OPACnumSearchResultsDropdown') %] >- </div> >- <!-- /.sort_by --> >- <div id="sortsubmit" class="sort_by col-auto"> >- <input type="submit" class="btn btn-primary btn-sm clearfix" value="Go" /> >- </div> >- <!-- /.sort_by --> >- [% END # /UNLESS tag %] >+ >+ [% IF Koha.Preference('OPACnumSearchResultsDropdown') %] >+ <label for="results_per_page">Results per page: </label> >+ <select id="results_per_page" class="form-select" name="count"> >+ [% IF Koha.Preference('OPACnumSearchResults') %] >+ [% IF results_per_page == Koha.Preference('OPACnumSearchResults') %] >+ <option value="[% Koha.Preference('OPACnumSearchResults') | html %]" selected="selected">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option> >+ [% ELSE %] >+ <option value="[% Koha.Preference('OPACnumSearchResults') | html %]">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option> >+ [% END %] >+ [% END %] >+ [% IF results_per_page == '20' %]<option value="20" selected="selected">20</option>[% ELSE %]<option value="20">20</option>[% END %] >+ [% IF results_per_page == '40' %]<option value="40" selected="selected">40</option>[% ELSE %]<option value="40">40</option>[% END %] >+ [% IF results_per_page == '60' %]<option value="60" selected="selected">60</option>[% ELSE %]<option value="60">60</option>[% END %] >+ [% IF results_per_page == '80' %]<option value="80" selected="selected">80</option>[% ELSE %]<option value="80">80</option>[% END %] >+ [% IF results_per_page == '100' %]<option value="100" selected="selected">100</option>[% ELSE %]<option value="100">100</option>[% END %] >+ </select> >+ [% END # IF Koha.Preference('OPACnumSearchResultsDropdown') %] >+ </div> >+ <!-- /.sort_by --> >+ <div id="sortsubmit" class="sort_by col-auto"> >+ <input type="submit" class="btn btn-primary btn-sm clearfix" value="Go" /> >+ </div> >+ <!-- /.sort_by --> >+ [% END # /UNLESS tag %] >+ [% END %] > </div> > <!-- / #toolbar --> > > [% INCLUDE 'result-batch-controls.inc' results=1 %] >+ [% IF no_result %] >+ <p>Search results on this page are not available.</p> >+ [% END %] > </div> > <!-- /#floating --> > >- <!-- TABLE RESULTS START --> >- <table class="table table-striped" role="presentation"> >- <span class="sr-only">Results</span> >- >- <!-- Actual Search Results --> >- [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >- <tr> >- [%# Cell 1: Checkbox %] >- [% IF ( SEARCH_RESULT.title ) %] >- [% check_title = SEARCH_RESULT.title %] >- [% ELSE %] >- [% check_title = SEARCH_RESULT.biblionumber %] >- [% END %] >- <td class="selectcol"> >- [% IF Koha.Preference( 'opacbookbag' ) == 1 %] >- <input >- type="checkbox" >- class="cb" >- id="bib[% SEARCH_RESULT.biblionumber | html %]" >- name="biblionumber" >- value="[% SEARCH_RESULT.biblionumber | html %]" >- aria-label="Select search result: [% check_title | html %]" >- /> >- <label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label> >+ [% UNLESS no_result %] >+ <!-- TABLE RESULTS START --> >+ <table class="table table-striped" role="presentation"> >+ <span class="sr-only">Results</span> >+ >+ <!-- Actual Search Results --> >+ [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] >+ <tr> >+ [%# Cell 1: Checkbox %] >+ [% IF ( SEARCH_RESULT.title ) %] >+ [% check_title = SEARCH_RESULT.title %] > [% ELSE %] >- [% IF Koha.Preference( 'virtualshelves' ) == 1 %] >+ [% check_title = SEARCH_RESULT.biblionumber %] >+ [% END %] >+ <td class="selectcol"> >+ [% IF Koha.Preference( 'opacbookbag' ) == 1 %] > <input > type="checkbox" > class="cb" >@@ -266,158 +261,170 @@ > /> > <label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label> > [% ELSE %] >- [% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %] >- [% UNLESS ( SEARCH_RESULT.norequests ) %] >- [% IF Koha.Preference( 'opacuserlogin' ) == 1 %] >- <input >- type="checkbox" >- class="cb" >- id="bib[% SEARCH_RESULT.biblionumber | html %]" >- name="biblionumber" >- value="[% SEARCH_RESULT.biblionumber | html %]" >- aria-label="Select search result: [% check_title | html %]" >- /> >- <label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label> >+ [% IF Koha.Preference( 'virtualshelves' ) == 1 %] >+ <input >+ type="checkbox" >+ class="cb" >+ id="bib[% SEARCH_RESULT.biblionumber | html %]" >+ name="biblionumber" >+ value="[% SEARCH_RESULT.biblionumber | html %]" >+ aria-label="Select search result: [% check_title | html %]" >+ /> >+ <label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label> >+ [% ELSE %] >+ [% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %] >+ [% UNLESS ( SEARCH_RESULT.norequests ) %] >+ [% IF Koha.Preference( 'opacuserlogin' ) == 1 %] >+ <input >+ type="checkbox" >+ class="cb" >+ id="bib[% SEARCH_RESULT.biblionumber | html %]" >+ name="biblionumber" >+ value="[% SEARCH_RESULT.biblionumber | html %]" >+ aria-label="Select search result: [% check_title | html %]" >+ /> >+ <label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label> >+ [% END %] > [% END %] >- [% END %] >- [% END # IF OPACHoldRequests %] >- [% END # IF virtualshelves %] >- [% END # IF opacbookbag %] >- </td> >- >- [%# Cell 2: Show result number if OpacHiddenItems is empty %] >- <td class="numcol[%- IF suppress_result_number -%]hidden[%- END -%]"> >- [% UNLESS suppress_result_number %] >- [% SEARCH_RESULT.result_number | html %]. >- [% END %] >- </td> >+ [% END # IF OPACHoldRequests %] >+ [% END # IF virtualshelves %] >+ [% END # IF opacbookbag %] >+ </td> > >- [% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) && !Koha.Preference('OpacNoItemTypeImages') %] >- [%# Cell 3: Show item type image %] >- <td class="itypecol"> >- [% IF ( SEARCH_RESULT.imageurl ) %] >- <img class="itemtype-image" src="[% SEARCH_RESULT.imageurl | html %]" title="[% SEARCH_RESULT.description | html %]" alt="[% SEARCH_RESULT.description | html %]" /> >- [% END %] >- [% IF ( SEARCH_RESULT.score_avg ) %] >- <img src="[% themelang | html %]/../images/bonus.png" title="bonus" style="max-height: 35px;" /> >+ [%# Cell 2: Show result number if OpacHiddenItems is empty %] >+ <td class="numcol[%- IF suppress_result_number -%]hidden[%- END -%]"> >+ [% UNLESS suppress_result_number %] >+ [% SEARCH_RESULT.result_number | html %]. > [% END %] > </td> >- [% END %] >- [% IF ( CoverImages) %] >- <td class="covercol"> [% INCLUDE 'cover-images.inc' %] </td> >- [% END %] >- [%# Cell 4: Search result details and controls %] >- <td class="bibliocol"> >- [% IF ( COinSinOPACResults && SEARCH_RESULT.coins ) %] >- <!-- COinS / Openurl --> >- <span class="Z3988" title="[% SEARCH_RESULT.coins | html %]"></span> >+ >+ [% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) && !Koha.Preference('OpacNoItemTypeImages') %] >+ [%# Cell 3: Show item type image %] >+ <td class="itypecol"> >+ [% IF ( SEARCH_RESULT.imageurl ) %] >+ <img class="itemtype-image" src="[% SEARCH_RESULT.imageurl | html %]" title="[% SEARCH_RESULT.description | html %]" alt="[% SEARCH_RESULT.description | html %]" /> >+ [% END %] >+ [% IF ( SEARCH_RESULT.score_avg ) %] >+ <img src="[% themelang | html %]/../images/bonus.png" title="bonus" style="max-height: 35px;" /> >+ [% END %] >+ </td> > [% END %] >- <div id="title_summary_[% SEARCH_RESULT.biblionumber | html %]" class="title_summary"> >- [% SEARCH_RESULT.XSLTResultsRecord | $raw %] >- >- [% IF ( SEARCH_RESULT.score_avg ) %] >- <div class="results_summary"> >- [% FOREACH i IN [ 1 2 3 4 5 ] %] >- [% IF ( SEARCH_RESULT.score_int >= i ) %] >- <div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly star-rating-on"><a title="[% i | html %]">[% i | html %]</a></div> >- [% ELSE %] >- <div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly"><a title="[% i | html %]">[% i | html %]</a></div> >+ [% IF ( CoverImages) %] >+ <td class="covercol"> [% INCLUDE 'cover-images.inc' %] </td> >+ [% END %] >+ [%# Cell 4: Search result details and controls %] >+ <td class="bibliocol"> >+ [% IF ( COinSinOPACResults && SEARCH_RESULT.coins ) %] >+ <!-- COinS / Openurl --> >+ <span class="Z3988" title="[% SEARCH_RESULT.coins | html %]"></span> >+ [% END %] >+ <div id="title_summary_[% SEARCH_RESULT.biblionumber | html %]" class="title_summary"> >+ [% SEARCH_RESULT.XSLTResultsRecord | $raw %] >+ >+ [% IF ( SEARCH_RESULT.score_avg ) %] >+ <div class="results_summary"> >+ [% FOREACH i IN [ 1 2 3 4 5 ] %] >+ [% IF ( SEARCH_RESULT.score_int >= i ) %] >+ <div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly star-rating-on"><a title="[% i | html %]">[% i | html %]</a></div> >+ [% ELSE %] >+ <div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly"><a title="[% i | html %]">[% i | html %]</a></div> >+ [% END %] > [% END %] >- [% END %] >- <span id="babeltheque-rating_total_[% SEARCH_RESULT.biblionumber | html %]" >- > [% SEARCH_RESULT.score_avg | html %] / 5 (on [% SEARCH_RESULT.num_scores | html %] rates)</span >- > >+ <span id="babeltheque-rating_total_[% SEARCH_RESULT.biblionumber | html %]" >+ > [% SEARCH_RESULT.score_avg | html %] / 5 (on [% SEARCH_RESULT.num_scores | html %] rates)</span >+ > > >- [% IF ( SEARCH_RESULT.num_critics ) %] >- <span class="social_data">[% SEARCH_RESULT.num_critics | html %] Internet user critics</span> >- [% END %] >- [% IF ( SEARCH_RESULT.num_critics_pro ) %] >- <span class="social_data">[% SEARCH_RESULT.num_critics_pro | html %] Professional critics</span> >- [% END %] >- [% IF ( SEARCH_RESULT.num_videos ) %] >- <span class="social_data">[% SEARCH_RESULT.num_videos | html %] Video extracts</span> >- [% END %] >- [% IF ( SEARCH_RESULT.num_quotations ) %] >- <span class="social_data">[% SEARCH_RESULT.num_quotations | html %] Quotations</span> >- [% END %] >- </div> >- <!-- / .results_summary --> >- [% END # / IF SEARCH_RESULT.score_avg %] >+ [% IF ( SEARCH_RESULT.num_critics ) %] >+ <span class="social_data">[% SEARCH_RESULT.num_critics | html %] Internet user critics</span> >+ [% END %] >+ [% IF ( SEARCH_RESULT.num_critics_pro ) %] >+ <span class="social_data">[% SEARCH_RESULT.num_critics_pro | html %] Professional critics</span> >+ [% END %] >+ [% IF ( SEARCH_RESULT.num_videos ) %] >+ <span class="social_data">[% SEARCH_RESULT.num_videos | html %] Video extracts</span> >+ [% END %] >+ [% IF ( SEARCH_RESULT.num_quotations ) %] >+ <span class="social_data">[% SEARCH_RESULT.num_quotations | html %] Quotations</span> >+ [% END %] >+ </div> >+ <!-- / .results_summary --> >+ [% END # / IF SEARCH_RESULT.score_avg %] > >- [% IF ( LibraryThingForLibrariesID ) %] >- <div class="ltfl_reviews"></div> >- [% END %] >+ [% IF ( LibraryThingForLibrariesID ) %] >+ <div class="ltfl_reviews"></div> >+ [% END %] > >- [% IF ( TagsShowEnabled && SEARCH_RESULT.TagLoop.size ) %] >- <div class="results_summary tags"> >- <span class="label">Tags:</span> >- <ul> >- [% FOREACH TagLoo IN SEARCH_RESULT.TagLoop %] >- <li> >- <a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term | uri %]&q=[% TagLoo.term | uri %]">[% TagLoo.term | html %]</a> >- <span class="weight">([% TagLoo.weight_total | html %])</span> >- </li> >- [% END %] >- </ul> >- </div> >- [% END %] >+ [% IF ( TagsShowEnabled && SEARCH_RESULT.TagLoop.size ) %] >+ <div class="results_summary tags"> >+ <span class="label">Tags:</span> >+ <ul> >+ [% FOREACH TagLoo IN SEARCH_RESULT.TagLoop %] >+ <li> >+ <a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term | uri %]&q=[% TagLoo.term | uri %]">[% TagLoo.term | html %]</a> >+ <span class="weight">([% TagLoo.weight_total | html %])</span> >+ </li> >+ [% END %] >+ </ul> >+ </div> >+ [% END %] > >- [% IF Koha.Preference('virtualshelves') AND SEARCH_RESULT.shelves.count %] >- <div class="results_summary shelves"> >- <span class="label">Lists:</span> >- <ul> >- [% FOREACH shelf IN SEARCH_RESULT.shelves %] >- <li> >- <a href="/cgi-bin/koha/opac-shelves.pl?op=view&shelfnumber=[% shelf.shelfnumber | uri %]">[% shelf.shelfname | html %]</a> >- [%~ UNLESS loop.last %],[% ELSE %].[% END ~%] >- </li> >- [% END %] >- </ul> >- </div> >- [% END %] >+ [% IF Koha.Preference('virtualshelves') AND SEARCH_RESULT.shelves.count %] >+ <div class="results_summary shelves"> >+ <span class="label">Lists:</span> >+ <ul> >+ [% FOREACH shelf IN SEARCH_RESULT.shelves %] >+ <li> >+ <a href="/cgi-bin/koha/opac-shelves.pl?op=view&shelfnumber=[% shelf.shelfnumber | uri %]">[% shelf.shelfname | html %]</a> >+ [%~ UNLESS loop.last %],[% ELSE %].[% END ~%] >+ </li> >+ [% END %] >+ </ul> >+ </div> >+ [% END %] > >- [% IF ( SEARCH_RESULT.searchhighlightblob ) %] >- <span class="results_summary"> >- <span class="label">Match:</span> >- [% SEARCH_RESULT.searchhighlightblob | html %] >- </span> >- [% END %] >+ [% IF ( SEARCH_RESULT.searchhighlightblob ) %] >+ <span class="results_summary"> >+ <span class="label">Match:</span> >+ [% SEARCH_RESULT.searchhighlightblob | html %] >+ </span> >+ [% END %] > >- [% INCLUDE "openlibrary-readapi.inc" bib = SEARCH_RESULT %] >- >- [% IF ( OpacStarRatings == 'all' ) %] >- <div class="results_summary ratings"> >- [% SET rating_avg = SEARCH_RESULT.ratings.get_avg_rating() %] >- [% rating_avg_int = BLOCK %][% rating_avg | format("%.0f") %][% END %] >- <div class="br-wrapper br-theme-fontawesome-stars"> >- <div class="br-widget br-readonly"> >- [% FOREACH i IN [ 1 2 3 4 5 ] %] >- [% IF rating_avg_int == i %] >- <a href="#" class="br-selected br-current"></a> >- [% ELSIF rating_avg_int > i %] >- <a href="#" class="br-selected"></a> >- [% ELSE %] >- <a href="#"></a> >+ [% INCLUDE "openlibrary-readapi.inc" bib = SEARCH_RESULT %] >+ >+ [% IF ( OpacStarRatings == 'all' ) %] >+ <div class="results_summary ratings"> >+ [% SET rating_avg = SEARCH_RESULT.ratings.get_avg_rating() %] >+ [% rating_avg_int = BLOCK %][% rating_avg | format("%.0f") %][% END %] >+ <div class="br-wrapper br-theme-fontawesome-stars"> >+ <div class="br-widget br-readonly"> >+ [% FOREACH i IN [ 1 2 3 4 5 ] %] >+ [% IF rating_avg_int == i %] >+ <a href="#" class="br-selected br-current"></a> >+ [% ELSIF rating_avg_int > i %] >+ <a href="#" class="br-selected"></a> >+ [% ELSE %] >+ <a href="#"></a> >+ [% END %] > [% END %] >- [% END %] >+ </div> > </div> >- </div> > >- [% IF SEARCH_RESULT.ratings.count > 0 %] >- <span id="rating_total_[% SEARCH_RESULT.biblionumber | html %]"> ([% SEARCH_RESULT.ratings.count | html %] votes)</span> >- [% ELSE %] >- <br /> >- [% END %] >- </div> >- <!-- / .results_summary --> >- [% END # / IF OpacStarRatings %] >+ [% IF SEARCH_RESULT.ratings.count > 0 %] >+ <span id="rating_total_[% SEARCH_RESULT.biblionumber | html %]"> ([% SEARCH_RESULT.ratings.count | html %] votes)</span> >+ [% ELSE %] >+ <br /> >+ [% END %] >+ </div> >+ <!-- / .results_summary --> >+ [% END # / IF OpacStarRatings %] > >- [% INCLUDE 'title-actions-menu.inc' items=SEARCH_RESULT %] >- </div> >- </td> >- </tr> >- [% END # / FOREACH SEARCH_RESULT %] >- </table> >+ [% INCLUDE 'title-actions-menu.inc' items=SEARCH_RESULT %] >+ </div> >+ </td> >+ </tr> >+ [% END # / FOREACH SEARCH_RESULT %] >+ </table> >+ [% END %] > </form> > <!-- / #bookbag_form --> > >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 200df0beac4..1aa8aa06179 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -669,7 +669,9 @@ for ( my $i = 0 ; $i < @servers ; $i++ ) { > $search_context, $query_desc, $hits, $results_per_page, $offset, $scan, > $results_hashref->{$server}->{"RECORDS"}, $variables > ); >- $hits = 0 unless @newresults; >+ unless (@newresults) { >+ $template->param( no_result => 1 ); >+ } > > my $art_req_itypes; > if ( C4::Context->preference('ArticleRequests') ) { >-- >2.34.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 39589
:
180737
|
180738
|
182240
|
182958
| 185312