View | Details | Raw Unified | Return to bug 10480
Collapse All | Expand All

(-)a/C4/Items.pm (-15 / +18 lines)
Lines 3029-3049 sub PrepareItemrecordDisplay { Link Here
3029
                        labels  => \%authorised_lib,
3029
                        labels  => \%authorised_lib,
3030
                    };
3030
                    };
3031
                } elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) {
3031
                } elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) {
3032
                        # opening plugin
3032
                # it is a plugin
3033
                        my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
3033
                    require Koha::FrameworkPlugin;
3034
                        if (do $plugin) {
3034
                    my $plugin = Koha::FrameworkPlugin->new({
3035
                            my $extended_param = plugin_parameters( $dbh, undef, $tagslib, $subfield_data{id}, undef );
3035
                        name => $tagslib->{$tag}->{$subfield}->{value_builder},
3036
                            my ( $function_name, $javascript ) = plugin_javascript( $dbh, undef, $tagslib, $subfield_data{id}, undef );
3036
                        item_style => 1,
3037
                            $subfield_data{random}     = int(rand(1000000));    # why do we need 2 different randoms?
3037
                    });
3038
                            $subfield_data{marc_value} = qq[<input type="text" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255"
3038
                    my $pars = { dbh => $dbh, record => undef, tagslib =>$tagslib, id => $subfield_data{id}, tabloop => undef };
3039
                                onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
3039
                    $plugin->build( $pars );
3040
                                 onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
3040
                    if( !$plugin->errstr ) {
3041
                                <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
3041
                        #TODO Move html to template; see report 12176/13397
3042
                                $javascript];
3042
                        my $tab= $plugin->noclick? '-1': '';
3043
                        } else {
3043
                        my $class= $plugin->noclick? ' disabled': '';
3044
                            warn "Plugin Failed: $plugin";
3044
                        my $title= $plugin->noclick? 'No popup': 'Tag editor';
3045
                            $subfield_data{marc_value} = qq(<input type="text" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255" />); # supply default input form
3045
                        $subfield_data{marc_value} = qq[<input type="text" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255" /><a href="#" id="buttonDot_$subfield_data{id}" tabindex="$tab" class="buttonDot $class" title="$title">...</a>\n].$plugin->javascript;
3046
                        }
3046
                    } else {
3047
                        warn $plugin->errstr;
3048
                        $subfield_data{marc_value} = qq(<input type="text" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255" />); # supply default input form
3049
                    }
3047
                }
3050
                }
3048
                elsif ( $tag eq '' ) {       # it's an hidden field
3051
                elsif ( $tag eq '' ) {       # it's an hidden field
3049
                    $subfield_data{marc_value} = qq(<input type="hidden" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255" value="$defaultvalue" />);
3052
                    $subfield_data{marc_value} = qq(<input type="hidden" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="50" maxlength="255" value="$defaultvalue" />);
(-)a/authorities/authorities.pl (-28 / +28 lines)
Lines 212-248 sub create_input { Link Here
212
            value        => $value,
212
            value        => $value,
213
            authtypecode => $tagslib->{$tag}->{$subfield}->{authtypecode},
213
            authtypecode => $tagslib->{$tag}->{$subfield}->{authtypecode},
214
        };
214
        };
215
    # it's a plugin field
216
    }
215
    }
217
    elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
216
    elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) { # plugin
218
217
        require Koha::FrameworkPlugin;
219
        # opening plugin. Just check whether we are on a developer computer on a production one
218
        my $plugin = Koha::FrameworkPlugin->new({
220
        # (the cgidir differs)
219
            name => $tagslib->{$tag}->{$subfield}->{'value_builder'},
221
        my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
220
        });
222
        unless (-r $cgidir and -d $cgidir) {
221
        my $pars=  { dbh => $dbh, record => $rec, tagslib =>$tagslib,
223
            $cgidir = C4::Context->intranetdir . "/cataloguing/value_builder";
222
            id => $subfield_data{id}, tabloop => $tabloop };
223
        $plugin->build( $pars );
224
        if( !$plugin->errstr ) {
225
            $subfield_data{marc_value} = {
226
                type       => 'text2',
227
                id        => $subfield_data{id},
228
                name      => $subfield_data{id},
229
                value     => $value,
230
                maxlength => $max_length,
231
                javascript => $plugin->javascript,
232
                noclick    => $plugin->noclick,
233
            };
234
        } else { # warn and supply default field
235
            warn $plugin->errstr;
236
            $subfield_data{marc_value} = {
237
                type      => 'text',
238
                id        => $subfield_data{id},
239
                name      => $subfield_data{id},
240
                value     => $value,
241
                maxlength => $max_length,
242
            };
224
        }
243
        }
225
        my $plugin = $cgidir . "/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
226
        do $plugin || die "Plugin Failed: ".$plugin;
227
        my $extended_param;
228
        eval{
229
            $extended_param = plugin_parameters( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
230
        };
231
        my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
232
#         my ( $function_name, $javascript,$extended_param );
233
        
234
        $subfield_data{marc_value} = {
235
            type       => 'text2',
236
            id         => $subfield_data{id},
237
            name       => $subfield_data{id},
238
            value      => $value,
239
            maxlength  => $max_length,
240
            function   => $function_name,
241
            index_tag  => $index_tag,
242
            javascript => $javascript,
243
        };
244
        # it's an hidden field
245
    }
244
    }
245
    # it's an hidden field
246
    elsif ( $tag eq '' ) {
246
    elsif ( $tag eq '' ) {
247
        $subfield_data{marc_value} = {
247
        $subfield_data{marc_value} = {
248
            type      => 'hidden',
248
            type      => 'hidden',
(-)a/cataloguing/addbiblio.pl (-24 / +15 lines)
Lines 391-411 sub create_input { Link Here
391
        };
391
        };
392
392
393
    # it's a plugin field
393
    # it's a plugin field
394
    }
394
    } elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
395
    elsif ( $tagslib->{$tag}->{$subfield}->{'value_builder'} ) {
395
        require Koha::FrameworkPlugin;
396
396
        my $plugin = Koha::FrameworkPlugin->new( {
397
        # opening plugin. Just check whether we are on a developer computer on a production one
397
            name => $tagslib->{$tag}->{$subfield}->{'value_builder'},
398
        # (the cgidir differs)
398
        });
399
        my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
399
        my $pars= { dbh => $dbh, record => $rec, tagslib => $tagslib,
400
        unless ( opendir( DIR, "$cgidir" ) ) {
400
            id => $subfield_data{id}, tabloop => $tabloop };
401
            $cgidir = C4::Context->intranetdir . "/cataloguing/value_builder";
401
        $plugin->build( $pars );
402
            closedir( DIR );
402
        if( !$plugin->errstr ) {
403
        }
404
        my $plugin = $cgidir . "/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
405
        if (do $plugin) {
406
            my $extended_param = plugin_parameters( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
407
            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
408
        
409
            $subfield_data{marc_value} = {
403
            $subfield_data{marc_value} = {
410
                type           => 'text_complex',
404
                type           => 'text_complex',
411
                id             => $subfield_data{id},
405
                id             => $subfield_data{id},
Lines 413-425 sub create_input { Link Here
413
                value          => $value,
407
                value          => $value,
414
                size           => 67,
408
                size           => 67,
415
                maxlength      => $subfield_data{maxlength},
409
                maxlength      => $subfield_data{maxlength},
416
                function_name  => $function_name,
410
                javascript     => $plugin->javascript,
417
                index_tag      => $index_tag,
411
                noclick        => $plugin->noclick,
418
                javascript     => $javascript,
419
            };
412
            };
420
421
        } else {
413
        } else {
422
            warn "Plugin Failed: $plugin";
414
            warn $plugin->errstr;
423
            # supply default input form
415
            # supply default input form
424
            $subfield_data{marc_value} = {
416
            $subfield_data{marc_value} = {
425
                type      => 'text',
417
                type      => 'text',
Lines 430-440 sub create_input { Link Here
430
                maxlength => $subfield_data{maxlength},
422
                maxlength => $subfield_data{maxlength},
431
                readonly  => 0,
423
                readonly  => 0,
432
            };
424
            };
433
434
        }
425
        }
435
        # it's an hidden field
426
436
    }
427
    # it's an hidden field
437
    elsif ( $tag eq '' ) {
428
    } elsif ( $tag eq '' ) {
438
        $subfield_data{marc_value} = {
429
        $subfield_data{marc_value} = {
439
            type      => 'hidden',
430
            type      => 'hidden',
440
            id        => $subfield_data{id},
431
            id        => $subfield_data{id},
(-)a/cataloguing/additem.pl (-20 / +18 lines)
Lines 120-126 sub generate_subfield_form { Link Here
120
        
120
        
121
        $subfield_data{tag}        = $tag;
121
        $subfield_data{tag}        = $tag;
122
        $subfield_data{subfield}   = $subfieldtag;
122
        $subfield_data{subfield}   = $subfieldtag;
123
        $subfield_data{random}     = int(rand(1000000));    # why do we need 2 different randoms?
124
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
123
        $subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$subfieldlib->{lib}."\">".$subfieldlib->{lib}."</span>";
125
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
124
        $subfield_data{mandatory}  = $subfieldlib->{mandatory};
126
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
125
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
Lines 267-291 sub generate_subfield_form { Link Here
267
            ";
266
            ";
268
        }
267
        }
269
            # it's a plugin field
268
            # it's a plugin field
270
        elsif ( $subfieldlib->{value_builder} ) {
269
        elsif ( $subfieldlib->{value_builder} ) { # plugin
271
                # opening plugin
270
            require Koha::FrameworkPlugin;
272
                my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $subfieldlib->{'value_builder'};
271
            my $plugin = Koha::FrameworkPlugin->new({
273
                if (do $plugin) {
272
                name => $subfieldlib->{'value_builder'},
274
                    my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, $loop_data );
273
                item_style => 1,
275
                    my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, $loop_data );
274
            });
276
		    my $change = index($javascript, 'function Change') > -1 ?
275
            my $pars=  { dbh => $dbh, record => $temp, tagslib =>$tagslib,
277
		        "return Change$function_name($subfield_data{random}, '$subfield_data{id}');" :
276
                id => $subfield_data{id}, tabloop => $loop_data };
278
		        'return 1;';
277
            $plugin->build( $pars );
279
                    $subfield_data{marc_value} = qq[<input type="text" $attributes
278
            if( !$plugin->errstr ) {
280
                        onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
279
                #TODO Report 12176 will make this even better !
281
			onchange=" $change"
280
                my $class= 'buttonDot'. ( $plugin->noclick? ' disabled': '' );
282
                         onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
281
                my $title= $plugin->noclick? 'No popup': 'Tag editor';
283
                        <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
282
                $subfield_data{marc_value} = qq[<input type="text" $attributes /><a href="#" id="buttonDot_$subfield_data{id}" class="$class" title="$title">...</a>\n].$plugin->javascript;
284
                        $javascript];
283
            } else {
285
                } else {
284
                warn $plugin->errstr;
286
                    warn "Plugin Failed: $plugin";
285
                $subfield_data{marc_value} = "<input type=\"text\" $attributes />"; # supply default input form
287
                    $subfield_data{marc_value} = "<input type=\"text\" $attributes />"; # supply default input form
286
            }
288
                }
289
        }
287
        }
290
        elsif ( $tag eq '' ) {       # it's an hidden field
288
        elsif ( $tag eq '' ) {       # it's an hidden field
291
            $subfield_data{marc_value} = qq(<input type="hidden" $attributes />);
289
            $subfield_data{marc_value} = qq(<input type="hidden" $attributes />);
(-)a/cataloguing/plugin_launcher.pl (-16 / +7 lines)
Lines 1-6 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
4
# Copyright 2000-2002 Katipo Communications
3
# Copyright 2000-2002 Katipo Communications
5
#
4
#
6
# This file is part of Koha.
5
# This file is part of Koha.
Lines 18-38 Link Here
18
# with Koha; if not, write to the Free Software Foundation, Inc.,
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
19
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
19
21
use strict;
20
use Modern::Perl;
22
#use warnings; FIXME - Bug 2505
23
use CGI qw ( -utf8 );
21
use CGI qw ( -utf8 );
24
use C4::Context;
25
use C4::Output;
26
22
27
my $input = new CGI;
23
use Koha::FrameworkPlugin;
28
my $plugin_name="cataloguing/value_builder/".$input->param("plugin_name");
29
24
30
# opening plugin. Just check whether we are on a developer computer on a production one
25
my $input = new CGI;
31
# (the cgidir differs)
26
my $plugin= Koha::FrameworkPlugin->new( {
32
my $cgidir = C4::Context->intranetdir ."/cgi-bin";
27
    name => $input->param("plugin_name"),
33
my $vbdir = "$cgidir/cataloguing/value_builder";
28
});
34
unless (-r $vbdir and -d $vbdir) {
29
$plugin->launch({ cgi => $input });
35
	$cgidir = C4::Context->intranetdir;
36
}
37
do $cgidir."/".$plugin_name;
38
&plugin($input);
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/additem.js (+14 lines)
Lines 161-170 function cloneItemBlock(index, unique_item_fields) { Link Here
161
            });
161
            });
162
162
163
            $("#outeritemblock").append(clone);
163
            $("#outeritemblock").append(clone);
164
            BindPluginEvents(data);
164
        }
165
        }
165
    });
166
    });
166
}
167
}
167
168
169
function BindPluginEvents(data) {
170
// the script tag in data for plugins contains a document ready that binds
171
// the events for the plugin
172
// when we append, this code does not get executed anymore; so we do it here
173
    var events= data.match(/BindEventstag_\d+_subfield_._\d+/g);
174
    var i;
175
    for(i=0; i<events.length; i++) {
176
        window[events[i]]();
177
        if( i<events.length-1 && events[i]==events[i+1] ) { i++; }
178
            // normally we find the function name twice
179
    }
180
}
181
168
function clearItemBlock(node) {
182
function clearItemBlock(node) {
169
    var index = $(node).closest("div").attr('id');
183
    var index = $(node).closest("div").attr('id');
170
    var block = $("#"+index);
184
    var block = $("#"+index);
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js (-16 / +33 lines)
Lines 130-135 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
130
                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
130
                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
131
                }
131
                }
132
            }
132
            }
133
            if( $(inputs[1]).hasClass('framework_plugin') ) {
134
                var oldcontrol= original.getElementsByTagName('input')[1];
135
                AddEventHandlers( oldcontrol,inputs[1],id_input );
136
            }
133
137
134
            if (advancedMARCEditor == '0') {
138
            if (advancedMARCEditor == '0') {
135
                // when cloning a subfield, re set its label too.
139
                // when cloning a subfield, re set its label too.
Lines 172-184 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
172
                    if(buttonDot){
176
                    if(buttonDot){
173
                        // 2 possibilities :
177
                        // 2 possibilities :
174
                        try{
178
                        try{
175
                            var buttonDotOnClick = buttonDot.getAttribute('onclick');
179
                            if( $(buttonDot).hasClass('framework_plugin') ) {
176
                            if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
180
                                var oldcontrol= original.getElementsByTagName('a')[0];
177
                                var re = /\('.*'\)/i;
181
                                AddEventHandlers(oldcontrol,buttonDot,id_input);
178
                                buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
179
                                if(buttonDotOnClick){
180
                                    buttonDot.setAttribute('onclick',buttonDotOnClick);
181
                                }
182
                            } else {
182
                            } else {
183
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
183
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
184
                                    var re1 = /&index=.*',/;
184
                                    var re1 = /&index=.*',/;
Lines 267-272 function CloneSubfield(index, advancedMARCEditor){ Link Here
267
        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
267
        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
268
        linkid = id_input;
268
        linkid = id_input;
269
    }
269
    }
270
    // Plugin input
271
    if( $(inputs[1]).hasClass('framework_plugin') ) {
272
        var oldcontrol= original.getElementsByTagName('input')[1];
273
        AddEventHandlers( oldcontrol, inputs[1], linkid );
274
    }
270
275
271
    // select
276
    // select
272
    for(var i=0,len=selects.length; i<len ; i++ ){
277
    for(var i=0,len=selects.length; i<len ; i++ ){
Lines 282-297 function CloneSubfield(index, advancedMARCEditor){ Link Here
282
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
287
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
283
    }
288
    }
284
289
285
    // Changing the "..." link's onclick attribute for plugin callback
290
    // Handle click event on buttonDot for plugin
286
    var links  = clone.getElementsByTagName('a');
291
    var links  = clone.getElementsByTagName('a');
287
    var link = links[0];
292
    if( $(links[0]).hasClass('framework_plugin') ) {
288
    var buttonDotOnClick = link.getAttribute('onclick');
293
        var oldcontrol= original.getElementsByTagName('a')[0];
289
    if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
294
        AddEventHandlers( oldcontrol, links[0], linkid );
290
    var re = /\('.*'\)/i;
291
        buttonDotOnClick = buttonDotOnClick.replace(re,"('"+linkid+"')");
292
        if(buttonDotOnClick){
293
        link.setAttribute('onclick',buttonDotOnClick);
294
        }
295
    }
295
    }
296
296
297
    if(advancedMARCEditor == '0') {
297
    if(advancedMARCEditor == '0') {
Lines 325-330 function CloneSubfield(index, advancedMARCEditor){ Link Here
325
    original.parentNode.insertBefore(clone,original.nextSibling);
325
    original.parentNode.insertBefore(clone,original.nextSibling);
326
}
326
}
327
327
328
function AddEventHandlers (oldcontrol, newcontrol, newinputid ) {
329
// This function is a helper for CloneField and CloneSubfield.
330
// It adds the event handlers from oldcontrol to newcontrol.
331
// newinputid is the id attribute of the cloned controlling input field
332
// Note: This code depends on the jQuery data for events; this structure
333
// is moved to _data as of jQuery 1.8.
334
    var ev= $(oldcontrol).data('events');
335
    if(typeof ev != 'undefined') {
336
        $.each(ev, function(prop,val) {
337
            $.each(val, function(prop2,val2) {
338
                $(newcontrol).off( val2.type );
339
                $(newcontrol).on( val2.type, {id: newinputid}, val2.handler );
340
            });
341
        });
342
    }
343
}
344
328
 /**
345
 /**
329
 * This function removes or clears unwanted subfields
346
 * This function removes or clears unwanted subfields
330
 */
347
 */
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt (-2 / +6 lines)
Lines 357-364 function confirmnotdup(redirect){ Link Here
357
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.id -%]" value="[%- mv.value -%]" class="input_marceditor" tabindex="1" />
357
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.id -%]" value="[%- mv.value -%]" class="input_marceditor" tabindex="1" />
358
                    <a href="#" class="buttonDot" onclick="openAuth(this.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtypecode -%]','auth'); return false;" tabindex="1" title="Tag editor">...</a>
358
                    <a href="#" class="buttonDot" onclick="openAuth(this.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtypecode -%]','auth'); return false;" tabindex="1" title="Tag editor">...</a>
359
                [% ELSIF ( mv.type == 'text2' ) %]
359
                [% ELSIF ( mv.type == 'text2' ) %]
360
                    <input tabindex="1" type="text" id="[%- mv.id -%]" size="67" maxlength="[%- mv.maxlength -%]" name="[%- mv.id -%]" value="[%- mv.value -%]" class="input_marceditor" onfocus="Focus[%- mv.function -%]([%- mv.index_tag -%])" onblur="Blur[%- mv.function -%]([%- mv.index_tag -%]);" />
360
                    <input type="text" id="[%- mv.id -%]" size="67" maxlength="[%- mv.maxlength -%]" name="[%- mv.name -%]" value="[%- mv.value -%]" class="input_marceditor" />
361
                    <a href="#" class="buttonDot" onclick="Clic[%- mv.function -%]('[%- mv.id -%]'); return false;" title="Tag editor">...</a>
361
                    [% IF mv.noclick %]
362
                        <a href="#" class="buttonDot tag_editor disabled" tabindex="-1" title="No popup">...</a>
363
                    [% ELSE %]
364
                        <a href="#" id="buttonDot_[% mv.id %]" class="buttonDot tag_editor" title="Tag editor">...</a>
365
                    [% END %]
362
                    [% mv.javascript %]
366
                    [% mv.javascript %]
363
                [% ELSIF ( mv.type == 'text' ) %]
367
                [% ELSIF ( mv.type == 'text' ) %]
364
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.name -%]" value="[%- mv.value -%]" class="input_marceditor" tabindex="1" size="67" maxlength="[%- mv.maxlength -%]" />
368
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.name -%]" value="[%- mv.value -%]" class="input_marceditor" tabindex="1" size="67" maxlength="[%- mv.maxlength -%]" />
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt (-1 / +9 lines)
Lines 621-627 function Changefwk(FwkList) { Link Here
621
                    <span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype -%]','biblio'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span>
621
                    <span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype -%]','biblio'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span>
622
                    [% END %]
622
                    [% END %]
623
                [% ELSIF ( mv.type == 'text_complex' ) %]
623
                [% ELSIF ( mv.type == 'text_complex' ) %]
624
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.name -%]" value="[%- mv.value -%]" class="input_marceditor" tabindex="1" size="[%- mv.size -%]" maxlength="[%- mv.maxlength -%]" onfocus="Focus[%- mv.function_name -%]([%- mv.index_tag -%])" onblur="Blur[%- mv.function_name -%]([%- mv.index_tag -%])" /><span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="Clic[%- mv.function_name -%]('[%- mv.id -%]'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span>[% mv.javascript %]
624
                    <input type="text" id="[%- mv.id -%]" name="[%- mv.name -%]" value="[%- mv.value -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size -%]" maxlength="[%- mv.maxlength -%]" />
625
                    <span class="subfield_controls">
626
                        [% IF mv.noclick %]
627
                            <a href="#" class="buttonDot tag_editor disabled" tabindex="-1" title="No popup"></a>
628
                        [% ELSE %]
629
                            <a href="#" id="buttonDot_[% mv.id %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
630
                        [% END %]
631
                    </span>
632
                    [% mv.javascript %]
625
                [% ELSIF ( mv.type == 'hidden' ) %]
633
                [% ELSIF ( mv.type == 'hidden' ) %]
626
                    <input tabindex="1" type="hidden" id="[%- mv.id -%]" name="[%- mv.name -%]" size="[%- mv.size -%]" maxlength="[%- mv.maxlength -%]" value="[%- mv.value -%]" />
634
                    <input tabindex="1" type="hidden" id="[%- mv.id -%]" name="[%- mv.name -%]" size="[%- mv.size -%]" maxlength="[%- mv.maxlength -%]" value="[%- mv.value -%]" />
627
                [% ELSIF ( mv.type == 'textarea' ) %]
635
                [% ELSIF ( mv.type == 'textarea' ) %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt (-2 / +6 lines)
Lines 193-200 $(document).ready(function(){ Link Here
193
                    <input type="text" tabindex="1" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]" />
193
                    <input type="text" tabindex="1" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]" />
194
                    <a href="#" class="buttonDot" onclick="Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=[%- mv.authtypecode -%]&index=[%- mv.id -%]','[%- mv.id -%]'); return false;" title="Tag editor">...</a>
194
                    <a href="#" class="buttonDot" onclick="Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=[%- mv.authtypecode -%]&index=[%- mv.id -%]','[%- mv.id -%]'); return false;" title="Tag editor">...</a>
195
                [% ELSIF ( mv.type == 'text2' ) %]
195
                [% ELSIF ( mv.type == 'text2' ) %]
196
                    <input type="text" tabindex="1" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]"  onfocus="Focus[%- mv.function -%]([%- mv.random -%], '[%- mv.id -%]');" onblur=" Blur[%- mv.function -%]([%- mv.random -%], '[%- mv.id -%]');" />
196
                    <input type="text" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]" />
197
                    <a href="#" class="buttonDot" onclick="Clic[%- mv.function -%]('[%- mv.id -%]'); return false;" title="Tag editor">...</a>
197
                    [% IF mv.noclick %]
198
                        <a href="#" class="buttonDot disabled" title="No popup">...</a>
199
                    [% ELSE %]
200
                        <a href="#" id="buttonDot_[% mv.id %]" class="buttonDot" title="Tag editor">...</a>
201
                    [% END %]
198
                    [% mv.javascript %]
202
                    [% mv.javascript %]
199
                [% ELSIF ( mv.type == 'text' ) %]
203
                [% ELSIF ( mv.type == 'text' ) %]
200
                    <input type="text" tabindex="1" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]" />
204
                    <input type="text" tabindex="1" id="[%- mv.id -%]" name="field_value" class="input_marceditor" size="50" maxlength="255" value="[%- mv.value -%]" />
(-)a/tools/batchMod.pl (-16 / +15 lines)
Lines 326-333 foreach my $tag (sort keys %{$tagslib}) { Link Here
326
	}
326
	}
