Bug 24789: Remove ITS macro format
To test: 1 - Apply patches 2 - Confirm you can save, load, and run macros 3 - Confirm you have no choice of format Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
0666b644be
commit
6c3a2b4748
4 changed files with 3 additions and 227 deletions
|
@ -17,13 +17,9 @@
|
|||
* along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||
*/
|
||||
|
||||
define( [ 'macros/its', 'macros/rancor' ], function( ITSMacro, RancorMacro ) {
|
||||
define( [ 'macros/rancor' ], function( RancorMacro ) {
|
||||
var Macros = {
|
||||
formats: {
|
||||
its: {
|
||||
description: 'TLC® ITS',
|
||||
Run: ITSMacro.Run,
|
||||
},
|
||||
rancor: {
|
||||
description: 'Rancor',
|
||||
Run: RancorMacro.Run,
|
||||
|
|
|
@ -1,208 +0,0 @@
|
|||
/**
|
||||
* Copyright 2015 ByWater Solutions
|
||||
*
|
||||
* This file is part of Koha.
|
||||
*
|
||||
* Koha is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Koha is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||
*/
|
||||
|
||||
define( function() {
|
||||
var NAV_FAILED = new Object();
|
||||
var NAV_SUCCEEDED = new Object();
|
||||
|
||||
var _commandGenerators = [
|
||||
[ /^copy field data$/i, function() {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
|
||||
return state.field.getText();
|
||||
};
|
||||
} ],
|
||||
[ /^copy subfield data$/i, function() {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
|
||||
var cur = editor.getCursor();
|
||||
var subfields = state.field.getSubfields();
|
||||
|
||||
for (var i = 0; i < subfields.length; i++) {
|
||||
if ( cur.ch > subfields[i].end ) continue;
|
||||
|
||||
state.clipboard = subfields[i].text;
|
||||
return;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
} ],
|
||||
[ /^del(ete)? field$/i, function() {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
|
||||
state.field.delete();
|
||||
return NAV_FAILED;
|
||||
}
|
||||
} ],
|
||||
[ /^goto field end$/i, function() {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return NAV_FAILED;
|
||||
var cur = editor.cm.getCursor();
|
||||
|
||||
editor.cm.setCursor( { line: cur.line } );
|
||||
return NAV_SUCCEEDED;
|
||||
}
|
||||
} ],
|
||||
[ /^goto field (\w{3})$/i, function(tag) {
|
||||
return function( editor, state ) {
|
||||
var field = editor.getFirstField(tag);
|
||||
if ( field == null ) return NAV_FAILED;
|
||||
|
||||
field.focus();
|
||||
return NAV_SUCCEEDED;
|
||||
}
|
||||
} ],
|
||||
[ /^goto subfield end$/i, function() {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return NAV_FAILED;
|
||||
|
||||
var cur = editor.getCursor();
|
||||
var subfields = state.field.getSubfields();
|
||||
|
||||
for (var i = 0; i < subfields.length; i++) {
|
||||
if ( cur.ch > subfields[i].end ) continue;
|
||||
|
||||
subfield.focusEnd();
|
||||
return NAV_SUCCEEDED;
|
||||
}
|
||||
|
||||
return NAV_FAILED;
|
||||
}
|
||||
} ],
|
||||
[ /^goto subfield (\w)$/i, function( code ) {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return NAV_FAILED;
|
||||
|
||||
var subfield = state.field.getFirstSubfield( code );
|
||||
if ( subfield == null ) return NAV_FAILED;
|
||||
|
||||
subfield.focus();
|
||||
return NAV_SUCCEEDED;
|
||||
}
|
||||
} ],
|
||||
[ /^insert (new )?field (\w{3}) data=(.*)/i, function(undef, tag, text) {
|
||||
text = text.replace(/\\([0-9a-z])/g, '$$$1 ');
|
||||
return function( editor, state ) {
|
||||
editor.createFieldGrouped(tag).setText(text).focus();
|
||||
return NAV_SUCCEEDED;
|
||||
}
|
||||
} ],
|
||||
[ /^insert (new )?subfield (\w) data=(.*)/i, function(undef, code, text) {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
|
||||
state.field.appendSubfield(code).setText(text);
|
||||
}
|
||||
} ],
|
||||
[ /^paste$/i, function() {
|
||||
return function( editor, state ) {
|
||||
var cur = editor.cm.getCursor();
|
||||
|
||||
editor.cm.replaceRange( state.clipboard, cur, null, 'marcAware' );
|
||||
}
|
||||
} ],
|
||||
[ /^set indicator([12])=([ _0-9])$/i, function( ind, value ) {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
if ( state.field.isControlField ) return false;
|
||||
|
||||
if ( ind == '1' ) {
|
||||
state.field.setIndicator1(value);
|
||||
return true;
|
||||
} else if ( ind == '2' ) {
|
||||
state.field.setIndicator2(value);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} ],
|
||||
[ /^set indicators=([ _0-9])([ _0-9])?$/i, function( ind1, ind2 ) {
|
||||
return function( editor, state ) {
|
||||
if ( state.field == null ) return;
|
||||
if ( state.field.isControlField ) return false;
|
||||
|
||||
state.field.setIndicator1(ind1);
|
||||
state.field.setIndicator2(ind2 || '_');
|
||||
}
|
||||
} ],
|
||||
];
|
||||
|
||||
var ITSMacro = {
|
||||
Compile: function( macro ) {
|
||||
var result = { commands: [], errors: [] };
|
||||
|
||||
$.each( macro.split(/\r\n|\n/), function( line, contents ) {
|
||||
var command;
|
||||
|
||||
if ( contents.match(/^\s*$/) ) return;
|
||||
|
||||
$.each( _commandGenerators, function( undef, gen ) {
|
||||
var match;
|
||||
|
||||
if ( !( match = gen[0].exec( contents ) ) ) return;
|
||||
|
||||
command = gen[1].apply(null, match.slice(1));
|
||||
return false;
|
||||
} );
|
||||
|
||||
if ( !command ) {
|
||||
result.errors.push( { line: line, error: 'unrecognized' } );
|
||||
}
|
||||
|
||||
result.commands.push( { func: command, orig: contents, line: line } );
|
||||
} );
|
||||
|
||||
return result;
|
||||
},
|
||||
Run: function( editor, macro ) {
|
||||
var compiled = ITSMacro.Compile(macro);
|
||||
if ( compiled.errors.length ) return { errors: compiled.errors };
|
||||
var state = {
|
||||
clipboard: '',
|
||||
field: null,
|
||||
};
|
||||
|
||||
var run_result = { errors: [] };
|
||||
|
||||
editor.cm.operation( function() {
|
||||
$.each( compiled.commands, function( undef, command ) {
|
||||
var result = command.func( editor, state );
|
||||
|
||||
if ( result == NAV_FAILED ) {
|
||||
state.field = null;
|
||||
} else if ( result == NAV_SUCCEEDED ) {
|
||||
state.field = editor.getCurrentField();
|
||||
} else if ( result === false ) {
|
||||
run_result.errors.push( { line: command.line, error: 'failed' } );
|
||||
return false;
|
||||
}
|
||||
} );
|
||||
} );
|
||||
|
||||
return run_result;
|
||||
},
|
||||
};
|
||||
|
||||
return ITSMacro;
|
||||
} );
|
|
@ -706,7 +706,6 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr
|
|||
var macro = Preferences.user.macros[name];
|
||||
macroEditor.setValue( macro.contents );
|
||||
macroEditor.setOption( 'readOnly', false );
|
||||
$( '#macro-format' ).val( macro.format || 'its' );
|
||||
if ( macro.history ) macroEditor.setHistory( macro.history );
|
||||
}
|
||||
|
||||
|
@ -763,7 +762,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr
|
|||
if ( !name || macroEditor.savedGeneration == macroEditor.changeGeneration() ) return;
|
||||
|
||||
macroEditor.savedGeneration = macroEditor.changeGeneration();
|
||||
storeMacro( name, { contents: macroEditor.getValue(), modified: (new Date()).valueOf(), history: macroEditor.getHistory(), format: $('#macro-format').val() } );
|
||||
// storeMacro( name, { contents: macroEditor.getValue(), modified: (new Date()).valueOf(), history: macroEditor.getHistory(), format: $('#macro-format').val() } );
|
||||
$('#macro-save-message').text(_("Saved"));
|
||||
showSavedMacros();
|
||||
}
|
||||
|
@ -862,16 +861,6 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr
|
|||
$( '#save-dropdown' ).append( '<li><a href="#" data-backend="' + backend[1] + '">' + backend[0] + '</a></li>' );
|
||||
} );
|
||||
|
||||
var macro_format_list = $.map( Macros.formats, function( format, name ) {
|
||||
return $.extend( { name: name }, format );
|
||||
} );
|
||||
macro_format_list.sort( function( a, b ) {
|
||||
return a.description.localeCompare(b.description);
|
||||
} );
|
||||
$.each( macro_format_list, function() {
|
||||
$('#macro-format').append( '<option value="' + this.name + '">' + this.description + '</option>' );
|
||||
} );
|
||||
|
||||
// Click bindings
|
||||
$( '#save-record, #save-dropdown a' ).click( function() {
|
||||
$( '#save-record' ).find('i').attr( 'class', 'fa fa-spinner fa-spin' ).siblings( 'span' ).text( _("Saving...") );
|
||||
|
@ -978,7 +967,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr
|
|||
} );
|
||||
|
||||
$('#run-macro').click( function() {
|
||||
var result = Macros.Run( editor, $('#macro-format').val(), macroEditor.getValue() );
|
||||
var result = Macros.Run( editor, 'rancor', macroEditor.getValue() );
|
||||
|
||||
if ( !result.errors.length ) {
|
||||
$('#macro-ui').modal('hide');
|
||||
|
|
|
@ -264,7 +264,6 @@
|
|||
<div id="macro-toolbar" class="btn-toolbar">
|
||||
<button class="btn btn-default" id="run-macro" title="Run and edit macros"><i class="fa fa-play"></i> Run macro</button>
|
||||
<button class="btn btn-default" id="delete-macro" title="Delete macro"><i class="fa fa-trash"></i> Delete macro</button>
|
||||
<label for="macro-format">Format: </label> <select id="macro-format"></select>
|
||||
<div id="macro-save-message"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue