@@ -, +, @@ field, and cut text --- .../bug_17179_add_keyboard_shortcuts.perl | 13 ++++++ .../lib/koha/cateditor/marc-editor.js | 48 +++++++++++++++++++++- .../prog/en/includes/keyboard_shortcuts.inc | 8 +++- .../prog/en/modules/cataloguing/editor.tt | 5 +++ 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_17179_add_keyboard_shortcuts.perl --- a/installer/data/mysql/atomicupdate/bug_17179_add_keyboard_shortcuts.perl +++ a/installer/data/mysql/atomicupdate/bug_17179_add_keyboard_shortcuts.perl @@ -0,0 +1,13 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q| + INSERT IGNORE INTO keyboard_shortcuts (shortcut_name, shortcut_keys) VALUES + ("copy_line","Ctrl-C"), + ("copy_subfield","Shift-Ctrl-C"), + ("paste_line","Ctrl-P"), + ("insert_line","Ctrl-I") + ; + |); + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 17179 - Add additional keyboard_shortcuts)\n"; +} --- a/koha-tmpl/intranet-tmpl/lib/koha/cateditor/marc-editor.js +++ a/koha-tmpl/intranet-tmpl/lib/koha/cateditor/marc-editor.js @@ -160,6 +160,9 @@ define( [ 'marc-record', 'koha-backend', 'preferences', 'text-marc', 'widget' ], _editorKeys[delete_field] = function( cm ) { // Delete line (or cut) if ( cm.somethingSelected() ) return true; + var curLine = cm.getLine( cm.getCursor().line ); + + $("#clipboard").prepend(''); cm.execCommand('deleteLine'); } @@ -193,8 +196,49 @@ define( [ 'marc-record', 'koha-backend', 'preferences', 'text-marc', 'widget' ], var field = cm.marceditor.getCurrentField(); if ( !field ) return; - var subfield = field.getSubfieldAt( cm.getCursor().ch ); - if ( subfield ) subfield.delete(); + var curCursor = cm.getCursor(); + var subfield = field.getSubfieldAt( curCursor().ch ); + var subfieldText= cm.getRange({line:curCursor.line,ch:subfield.start},{line:curCursor.line,ch:subfield.end}); + if ( subfield ) { + $("#clipboard").prepend(''); + subfield.delete(); + } + } + + _editorKeys[copy_line] = function( cm ) { + // Copy line + if ( cm.somethingSelected() ) return true; + var curLine = cm.getLine( cm.getCursor().line ); + $("#clipboard").prepend(''); + } + + _editorKeys[copy_subfield] = function( cm ) { + // Copy subfield + var field = cm.marceditor.getCurrentField(); + if ( !field ) return; + + var curCursor = cm.getCursor(); + var subfield = field.getSubfieldAt( curCursor().ch ); + var subfieldText= cm.getRange({line:curCursor.line,ch:subfield.start},{line:curCursor.line,ch:subfield.end}); + if ( subfield ) { + $("#clipboard").prepend(''); + } + } + + _editorKeys[paste_line] = function( cm ) { + // Paste line from "clipboard" + if ( cm.somethingSelected() ) return true; + var cBoard = document.getElementById("clipboard"); + var strUser = cBoard.options[cBoard.selectedIndex].text; + cm.replaceRange( strUser, cm.getCursor(), null ); + } + + _editorKeys[insert_line] = function( cm ) { + // Copy line and insert below + if ( cm.somethingSelected() ) return true; + var curLine = cm.getLine( cm.getCursor().line ); + cm.execCommand('newlineAndIndent'); + cm.replaceRange( curLine, cm.getCursor(), null ); } _editorKeys[next_position] = function( cm ) { --- a/koha-tmpl/intranet-tmpl/prog/en/includes/keyboard_shortcuts.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/keyboard_shortcuts.inc @@ -5,12 +5,16 @@ [%- CASE 'insert_delimiter' -%]Insert delimiter (‡) [%- CASE 'subfield_help' -%]Get help on current subfield [%- CASE 'link_authorities' -%]Link field to authorities - [%- CASE 'delete_field' -%]Delete current field - [%- CASE 'delete_subfield' -%]Delete current subfield + [%- CASE 'delete_field' -%]Delete current field and copy to 'clipboard' + [%- CASE 'delete_subfield' -%]Delete current subfield and copy to 'clipboard' [%- CASE 'new_line' -%]New field on next line [%- CASE 'line_break' -%]Insert line break [%- CASE 'next_position' -%]Move to next position [%- CASE 'prev_position' -%]Move to previous position [%- CASE 'toggle_keyboard' -%]Toggle Keyboard + [%- CASE 'copy_line' -%]Copy current field + [%- CASE 'copy_subfield' -%]Copy current subfield + [%- CASE 'paste_line' -%]Paste selection from 'clipboard' + [%- CASE 'insert_line' -%]Copy current field on next line [%- END -%] [%- END -%] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/editor.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/editor.tt @@ -109,6 +109,11 @@
  • Advanced »
  • +

    Clipboard

    +
    + +
    --