327
	$subfield_data{tag}        = $tag;
327
	$subfield_data{tag}        = $tag;
328
	$subfield_data{subfield}   = $subfield;
328
	$subfield_data{subfield}   = $subfield;
329
	$subfield_data{random}     = int(rand(1000000));    # why do we need 2 different randoms?
330
    #   $subfield_data{marc_lib}   = $tagslib->{$tag}->{$subfield}->{lib};
331
	$subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$tagslib->{$tag}->{$subfield}->{lib}."\">".$tagslib->{$tag}->{$subfield}->{lib}."</span>";
329
	$subfield_data{marc_lib}   ="<span id=\"error$i\" title=\"".$tagslib->{$tag}->{$subfield}->{lib}."\">".$tagslib->{$tag}->{$subfield}->{lib}."</span>";
332
	$subfield_data{mandatory}  = $tagslib->{$tag}->{$subfield}->{mandatory};
330
	$subfield_data{mandatory}  = $tagslib->{$tag}->{$subfield}->{mandatory};
333
	$subfield_data{repeatable} = $tagslib->{$tag}->{$subfield}->{repeatable};
331
	$subfield_data{repeatable} = $tagslib->{$tag}->{$subfield}->{repeatable};
Lines 411-436 foreach my $tag (sort keys %{$tagslib}) { Link Here
411
            value        => $value,
409
            value        => $value,
412
            authtypecode => $tagslib->{$tag}->{$subfield}->{authtypecode},
410
            authtypecode => $tagslib->{$tag}->{$subfield}->{authtypecode},
413
        }
