Browse Source

Bug 18904: Advanced editor - Rancor - Add authority support

This patchset adds the ability to use the authorities search to select
or clear fields in the advanced editor

To test:
 1 - Open a record in the advanced cataloging editor
 2 - Press 'Ctrl+L' while in a field that shuold not be linked to
authorities (300 for instance)
 3 - Nothing should happen
 4 - Try it in a field that should be linked
 5 - You should get the authorities pop-up
 6 - Values in pop-up should be populated from values in record (as
        appropriate for authority type)
 7 - Correct authority type should be selected ( PERSO_NAME for 100,
        TOPIC_TERM for 650, etc.)
 8 - Press 'Clear', field should be blanked
 9 - Search again and select an authority
10 - Field should be correctly populated

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
18.05.x
Nick Clemens 7 years ago
committed by Jonathan Druart
parent
commit
297529c251
  1. 4
      cataloguing/editor.pl
  2. 24
      koha-tmpl/intranet-tmpl/lib/koha/cateditor/marc-editor.js
  3. 8
      koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc
  4. 33
      koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt
  5. 5
      koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/editor.tt

4
cataloguing/editor.pl

@ -29,6 +29,7 @@ use C4::Context;
use C4::Output;
use DBIx::Class::ResultClass::HashRefInflator;
use Koha::Database;
use Koha::MarcSubfieldStructures;
my $input = CGI->new;
@ -56,6 +57,9 @@ $template->{VARS}->{editable_batches} = [ $schema->resultset('ImportBatch')->sea
# Needed information for cataloging plugins
$template->{VARS}->{DefaultLanguageField008} = pack( 'A3', C4::Context->preference('DefaultLanguageField008') || 'eng' );
my $authtags = Koha::MarcSubfieldStructures->search({ authtypecode => { '!=' => '' }, 'frameworkcode' => '' });
$template->{VARS}->{authtags} = $authtags;
# Z39.50 servers
my $dbh = C4::Context->dbh;
$template->{VARS}->{z3950_servers} = $dbh->selectall_arrayref( q{

24
koha-tmpl/intranet-tmpl/lib/koha/cateditor/marc-editor.js

@ -18,6 +18,7 @@
*/
define( [ 'marc-record', 'koha-backend', 'preferences', 'text-marc', 'widget' ], function( MARC, KohaBackend, Preferences, TextMARC, Widget ) {
var NOTIFY_TIMEOUT = 250;
function editorCursorActivity( cm ) {
@ -163,6 +164,29 @@ define( [ 'marc-record', 'koha-backend', 'preferences', 'text-marc', 'widget' ],
cm.execCommand('deleteLine');
},
'Ctrl-L': function( cm ) {
// Launch the auth search popup
var field = cm.marceditor.getCurrentField();
if ( !field ) return;
if ( authInfo[field.tag] == undefined ) return;
authtype = authInfo[field.tag].authtypecode;
index = 'rancor';//+field.line+'|'+field.tag;
var mainmainstring = '';
if( field.getSubfields( authInfo[field.tag].subfield ).length != 0 ){
mainmainstring += field.getSubfields( authInfo[field.tag].subfield )[0].text;
}
var subfields = field.getSubfields();
var mainstring= '';
for(i=0;i < subfields.length ;i++){
if ( authInfo[field.tag].subfield == subfields[i].code ) continue;
mainstring += subfields[i].text+' ';
}
newin=window.open("../authorities/auth_finder.pl?source=biblio&authtypecode="+authtype+"&index="+index+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
},
'Shift-Ctrl-X': function( cm ) {
// Delete subfield
var field = cm.marceditor.getCurrentField();

8
koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc

@ -3,6 +3,14 @@
<script src="[% interface %]/lib/koha/cateditor/marc-mode.js"></script>
<script src="[% interface %]/lib/require.js"></script>
<script>
var authInfo = {
[%- FOREACH authtag = authtags -%]
[% authtag.tagfield %]: {
subfield: '[% authtag.tagsubfield %]',
authtypecode: '[% authtag.authtypecode %]',
},
[%- END -%]
};
require.config( {
baseUrl: '[% interface %]/lib/koha/cateditor/',
config: {

33
koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt

@ -19,6 +19,25 @@
[% MACRO jsinclude BLOCK %]
<script type="text/javascript">
$(document).ready(function(){
[% IF tag_number == 'rancor' %]
function RancorReplaceField( new_text ){
var cur_field = opener.opener.jQuery(".CodeMirror")[0].CodeMirror.marceditor.getCurrentField();
cur_field.setText(new_text);
return true;
}
[% IF ( clear ) %]
var new_line = "";
[% ELSE %]
var new_line = "
[%- FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP -%]‡
[%- SUBFIELD_LOO.marc_subfield |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r ') -%]
[%- FOREACH marc_value IN SUBFIELD_LOO.marc_values -%]
[%- marc_value |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') -%]
[%- END -%]
[%- END -%]‡9[% authid %]";
[% END %]
RancorReplaceField( new_line );
[% ELSE %]
var index_start = "[% index %]";
var whichfield;
try {
@ -88,13 +107,14 @@
}
[% UNLESS ( clear ) %]
[% FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP %]
SetSubfieldValues(
"[% tag_number |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %][% SUBFIELD_LOO.marc_subfield |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"
[% FOREACH marc_value IN SUBFIELD_LOO.marc_values %]
,"[% marc_value |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"
[% FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP %]
SetSubfieldValues(
"[% tag_number |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %][% SUBFIELD_LOO.marc_subfield |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"
[% FOREACH marc_value IN SUBFIELD_LOO.marc_values %]
,"[% marc_value |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"
[% END %]
);
[% END %]
);
[% END %]
var indicators = field_start.getElementsByClassName('indicator flat');
[% IF update_ind1 %]
@ -124,6 +144,7 @@
[% END %]
}
}
[% END %]
opener.close();
window.close();

5
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/editor.tt

@ -6,6 +6,7 @@
<link rel="stylesheet" href="[% interface %]/lib/codemirror/codemirror_[% KOHA_VERSION %].css" />
<link rel="stylesheet" href="[% interface %]/[% theme %]/css/humanmsg_[% KOHA_VERSION %].css" />
<script src="[% interface %]/lib/jquery/plugins/humanmsg.js" type="text/javascript"></script>
<script src="/intranet-tmpl/prog/js/cataloging.js" type="text/javascript"></script>
[% IF ( bidi ) %]
<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/right-to-left_[% KOHA_VERSION %].css" />
[% END %]
@ -276,6 +277,10 @@
<td>Ctrl-H</td>
<td>Get help on current subfield</td>
</tr>
<tr>
<td>Ctrl-L</td>
<td>Link field to authorities</td>
</tr>
<tr>
<td>Ctrl-S</td>
<td>Save record</td>

Loading…
Cancel
Save