Bugzilla – Attachment 139893 Details for
Bug 20447
Add support for MARC holdings records
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20447: (QA follow-up) addholding.tt rebase compatibility fixes
Bug-20447-QA-follow-up-addholdingtt-rebase-compati.patch (text/plain), 39.52 KB, created by
Andrii Nugged
on 2022-08-27 22:22:14 UTC
(
hide
)
Description:
Bug 20447: (QA follow-up) addholding.tt rebase compatibility fixes
Filename:
MIME Type:
Creator:
Andrii Nugged
Created:
2022-08-27 22:22:14 UTC
Size:
39.52 KB
patch
obsolete
>From b4066b480f9671e686153c309227e03c9c50e559 Mon Sep 17 00:00:00 2001 >From: Andrew Nugged <nugged@gmail.com> >Date: Sun, 22 May 2022 21:32:36 +0300 >Subject: [PATCH] Bug 20447: (QA follow-up) addholding.tt rebase compatibility > fixes > >--- > .../prog/en/modules/cataloguing/addholding.tt | 441 ++++++++++++------ > 1 file changed, 300 insertions(+), 141 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addholding.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addholding.tt >index 278082107b..15008c6117 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addholding.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addholding.tt >@@ -4,20 +4,24 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Cataloging › [% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %]) › Holdings</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'calendar.inc' %] > [% Asset.js("lib/hc-sticky.js") | $raw %] >+[% INCLUDE 'select2.inc' %] >+<script> >+ [% IF Koha.Preference('CreateAVFromCataloguing') && CAN_user_parameters_manage_auth_values %] >+ var auth_values_creation = 1; >+ [% ELSE %] >+ var auth_values_creation = 0; >+ [% END %] >+ $.fn.select2.defaults.set("width", "100%" ); >+</script> > [% Asset.js("js/cataloging.js") | $raw %] > [% Asset.js("js/browser.js") | $raw %] >-[% Asset.css("css/addholding.css") | $raw %] >-[% INCLUDE 'select2.inc' %] >-</head> >- >-<body id="cat_addholding" class="cat"> >- > <script> > var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10)); > browser.show(); > >- $(window).load(function() { >+ $(window).load(function(){ > $("#loading").hide(); > }); > var Sticky; >@@ -39,7 +43,6 @@ > selectTab( link ); > [% END %] > >- > Sticky = $("#toolbar"); > Sticky.hcSticky({ > stickTo: "#f", >@@ -83,6 +86,14 @@ > } > }); > >+ $("#z3950search").click(function(){ >+ PopupZ3950(); >+ }); >+ >+ $("#linkerbutton").click(function(){ >+ AutomaticLinker(); >+ }); >+ > $("#saverecord").click(function(){ > $(".btn-group").removeClass("open"); > onOption(); >@@ -110,12 +121,14 @@ > }); > > $( '#switcheditor' ).click( function() { >+ var breedingid = [% breedingid || "null" | html %]; >+ >+ if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false; > >- if ( !confirm( _("Any changes will not be saved. Continue?") ) ) return false; >+ Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/', sameSite: 'Lax' } ); > >- Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } ); >+ var holding_id = [% holding_id || "null" | html %]; > >- var holding_id = [% holding_id || "''" | html %]; > window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber + '/holdings/' + holding_id; > > return false; >@@ -133,14 +146,24 @@ > > $(".tag_anchor").on("click", function(e){ > e.preventDefault(); >- var toolbar_height = $("#toolbar").outerHeight(); > $(".tag_anchor").removeClass("selected"); > $(this).addClass("selected"); > var link = this.href; > var linkid = link.substring( link.indexOf("#") + 1 ); >- var dest = $("#" + linkid ); >- var yoffset = dest.offset(); >- window.scrollTo( 0, yoffset.top - toolbar_height - 20 ); >+ window.scrollTo( 0, getScrollto( linkid, "toolbar" ) ); >+ }); >+ >+ $("body").on("click", ".linkfield", function(e){ >+ e.preventDefault(); >+ var tab = $(this).data("tab"); >+ var field = $(this).data("field"); >+ var tablink = $("a[data-tabid='" + tab + "']" ); >+ selectTab( tablink ); >+ window.scrollTo( 0, getScrollto( field, "toolbar" ) ); >+ }); >+ >+ $("body").on("click", ".show-errors", function(e){ >+ document.getElementById("form-errors").scrollIntoView(); > }); > > }); >@@ -154,6 +177,26 @@ > $(".tag_anchors_" + tabid ).addClass("tab_selected").show(); > } > >+ /** >+ * Returns a roughly ideal position to scroll an element into view >+ * @param {string} target - The HTML id of the element to scroll into view >+ * @param {string} elemid - The HTML id of the element which might obscure >+ * the view of the target element e.g. a floating toolbar >+ * @return {number} - The y-coordinate to pass to window.scrollTo() >+ */ >+ function getScrollto( target, elemid ){ >+ var dest = $("#" + target ); >+ var yoffset = dest.offset(); >+ >+ if( elemid != "" ){ >+ var element = $("#" + elemid ); >+ var elem_height = element.outerHeight(); >+ } else { >+ elem_height = 0; >+ } >+ return yoffset.top - elem_height - 20; >+ } >+ > function redirect(dest){ > $("#redirect").attr("value",dest); > return Check(); >@@ -165,17 +208,38 @@ > } > [% END %] > >+function PopupMARCFieldDoc(field) { >+ [% IF Koha.Preference('marcfielddocurl') %] >+ var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]"; >+ docurl = docurl.replace("{MARC}", "[% marcflavour | html %]"); >+ docurl = docurl.replace("{FIELD}", ""+field); >+ docurl = docurl.replace("{LANG}", "[% lang | html %]"); >+ window.open(docurl); >+ [% ELSIF ( marcflavour == 'MARC21' ) %] >+ _MARC21FieldDoc(field); >+ [% ELSIF ( marcflavour == 'UNIMARC' ) %] >+ _UNIMARCFieldDoc(field); >+ [% END %] >+} >+ function confirmnotdup(redirect){ >+ $("#confirm_not_duplicate").attr("value","1"); >+ $("#redirect").attr("value",redirect); >+ Check(); >+ } >+ > function Dopop(link,i) { > defaultvalue = document.getElementById(i).value; > window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes'); > } > >- function PopupMARCFieldDoc(field) { >- [% IF ( marcflavour == 'MARC21' ) %] >- _MARC21FieldDoc(field); >- [% ELSIF ( marcflavour == 'UNIMARC' ) %] >- _UNIMARCFieldDoc(field); >- [% END %] >+ /** >+ * this function open a popup to search on z3950 server. >+ */ >+ function PopupZ3950() { >+ var strQuery = GetZ3950Terms(); >+ if(strQuery){ >+ window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber | html %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); >+ } > } > > function _MARC21FieldDoc(field) { >@@ -190,9 +254,9 @@ > > function _UNIMARCFieldDoc(field) { > /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but >- seems to be the only version available that can be linked to per tag. More recent >- versions of the UNIMARC standard are available on the IFLA website only as >- PDFs! >+ seems to be the only version available that can be linked to per tag. More recent >+ versions of the UNIMARC standard are available on the IFLA website only as >+ PDFs! > */ > var url; > if (field == 0) { >@@ -202,24 +266,24 @@ > url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#"; > if (first == 0) url = url + "b"; > url = first == 9 >- ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm" >- : url + field; >+ ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm" >+ : url + field; > } > window.open(url); > } > > /* >- * Functions to hide/show marc docs and tags links >- */ >+ * Functions to hide/show marc docs and tags links >+ */ > > function toggleMARCdocLinks(flag){ > if( flag === true ){ > $(".marcdocs").show(); >- $.cookie("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 }); >+ Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365, sameSite: 'Lax' }); > $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); > } else { > $(".marcdocs").hide(); >- $.cookie("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 }); >+ Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365, sameSite: 'Lax' }); > $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); > } > } >@@ -228,20 +292,21 @@ > if( flag === true ){ > $(".tagnum").show(); > $(".subfieldcode").show(); >- $.cookie("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 }); >+ Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365, sameSite: 'Lax' }); > $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); > } else { > $(".tagnum").hide(); > $(".subfieldcode").hide(); >- $.cookie("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 }); >+ Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365, sameSite: 'Lax' }); > $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); > } > } > > /** >- * check if mandatory subfields are written >- */ >- function AreFieldsNotOk(){ >+ * check if mandatory/important subfields are written >+ * @param mandatory true to check for mandatories, false for importants >+ */ >+ function AreFieldsNotOk (mandatory = true) { > var mandatories = new Array(); > var mandatoriesfields = new Array(); > var tab = new Array(); >@@ -333,13 +398,40 @@ > isempty = false; > } > >- if (isempty) { >- flag = 1; >- StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n"; >+ if(isempty){ >+ flag = true; >+ if (mandatory) { >+ mandatoryFields[ arr[0] ] = { >+ importance: "mandatory", >+ elemid: "div_indicator_" + divid, >+ tab: arr[3] >+ } >+ } else { >+ mandatoryFields[ arr[0] ] = { >+ importance: "important", >+ elemid: "div_indicator_" + divid, >+ tab: arr[3] >+ } >+ } > } >+ > } > >- if (flag) { >+ if( Object.entries(mandatoryFields).length > 0 ){ >+ StrAlert += "<h4>" + _("The following fields aren't filled:") + "</h4>"; >+ StrAlert += "<ul>"; >+ for( var prop in mandatoryFields ){ >+ if( mandatoryFields[prop]["importance"] == "mandatory" ){ >+ StrAlert += "<li>" + _("Field %s is mandatory, at least one of its subfields must be filled.").format( prop ) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; >+ } else { >+ StrAlert += "<li>" + _("Field %s is important, at least one of its subfields must be filled.").format(prop) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; >+ } >+ } >+ StrAlert += "</ul>"; >+ } >+ StrAlert += "</div>"; >+ if ( flag ) { >+ $("#show-errors").html('<button type="button" class="btn btn-danger show-errors"><i class="fa fa-warning"></i> ' + _("Errors") + '</span>'); > return StrAlert; > } else { > return flag; >@@ -347,28 +439,67 @@ > } > > /** >- * >- * >+ * Run checks for mandatory and important fields >+ * Output errors if necessary, or submit the form > */ > function Check(){ > var StrAlert = AreFieldsNotOk(); >- if( ! StrAlert ){ >- var StrWarning = AreFieldsNotOk(false); >- if (StrWarning){ >- StrWarning += "\n" + _("Are you sure you want to save?"); >- var r=confirm(StrWarning); >- if (! r){ >- return false; >- } >+ var StrWarning = AreFieldsNotOk( false ); >+ if( !StrAlert && StrWarning ){ >+ // Check important fields >+ $("#check_errors").html( StrWarning ); >+ $('html, body').animate({ scrollTop: 0 }, 'fast'); >+ >+ var r=confirm( _("Important fields(s) are not filled. Are you sure you want to save?" ) ); >+ if (! r){ >+ return false; >+ } else { >+ document.f.submit(); >+ return true; >+ } >+ } else if( StrAlert ){ >+ var strAll = StrAlert; >+ if( StrWarning ){ >+ strAll += StrWarning; > } >+ $("#check_errors").html( strAll ); >+ $('html, body').animate({ scrollTop: 0 }, 'fast'); >+ Sticky.hcSticky('refresh'); >+ return false; >+ } else if( !StrAlert && !StrWarning ){ > document.f.submit(); > return true; >- } else { >- alert(StrAlert); >- return false; > } > } > >+ /** >+ * check if z3950 mandatories are set or not >+ */ >+ function GetZ3950Terms(){ >+ var frameworkcode = document.getElementById("frameworkcode").value; >+ var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode); >+ var mandatories = new Array(); >+ var mandatories_label = new Array(); >+ [% FOREACH BIG_LOO IN BIG_LOOP %] >+ [% FOREACH innerloo IN BIG_LOO.innerloop %] >+ [% FOREACH subfield_loo IN innerloo.subfield_loop %] >+ [% IF ( subfield_loo.z3950_mandatory ) %] >+ mandatories.push("[% subfield_loo.id | html %]"); >+ mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]"); >+ [% END %] >+ [% END %] >+ [% END %] >+ [% END %] >+ >+ for(var i=0,len=mandatories.length; i<len ; i++){ >+ var field_value = document.getElementById(mandatories[i]).value; >+ if( field_value ){ >+ strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value); >+ } >+ } >+ return strQuery; >+ } >+ > function Changefwk() { > var f = document.f; > f.op.value = "[% op | html %]"; >@@ -378,10 +509,18 @@ > f.submit(); > } > >- $(document).ready(function() { >- $('.subfield_line select').select2(); >- }); >+ /* Wrap a value in HTML without putting HTML in translatable string */ >+ function formatFieldName( string ){ >+ return "<strong><em>" + string + "</em></strong>"; >+ } >+ >+ // $(document).ready(function() { >+ // $('.subfield_line select').select2(); >+ // }); > </script> >+[% Asset.css("css/addholding.css") | $raw %] >+</head> >+<body id="cat_addholding" class="cat"> > > <div id="loading"> > <div>Loading, please wait...</div> >@@ -389,12 +528,24 @@ > > [% INCLUDE 'header.inc' %] > >- <div id="breadcrumbs"> >- <a href="/cgi-bin/koha/mainpage.pl">Home</a> › >- <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> › >- Edit <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]">[% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %])</a> › >- <a href="/cgi-bin/koha/cataloguing/addholding.pl?biblionumber=[% biblionumber | uri %]">Holdings</a> >- </div> >+ <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb"> >+ <ol> >+ <li> >+ <a href="/cgi-bin/koha/mainpage.pl">Home</a> >+ </li> >+ <li> >+ <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> >+ </li> >+ <li> >+ Editing <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]"> >+ <em>[% title | html %]</em> (Record number [% biblionumber | html %])</a> >+ [% IF ( author ) %] by [% author | html %][% END %] >+ </li> >+ <li> >+ <a aria-current="page" href="/cgi-bin/koha/cataloguing/addholding.pl?biblionumber=[% biblionumber | uri %]">Holdings</a> >+ </li> >+ </ol> >+ </nav> > > <div class="main container-fluid"> > <div class="row"> >@@ -440,10 +591,10 @@ > <div class="btn-group"> > <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button> > <ul id="settings-menu" class="dropdown-menu"> >- [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 %] >- [% # disabled until supported <li><a href="#" id="switcheditor">Switch to advanced editor</a></li> %] >+ [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %] >+ <li><a href="#" id="switcheditor">Switch to advanced editor</a></li> > [% END %] >- [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %] >+ [% UNLESS advancedMARCEditor %] > <li> > <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a> > <li> >@@ -479,7 +630,7 @@ > <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | url %]">Cancel</a> > </div> > <div class="toolbar-tabs-container"> >- [% IF ( BIG_LOOP.size > 1 ) %] >+ [% IF ( BIG_LOOP && BIG_LOOP.size > 1 ) %] > <ul class="toolbar-tabs"> > [%- FOREACH BIG_LOO IN BIG_LOOP -%] > [% IF loop.first %] >@@ -532,17 +683,17 @@ > [% previous = "" %] > [% FOREACH innerloo IN BIG_LOO.innerloop %] > [% IF ( innerloo.tag ) %] >- [% IF innerloo.tag != previous %] >- [% IF previous != "" %] >- </ul> >- [% END %] >- [% previous = innerloo.tag %] >- [% IF ( innerloo.repeatable ) %] >- <ul class="sortable_field"> >- [% ELSE %] >- <ul> >- [% END %] >+ [% IF innerloo.tag != previous %] >+ [% IF previous != "" %] >+ </ul> >+ [% END %] >+ [% previous = innerloo.tag %] >+ [% IF ( innerloo.repeatable ) %] >+ <ul class="sortable_field"> >+ [% ELSE %] >+ <ul> > [% END %] >+ [% END %] > [% IF ( innerloo.repeatable ) %] > <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]"> > [% ELSE %] >@@ -553,7 +704,7 @@ > <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib | html %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;">[% innerloo.tag | html %]</a> > [% ELSE %] > <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span> >- [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %] >+ <a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a> > [% END %] > > [% IF ( innerloo.fixedfield ) %] >@@ -610,85 +761,93 @@ > [% FOREACH subfield_loo IN innerloo.subfield_loop %] > <!-- One line on the marc editor --> > <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]"> >+ <div class="subfieldcode"> >+ <input type="text" >+ title="[% subfield_loo.marc_lib | html %]" >+ style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" >+ name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" >+ value="[% subfield_loo.subfield | html %]" >+ size="1" >+ maxlength="1" >+ class="flat" >+ tabindex="0" /> >+ </div> > [% UNLESS advancedMARCEditor %] >- [% IF ( subfield_loo.fixedfield ) %] >- <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" style="display:none;" class="labelsubfield"> >+ [% IF ( subfield_loo.mandatory ) %] >+ <div class="subfield subfield_mandatory"> >+ [% ELSIF ( subfield_loo.important ) %] >+ <div class="subfield subfield_important"> > [% ELSE %] >- <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield"> >+ <div class="subfield"> > [% END %] >- [% END %] >- >- <span class="subfieldcode"> >- <input type="text" >- title="[% subfield_loo.marc_lib | html %]" >- style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" >- name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" >- value="[% subfield_loo.subfield | html %]" >- size="1" >- maxlength="1" >- class="flat" >- tabindex="0" /> >- </span> >- >- [% UNLESS advancedMARCEditor %] >- [% IF ( subfield_loo.mandatory ) %] >- <span class="subfield subfield_mandatory"> >- [% ELSIF ( subfield_loo.important ) %] >- <span class="subfield subfield_important"> >+ [% IF ( subfield_loo.fixedfield ) %] >+ <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" style="display:none;" class="labelsubfield"> > [% ELSE %] >- <span class="subfield"> >+ <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield"> > [% END %] > [% subfield_loo.marc_lib | $raw %] >- </span> >- </label> >+ </label> >+ </div> > [% END %] > > [% SET mv = subfield_loo.marc_value %] >- [% IF ( mv.type == 'text' ) %] >- [% IF ( mv.readonly == 1 ) %] >- <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor readonly" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" readonly="readonly" /> >- [% ELSE %] >- <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> >- [% END %] >+ <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor"> >+ [% IF ( mv.type == 'text' ) %] >+ [% IF ( mv.readonly == 1 ) %] >+ <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor readonly" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" readonly="readonly" /> >+ [% ELSE %] >+ <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> >+ [% END %] > >- [% IF ( mv.authtype ) %] >- <span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','holding'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span> >+ [% ELSIF ( mv.type == 'text_complex' ) %] >+ <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> >+ [% mv.javascript | $raw %] >+ [% ELSIF ( mv.type == 'hidden' ) %] >+ <input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> >+ [% ELSIF ( mv.type == 'textarea' ) %] >+ <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea> >+ [% ELSIF ( mv.type == 'select' ) %] >+ [% IF mv.category AND CAN_user_parameters_manage_auth_values %] >+ <select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]"> >+ [% ELSE %] >+ <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]"> > [% END %] >- [% ELSIF ( mv.type == 'text_complex' ) %] >- <input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> >- <span class="subfield_controls"> >- [% IF mv.noclick %] >- <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span> >- [% ELSE %] >+ [% FOREACH aval IN mv.values %] >+ [% IF aval == mv.default %] >+ <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option> >+ [% ELSE %] >+ <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option> >+ [% END %] >+ [% END %] >+ </select> >+ [% END # /IF (mv.type...) %] >+ </div> >+ [% IF ( subfield_loo.mandatory ) %] >+ <div class="subfield_loop_mandatory"> >+ <span class="required">Required</span> >+ </div> >+ [% ELSIF ( subfield_loo.important ) %] >+ <div class="subfield_loop_mandatory"> >+ <span class="important">Important</span> >+ </div> >+ [% END %] >+ <div class="subfield_controls"> >+ [% IF ( mv.type == 'text' ) %] >+ [% IF ( mv.authtype ) %] >+ <a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','holding'); return false;" tabindex="1" title="Tag editor">Tag editor</a> >+ [% END %] >+ [% ELSIF ( mv.type == 'text_complex' ) %] >+ [% IF mv.noclick %] >+ <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span> >+ [% ELSE %] > [% IF mv.plugin == "upload.pl" %] > <a href="#" id="buttonDot_[% mv.id | html %]" class="tag_editor upload framework_plugin" tabindex="1"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> > [% ELSE %] > <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a> > [% END %] >- [% END %] >- </span> >- [% mv.javascript | $raw %] >- [% ELSIF ( mv.type == 'hidden' ) %] >- <input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> >- [% ELSIF ( mv.type == 'textarea' ) %] >- <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea> >- [% ELSIF ( mv.type == 'select' ) %] >- <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]"> >- [% FOREACH aval IN mv.values %] >- [% IF aval == mv.default %] >- <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option> >- [% ELSE %] >- <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option> >- [% END %] >+ [% END %] >+ </span> > [% END %] >- </select> >- [% END # /IF (mv.type...) %] >- [% IF ( subfield_loo.mandatory ) %] >- <span class="required">Required</span> >- [% ELSIF ( subfield_loo.important ) %] >- <span class="important">Important</span> >- [% END %] >- <span class="subfield_controls"> > [% IF ( subfield_loo.repeatable ) %] > <a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]','[% advancedMARCEditor | html %]'); return false;"> > <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /> >@@ -697,17 +856,17 @@ > <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /> > </a> > [% END %] >- </span> >+ </div> > </li> <!-- /.subfield_line --> > <!-- End of the line --> > [% END # /FOREACH subfield_loop %] > </ul> <!-- /.sortable_subfield --> > </li> <!-- /.tag.clearfix --> > [% END %]<!-- if innerloo.tag --> >- [% END %]<!-- BIG_LOO.innerloop --> >+ [% END # /FOREACH BIG_LOO.innerloop %] > </ul> <!-- /.sortable_field --> > </div> <!-- /#tabXXX --> >- [% END %]<!-- BIG_LOOP --> >+ [% END # /FOREACH BIG_LOOP %] > </div><!-- /#addholdingtabs --> > </form> <!-- /name=f --> > </div> <!-- /.col-md-10.col-md-offset-1 --> >-- >2.37.2
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 20447
:
73703
|
73704
|
76485
|
76542
|
76670
|
76671
|
76672
|
76735
|
76736
|
78178
|
78179
|
78180
|
78738
|
78739
|
78740
|
78907
|
79403
|
79413
|
79565
|
79566
|
79567
|
79568
|
79569
|
79570
|
79812
|
79813
|
79814
|
79815
|
79816
|
79819
|
80320
|
80321
|
80322
|
80323
|
80324
|
80823
|
80824
|
80825
|
80826
|
80827
|
81264
|
81265
|
81266
|
81267
|
81268
|
82669
|
82670
|
82671
|
82672
|
82673
|
83550
|
83551
|
83552
|
83553
|
83554
|
83555
|
83556
|
83557
|
83558
|
83559
|
85364
|
85368
|
85369
|
85370
|
85371
|
85416
|
85417
|
85418
|
85419
|
85906
|
85907
|
85908
|
85909
|
85994
|
85995
|
85996
|
85997
|
86088
|
86089
|
86090
|
86091
|
87307
|
87308
|
87309
|
87310
|
87346
|
87347
|
87348
|
87349
|
88751
|
88752
|
88753
|
88754
|
88755
|
91743
|
91744
|
91745
|
91746
|
91747
|
94539
|
94540
|
94541
|
94542
|
97796
|
97797
|
97798
|
97799
|
97800
|
97843
|
97844
|
97845
|
97846
|
99143
|
99144
|
99145
|
99146
|
99176
|
99177
|
99178
|
99179
|
99235
|
99236
|
99237
|
99238
|
99239
|
105068
|
105069
|
105070
|
105071
|
105072
|
105259
|
105260
|
105261
|
105262
|
105263
|
106147
|
106148
|
106149
|
106150
|
106151
|
108250
|
108251
|
108252
|
108253
|
108254
|
108255
|
108336
|
108337
|
108338
|
108339
|
108340
|
108341
|
108789
|
108790
|
108791
|
108792
|
108793
|
108794
|
109695
|
109696
|
109697
|
109698
|
109699
|
109700
|
109703
|
109704
|
109705
|
109706
|
109707
|
109708
|
109711
|
109712
|
109713
|
109714
|
109715
|
109717
|
109718
|
109719
|
109720
|
109721
|
109722
|
109741
|
109742
|
109743
|
109744
|
109745
|
109746
|
109765
|
109766
|
109767
|
109768
|
109769
|
109770
|
109873
|
109874
|
109875
|
109877
|
109878
|
109879
|
110115
|
110174
|
110313
|
110314
|
110315
|
110316
|
110317
|
110318
|
110319
|
110320
|
110467
|
110468
|
110469
|
110471
|
110472
|
110473
|
110474
|
110475
|
112176
|
112177
|
112179
|
112180
|
112181
|
112182
|
112189
|
112190
|
112191
|
112192
|
112193
|
112194
|
112570
|
112571
|
112572
|
112573
|
112574
|
112575
|
113943
|
113944
|
113945
|
113946
|
113947
|
113948
|
113952
|
113953
|
113954
|
113955
|
113956
|
113957
|
113958
|
113959
|
115239
|
115240
|
115241
|
115242
|
115243
|
115244
|
115245
|
115654
|
115655
|
115656
|
115657
|
115658
|
115659
|
115660
|
115722
|
115723
|
115724
|
115725
|
115726
|
115727
|
115728
|
115729
|
116797
|
116798
|
116799
|
116800
|
116801
|
116802
|
116803
|
116804
|
116805
|
116806
|
116807
|
116808
|
116809
|
116810
|
116811
|
116812
|
118382
|
118383
|
118385
|
118386
|
118387
|
118388
|
118389
|
118390
|
118397
|
118398
|
118399
|
118400
|
118401
|
118402
|
118403
|
118404
|
118405
|
118406
|
118407
|
118408
|
118409
|
118410
|
118411
|
118412
|
118429
|
118430
|
118431
|
118432
|
118433
|
118434
|
118435
|
118436
|
118527
|
118528
|
118529
|
118530
|
118531
|
118532
|
118533
|
118534
|
118535
|
118536
|
119265
|
119266
|
119267
|
119268
|
119269
|
119270
|
119271
|
119272
|
119273
|
119274
|
119514
|
119515
|
119516
|
119517
|
119518
|
119519
|
119520
|
119521
|
119522
|
119523
|
119570
|
119571
|
121216
|
121217
|
121220
|
121221
|
121222
|
121223
|
121226
|
121227
|
121228
|
121229
|
121230
|
121231
|
121379
|
121380
|
121381
|
121382
|
121383
|
121406
|
121407
|
121408
|
121409
|
121410
|
122501
|
122502
|
122503
|
122504
|
122505
|
122851
|
122852
|
122853
|
122854
|
122855
|
122856
|
122891
|
122892
|
122893
|
122894
|
122895
|
122896
|
122897
|
123047
|
123048
|
123049
|
123050
|
123051
|
123052
|
123053
|
123054
|
123055
|
123056
|
123057
|
123058
|
123059
|
123060
|
123061
|
124012
|
124013
|
124014
|
124015
|
124016
|
124017
|
124018
|
124944
|
124945
|
124946
|
124947
|
124948
|
124949
|
124950
|
126204
|
126205
|
126206
|
126207
|
126208
|
126209
|
126210
|
126211
|
126212
|
126296
|
126391
|
126392
|
126394
|
126395
|
126396
|
126397
|
126398
|
126399
|
126400
|
126401
|
126402
|
126403
|
126404
|
126405
|
126932
|
126933
|
126934
|
126935
|
126936
|
126937
|
126938
|
126939
|
126940
|
126941
|
126942
|
126943
|
127040
|
128079
|
128131
|
128134
|
130776
|
130777
|
130778
|
130779
|
130780
|
130781
|
130782
|
130783
|
130784
|
130785
|
130786
|
130787
|
130788
|
130789
|
130790
|
130791
|
130792
|
130793
|
130794
|
130795
|
130796
|
130797
|
130798
|
130799
|
130800
|
130801
|
130802
|
130803
|
130804
|
130805
|
130806
|
130807
|
131458
|
131459
|
131460
|
131461
|
131462
|
131463
|
131464
|
131465
|
131466
|
131467
|
131468
|
131469
|
131470
|
131471
|
131472
|
131473
|
131474
|
131475
|
131476
|
131477
|
131478
|
131479
|
131480
|
131481
|
131482
|
139865
|
139866
|
139867
|
139868
|
139869
|
139870
|
139871
|
139872
|
139873
|
139874
|
139875
|
139876
|
139877
|
139878
|
139879
|
139880
|
139881
|
139882
|
139883
|
139884
|
139885
|
139886
|
139887
|
139888
|
139889
|
139890
|
139891
|
139892
|
139893
|
139894
|
139895
|
139896
|
157492
|
157493