411
        }
414
    # it's a plugin field
415
    }
412
    }
416
    elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) {
413
    elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) { # plugin
417
        # opening plugin
414
        require Koha::FrameworkPlugin;
418
        my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
415
        my $plugin = Koha::FrameworkPlugin->new( {
419
        if (do $plugin) {
416
            name => $tagslib->{$tag}->{$subfield}->{'value_builder'},
420
			my $temp;
417
            item_style => 1,
421
            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
418
        });
422
            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
419
        my $temp;
420
        my $pars= { dbh => $dbh, record => $temp, tagslib => $tagslib,
421
            id => $subfield_data{id}, tabloop => \@loop_data };
422
        $plugin->build( $pars );
423
        if( !$plugin->errstr ) {
423
            $subfield_data{marc_value} = {
424
            $subfield_data{marc_value} = {
424
                type       => 'text2',
425
                type       => 'text2',
425
                id         => $subfield_data{id},
426
                id         => $subfield_data{id},
426
                value      => $value,
427
                value      => $value,
427
                function   => $function_name,
428
                javascript => $plugin->javascript,
428
                random     => $subfield_data{random},
429
                noclick    => $plugin->noclick,
429
                javascript => $javascript,
430
            };
430
            };
431
        } else {
431
        } else {
432
            warn "Plugin Failed: $plugin";
432
            warn $plugin->errstr;
433
            $subfield_data{marc_value} = {                                      # supply default input form
433
            $subfield_data{marc_value} = { # supply default input form
434
                type       => 'text',
434
                type       => 'text',
435
                id         => $subfield_data{id},
435
                id         => $subfield_data{id},
436
                value      => $value,
436
                value      => $value,
437
- 

Return to bug 10480