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

(-)a/Koha/Template/Plugin/Combine.pm (+141 lines)
Line 0 Link Here
1
package Koha::Template::Plugin::Combine;
2
use Template::Plugin;
3
use base qw( Template::Plugin );
4
use warnings;
5
use strict;
6
7
# PLACK_DEBUG=1 always re-create files but report correct hit/miss ration
8
9
use File::Slurp;
10
use Digest::MD5;
11
use Data::Dump qw(dump);
12
13
use CSS::Minifier::XS;
14
use JavaScript::Minifier::XS;
15
16
sub new {
17
	my ($class, $context, @params) = @_;
18
#warn "## context ",dump( $context );
19
	bless {
20
		_CONTEXT => $context,
21
		js  => [], # same as extension!
22
		css => [],
23
		inline => 1,
24
		minify => 1,
25
	}, $class;
26
}
27
28
sub _html_params {
29
	my $params = shift;
30
	return join(' ', map { $_ . '="' . $params->{$_} . '"' } keys %$params );
31
}
32
33
sub javascript {
34
	my ( $self, $params ) = @_;
35
	warn "## combine.javascript ", dump( $params );
36
	$params->{type} ||= 'text/javascript';
37
	push @{ $self->{js} }, $params;
38
	my $html = _html_params( $params );
39
	if ( $self->{inline} ) {
40
		return "<!-- script $html -->\n";
41
	} elsif ( my $cdata = $params->{cdata} ) {
42
		return qq|<script type="text/javascript" language="javascript">\n//<![CDATA[\n$cdata\n//]]>\n</script>\n|;
43
	} else {
44
		return "<script $html></script>\n";
45
	}
46
}
47
48
sub css {
49
	my ( $self, $params ) = @_;
50
	warn "## combine.css ",dump( $params );
51
	$params->{rel}  ||= 'stylesheet';
52
	$params->{type} ||= 'text/css';
53
	die "no href in ",dump($params) unless exists $params->{href};
54
	my $html = _html_params( $params );
55
56
	if ( exists $params->{media} ) { # FIXME not combined!
57
		push @{ $self->{css_media} }, "<link $html />";
58
		return "<!-- media $html -->";
59
	}
60
61
	push @{ $self->{css} }, $params;
62
	if ( $self->{inline}) {
63
		return "<!-- link $html -->\n";
64
	} else {
65
		return "<link $html />\n";
66
	}
67
}
68
69
sub combined_files {
70
	my ( $self, $what, $attr, $params ) = @_;
71
warn "## combined_files $what $attr ",dump($params);
72
	my $key = join(' ', map { $_->{$attr} || $_->{cdata} } @{ $self->{$what} } );
73
	$key = Digest::MD5::md5_hex( $key ); # shorten filenames
74
	warn "# $what $attr key = $key\n";
75
	my $htdocs = C4::Context->config('intrahtdocs');
76
	$htdocs =~ s{/intranet-tmpl/?$}{}; # FIXME DocumentRoot even for OPAC
77
78
	my ( $path, $url );
79
	if ( my $prefix = $params->{prefix} ) {
80
		$path = "$htdocs/$prefix/combined/$key.$what";
81
		$url  = "$prefix/combined/$key.$what";
82
	} else {
83
		$path = "$htdocs/intranet-tmpl/combined/$key.$what";
84
		$url  = "/intranet-tmpl/combined/$key.$what";
85
	}
86
	$path =~ s{//+}{/}; # plack is picky about paths
87
	if ( -e $path ) {
88
		$Koha::Persistant::stats->{combine_files}->[0]++; # hit
89
		return $url if ! $ENV{PLACK_DEBUG}; # FIXME no caching with debug
90
	}
91
	$Koha::Persistant::stats->{combine_files}->[1]++ if ! $ENV{PLACK_DEBUG}; # miss
92
93
	my $mix;
94
	foreach my $include ( @{ $self->{$what} } ) {
95
		if ( my $path = $include->{$attr} ) {
96
			warn "combine_files $what $attr - $path";
97
			my $chunk = read_file("$htdocs/$path");
98
			die "$htdocs/$path found \@import" if $what eq 'css' && $chunk =~ m'@import';
99
			$mix .= "\n/* BEGIN $path */\n$chunk\n/* END $path */\n";
100
		} elsif ( my $cdata = $include->{cdata} ) {
101
			warn "combine_files CDATA $cdata";
102
			$mix .= "\n/* BEGIN CDATA */\n$cdata\n/* END CDATA */\n";
103
		}
104
	}
105
	my $combined_size = length($mix);
106
	if ( $self->{minify} ) {
107
		if ( $what eq 'js' ) {
108
			$mix = JavaScript::Minifier::XS::minify( $mix );
109
		} elsif ( $what eq 'css' ) {
110
			$mix = CSS::Minifier::XS::minify( $mix );
111
		} else {
112
			die "can't minify $what";
113
		}
114
		my $size = length($mix);
115
		warn sprintf "minify %s %d -> %d %.2f%%\n", $what, $combined_size, $size, $size * 100 / $combined_size;
116
	}
117
	write_file $path, $mix;
118
	warn "## $path ", -s $path, "/$combined_size bytes\n";
119
	return $url;
120
}
121
122
sub html {
123
	my ( $self, $params ) = @_;
124
125
	if ( $self->{inline} ) {
126
		warn "## css ",dump( $self->{css} );
127
		warn "## javascript ",dump( $self->{js} );
128
		my $mix;
129
		my $js  = $self->combined_files( 'js'  => 'src', $params );
130
		my $css = $self->combined_files( 'css' => 'href', $params );
131
		return qq{
132
		<!-- combined.html -->
133
		<link type="text/css" href="$css" rel="stylesheet" />
134
		<script type="text/javascript" src="$js"></script>
135
		};
136
	} else {
137
		return "<!-- javascript and css combine disabled -->";
138
	}
139
}
140
141
1;
(-)a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css (-2 / +1 lines)
Lines 1-5 Link Here
1
@import url("../lib/yui/reset-fonts-grids.css");
1
/* import moved to koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc */
2
@import url("../lib/yui/skin.css");
3
2
4
input:focus, textarea:focus {
3
input:focus, textarea:focus {
5
    border-color:#538200;
4
    border-color:#538200;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc (-23 / +27 lines)
Lines 1-44 Link Here
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2
[% USE combine = Combine %]
2
<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
3
<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
3
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/jquery-ui.css" />
4
[% combine.css( href => themelang _ "/lib/jquery/jquery-ui.css" ) %]
4
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/plugins/ui.tabs.css" />
5
[% combine.css( href => themelang _ "/lib/jquery/plugins/ui.tabs.css" ) %]
5
<link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
6
[% combine.css( media => "print" href => themelang _ "/css/print.css" ) %]
6
[% IF ( intranetstylesheet ) %]
7
[% IF ( intranetstylesheet ) %]
7
    <link rel="stylesheet" type="text/css" href="[% intranetstylesheet %]" />
8
    [% combine.css( href => intranetstylesheet ) %]
8
[% ELSE %]
9
[% ELSE %]
9
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/staff-global.css" />
10
    [% combine.css( href => yuipath _ "/reset-fonts-grids.css" ) %]
11
    [% combine.css( href => yuipath _ "/skin.css" ) %]
12
    [% combine.css( href => themelang _ "/css/staff-global.css" ) %]
10
[% END %]
13
[% END %]
11
[% IF ( IntranetUserCSS ) %]<style type="text/css">[% IntranetUserCSS %]</style>[% END %]
14
[% IF ( IntranetUserCSS ) %]<style type="text/css">[% IntranetUserCSS %]</style>[% END %]
12
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
15
[% combine.javascript( src => themelang _ "/lib/jquery/jquery.js" ) %]
13
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/ui.tabs.js"></script>
16
[% combine.javascript( src => themelang _ "/lib/jquery/plugins/ui.tabs.js" ) %]
14
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery-ui.js"></script>
17
[% combine.javascript( src => themelang _ "/lib/jquery/jquery-ui.js" ) %]
15
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.hotkeys.min.js"></script>
18
[% combine.javascript( src => themelang _ "/lib/jquery/plugins/jquery.hotkeys.min.js" ) %]
16
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.cookie.min.js"></script>
19
[% combine.javascript( src => themelang _ "/lib/jquery/plugins/jquery.cookie.min.js" ) %]
17
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.highlight-3.js"></script>
20
[% combine.javascript( src => themelang _ "/lib/jquery/plugins/jquery.highlight-3.js" ) %]
18
[% IF ( login ) %]
21
[% IF ( login ) %]
19
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/login.css" />
22
    [% combine.css( href => themelang _ "/css/login.css" ) %]
20
[% END %]
23
[% END %]
21
[% IF ( wizard ) %]
24
[% IF ( wizard ) %]
22
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/wizard.css" />
25
    [% combine.css( href => themelang _ "/css/wizard.css" ) %]
23
[% END %]
26
[% END %]
24
27
25
<!-- local colors -->
28
<!-- local colors -->
26
[% IF ( intranetcolorstylesheet ) %]
29
[% IF ( intranetcolorstylesheet ) %]
27
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% intranetcolorstylesheet %]" />
30
    [% combine.css( href => themelang _ "/css/" _ intranetcolorstylesheet ) %]
28
[% END %]
31
[% END %]
29
32
30
<!-- yui js --> 
33
<!-- yui js --> 
31
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script> 
34
[% combine.javascript( src => yuipath _ "/utilities/utilities.js" ) %] 
32
<script type="text/javascript" src="[% yuipath %]/datasource/datasource-min.js"></script>
35
[% combine.javascript( src => yuipath _ "/datasource/datasource-min.js" ) %]
33
[% IF ( CircAutocompl ) %]
36
[% IF ( CircAutocompl ) %]
34
    <script type="text/javascript" src="[% yuipath %]/autocomplete/autocomplete-min.js"></script>
37
    [% combine.javascript( src => yuipath _ "/autocomplete/autocomplete-min.js" ) %]
35
[% END %]
38
[% END %]
36
<script type="text/javascript" src="[% yuipath %]/button/button-min.js"></script> 
39
[% combine.javascript( src => yuipath _ "/button/button-min.js" ) %] 
37
<script type="text/javascript" src="[% yuipath %]/container/container_core-min.js"></script> 
40
[% combine.javascript( src => yuipath _ "/container/container_core-min.js" ) %] 
38
<script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script> 
41
[% combine.javascript( src => yuipath _ "/menu/menu-min.js" ) %] 
39
42
40
<!-- koha core js -->
43
<!-- koha core js -->
41
<script type="text/javascript" src="[% themelang %]/js/staff-global.js"></script>
44
[% combine.javascript( src => themelang _ "/js/staff-global.js" ) %]
42
[% IF ( intranetuserjs ) %]
45
[% IF ( intranetuserjs ) %]
43
    <script type="text/javascript">
46
    <script type="text/javascript">
44
    //<![CDATA[
47
    //<![CDATA[
Lines 62-74 Link Here
62
    //]]>
65
    //]]>
63
    </script>
66
    </script>
64
    [% IF ( virtualshelves || intranetbookbag ) %]
67
    [% IF ( virtualshelves || intranetbookbag ) %]
65
        <script type="text/javascript" language="javascript" src="[% themelang %]/js/basket.js"></script>
68
        [% combine.javascript( src => themelang _ "/js/basket.js" ) %]
66
    [% END %]
69
    [% END %]
67
[% IF LocalCoverImages %]
70
[% IF LocalCoverImages %]
68
<script type="text/javascript" language="javascript" src="[% themelang %]/js/localcovers.js"></script>
71
[% combine.javascript( src => themelang _ "/js/localcovers.js" ) %]
69
<script type="text/javascript" language="javascript">
72
<script type="text/javascript" language="javascript">
70
//<![CDATA[
73
//<![CDATA[
71
var NO_LOCAL_JACKET = _("No cover image available");
74
var NO_LOCAL_JACKET = _("No cover image available");
72
//]]>
75
//]]>
73
</script>
76
</script>
74
[% END %]
77
[% END %]
78
[% combine.html( prefix => themelang ) %]
(-)a/koha-tmpl/opac-tmpl/prog/en/css/opac.css (-3 lines)
Lines 1-6 Link Here
1
@import url("../lib/yui/reset-fonts-grids.css");
2
@import url("../lib/yui/skin.css");
3
4
a {
1
a {
5
	font-weight : bold;
2
	font-weight : bold;
6
}
3
}
(-)a/koha-tmpl/opac-tmpl/prog/en/includes/doc-head-close.inc (-51 / +92 lines)
Lines 2-51 Link Here
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
3
<meta name="generator" content="Koha [% Version %]" /> <!-- leave this for stats -->
4
<link rel="shortcut icon" href="[% IF ( OpacFavicon ) %][% OpacFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
4
<link rel="shortcut icon" href="[% IF ( OpacFavicon ) %][% OpacFavicon %][% ELSE %][% themelang %]/includes/favicon.ico[% END %]" type="image/x-icon" />
5
[% IF ( opacstylesheet ) %]<link rel="stylesheet" type="text/css" href="[% opacstylesheet %]" />[% ELSE %]
5
[% USE combine = Combine %]
6
[% IF ( opaclayoutstylesheet ) %]<link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaclayoutstylesheet %]" />[% ELSE %]<link rel="stylesheet" type="text/css" href="[% themelang %]/css/opac.css" />[% END %][% END %]
6
[% IF ( opacstylesheet ) %]
7
    [% combine.css( href => opacstylesheet ) %]
8
[% ELSE %]
9
    [% IF ( opaclayoutstylesheet ) %]
10
        [% combine.css( href => themelang _ "/css/" _ opaclayoutstylesheet ) %]
11
    [% ELSE %]
12
        [% combine.css( href => themelang _ "/css/opac.css" ) %]
13
    [% END %]
14
[% END %]
7
[% IF ( opaccolorstylesheet ) %]
15
[% IF ( opaccolorstylesheet ) %]
8
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opaccolorstylesheet %]" />
16
    [% combine.css( href => themelang _ "/css/" _ opaccolorstylesheet ) %]
9
[% END %]
17
[% END %]
10
[% IF ( opacexternalsheet ) %]
18
[% IF ( opacexternalsheet ) %]
11
    <link rel="stylesheet" type="text/css" href="[% opacexternalsheet %]" />
19
    [% combine.css( href => opacexternalsheet ) %]
12
[% END %]
20
[% END %]
13
[% IF ( opac_css_override ) %]
21
[% IF ( opac_css_override ) %]
14
    <link rel="stylesheet" type="text/css" href="[% themelang %]/css/[% opac_css_override %]" />
22
    [% combine.css( href => therelang _ "/css/" _ opac_css_override ) %]
15
[% END %]
23
[% END %]
16
<link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
24
<link rel="stylesheet" type="text/css" media="print" href="[% themelang %]/css/print.css" />
17
<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/jquery/plugins/ui.tabs.css" />
25
[% combine.css( href => themelang _ "/lib/jquery/plugins/ui.tabs.css" ) %]
18
[% IF ( OPACUserCSS ) %]<style type="text/css">[% OPACUserCSS %]</style>[% END %]
26
[% IF ( OPACUserCSS ) %]<style type="text/css">[% OPACUserCSS %]</style>[% END %]
19
<!-- yui js --> 
27
<!-- yui js --> 
20
<script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script> 
28
[% combine.css( href => yuipath _ "/reset-fonts-grids.css" ) %]
21
<script type="text/javascript" src="[% yuipath %]/container/container-min.js"></script> 
29
[% combine.css( href => yuipath _ "/skin.css" ) %]
22
<script type="text/javascript" src="[% yuipath %]/menu/menu-min.js"></script> 
30
[% combine.javascript( src => yuipath  _ "/utilities/utilities.js" ) %] 
23
<script type="text/javascript" src="[% themelang %]/lib/jquery/jquery.js"></script>
31
[% combine.javascript( src => yuipath  _ "/container/container-min.js" ) %] 
24
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/ui.tabs.js"></script>
32
[% combine.javascript( src => yuipath  _ "/menu/menu-min.js" ) %] 
25
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.hoverIntent.minified.js"></script>
33
[% combine.javascript( src => themelang  _ "/lib/jquery/jquery.js" ) %]
26
<script type="text/javascript" language="javascript" src="[% themelang %]/js/script.js"></script>
34
[% combine.javascript( src => themelang  _ "/lib/jquery/plugins/ui.tabs.js" ) %]
35
[% combine.javascript( src => themelang  _ "/lib/jquery/plugins/jquery.hoverIntent.minified.js" ) %]
36
[% combine.javascript( src => themelang _ "/js/script.js" ) %]
37
27
[% IF ( OPACAmazonCoverImages ) %]
38
[% IF ( OPACAmazonCoverImages ) %]
28
<script type="text/javascript" language="javascript">//<![CDATA[
39
[% combine.javascript( cdata => "var NO_AMAZON_IMAGE = _(\"No cover image available\");" ) %]
29
		var NO_AMAZON_IMAGE = _("No cover image available");
40
[% combine.javascript( src => themelang _ "/js/amazonimages.js" ) %]
30
	//]]>
31
</script>
32
<script type="text/javascript" language="javascript" src="[% themelang %]/js/amazonimages.js"></script>
33
[% END %]
41
[% END %]
34
[% IF ( SyndeticsCoverImages ) %]
42
[% IF ( SyndeticsCoverImages ) %]
35
<script type="text/javascript" language="javascript">//<![CDATA[
43
[% combine.javascript( cdata => "var NO_AMAZON_IMAGE = _(\"No cover image available\");" ) %]
36
        var NO_AMAZON_IMAGE = _("No cover image available");
44
[% combine.javascript( src => themelang _ "/js/amazonimages.js" ) %]
37
    //]]>
45
[% END %]
38
</script>
39
<script type="text/javascript" language="javascript" src="[% themelang %]/js/amazonimages.js"></script>          [% END %]
40
46
41
[% IF ( opacbookbag ) %]<script type="text/javascript" language="javascript" src="[% themelang %]/js/basket.js">
47
[% IF ( opacbookbag ) %]
42
[% ELSIF ( virtualshelves ) %]<script type="text/javascript" language="javascript" src="[% themelang %]/js/basket.js">
48
  [% combine.javascript( src => themelang _ "/js/basket.js" ) %]
43
[% ELSE %]<script type="text/javascript" language="javascript"> var readCookie;[% END %]
49
[% ELSIF ( virtualshelves ) %]
44
</script>
50
  [% combine.javascript( src => themelang _ "/js/basket.js" ) %]
51
[% ELSE %]
52
  [% combine.javascript( cdata => "var readCookie;" ) %]
53
[% END %]
45
54
55
[% combine.javascript( cdata => "var cdata_test;" ) %]
46
<script type="text/javascript" language="javascript">
56
<script type="text/javascript" language="javascript">
47
	//<![CDATA[
57
	//<![CDATA[
48
    [% IF ( opacbookbag ) %]var MSG_BASKET_EMPTY = _("Your cart is currently empty");
58
function _(s) { return s } // dummy function for gettext
59
[% IF ( opacbookbag ) %]
60
    var MSG_BASKET_EMPTY = _("Your cart is currently empty");
49
    var MSG_RECORD_IN_BASKET = _("This item is already in your cart");
61
    var MSG_RECORD_IN_BASKET = _("This item is already in your cart");
50
    var MSG_RECORD_ADDED = _("This item has been added to your cart");
62
    var MSG_RECORD_ADDED = _("This item has been added to your cart");
51
    var MSG_RECORD_REMOVED = _("This item has been removed from your cart");
63
    var MSG_RECORD_REMOVED = _("This item has been removed from your cart");
Lines 57-65 Link Here
57
    var MSG_CONFIRM_DEL_RECORDS = _("Are you sure you want to remove the selected items?");
69
    var MSG_CONFIRM_DEL_RECORDS = _("Are you sure you want to remove the selected items?");
58
    var MSG_ITEM_IN_CART = _("In your cart");
70
    var MSG_ITEM_IN_CART = _("In your cart");
59
    var MSG_ITEM_NOT_IN_CART = _("Add to your cart");
71
    var MSG_ITEM_NOT_IN_CART = _("Add to your cart");
60
	$("#cartDetails").ready(function(){ $("#cmspan").html("<a href=\"#\" id=\"cartmenulink\" class=\"\"><i><\/i><span><i><\/i><span><\/span><span id=\"carticon\"></span> "+_("Cart")+"<span id=\"basketcount\"><\/span><\/span><\/a>"); }); [% ELSE %][% IF ( virtualshelves ) %]
72
//	$("#cartDetails").ready(function(){ $("#cmspan").html("<a href=\"#\" id=\"cartmenulink\" class=\"\"><i><\/i><span><i><\/i><span><\/span><span id=\"carticon\"></span> "+_("Cart")+"<span id=\"basketcount\"><\/span><\/span><\/a>"); });
61
    var MSG_NO_RECORD_SELECTED = _("No item was selected");[% END %][% END %]
73
[% ELSE %]
62
    [% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]var MSG_TAGS_DISABLED = _("Sorry, tags are not enabled on this system.");
74
  [% IF ( virtualshelves ) %]
75
    var MSG_NO_RECORD_SELECTED = _("No item was selected");
76
  [% END %]
77
[% END %]
78
79
[% IF ( opacuserlogin ) %]
80
  [% IF ( TagsEnabled ) %]
81
    var MSG_TAGS_DISABLED = _("Sorry, tags are not enabled on this system.");
63
    var MSG_TAG_ALL_BAD = _("Error! Your tag was entirely markup code.  It was NOT added.  Please try again with plain text.");
82
    var MSG_TAG_ALL_BAD = _("Error! Your tag was entirely markup code.  It was NOT added.  Please try again with plain text.");
64
    var MSG_ILLEGAL_PARAMETER = _("Error! Illegal parameter");
83
    var MSG_ILLEGAL_PARAMETER = _("Error! Illegal parameter");
65
    var MSG_TAG_SCRUBBED = _("Note: your tag contained markup code that was removed. The tag was added as ");
84
    var MSG_TAG_SCRUBBED = _("Note: your tag contained markup code that was removed. The tag was added as ");
Lines 71-91 Link Here
71
    var MSG_TAGS_ADDED = _("Tags added: ");
90
    var MSG_TAGS_ADDED = _("Tags added: ");
72
    var MSG_TAGS_DELETED = _("Tags added: ");
91
    var MSG_TAGS_DELETED = _("Tags added: ");
73
    var MSG_TAGS_ERRORS = _("Errors: ");
92
    var MSG_TAGS_ERRORS = _("Errors: ");
74
    var MSG_MULTI_ADD_TAG_FAILED = _("Unable to add one or more tags.");[% END %][% END %]
93
    var MSG_MULTI_ADD_TAG_FAILED = _("Unable to add one or more tags.");
75
	[% IF ( OPACAmazonCoverImages ) %]$(window).load(function() {
94
  [% END %]
76
		 	verify_images();
95
[% END %]
77
		 });[% END %]
96
[% IF ( OPACAmazonCoverImages ) %]
78
	[% IF ( SyndeticsCoverImages ) %]$(window).load(function() {
97
    $(window).load(function() {
79
            verify_images();
98
        verify_images();
80
         });[% END %]
99
    });
81
	[% IF ( opacuserjs ) %][% opacuserjs %][% END %]
100
[% END %]
101
[% IF ( SyndeticsCoverImages ) %]
102
    $(window).load(function() {
103
        verify_images();
104
    });
105
[% END %]
106
[% IF ( opacuserjs ) %]
107
    [% opacuserjs %]
108
[% END %]
82
	//]]>
109
	//]]>
83
[% IF ( opacbookbag ) %]</script><script type="text/javascript" language="javascript" src="[% themelang %]/js/basket.js">
110
</script>
84
[% ELSIF ( virtualshelves ) %]</script><script type="text/javascript" language="javascript" src="[% themelang %]/js/basket.js">
111
[% IF ( opacbookbag ) %]
85
[% ELSE %]</script><script type="text/javascript" language="javascript">var readCookie;[% END %]</script>
112
[% compose.javascript( src => themelang _ "/js/basket.js" ) %]
86
[% IF ( opacuserlogin ) %][% IF ( TagsEnabled ) %]<script type="text/javascript" language="javascript" src="[% themelang %]/js/tags.js"></script>[% END %][% ELSE %][% END %]
113
[% ELSIF ( virtualshelves ) %]
114
[% compose.javascript( src => themelang _ "/js/basket.js" ) %]
115
[% ELSE %]
116
<script type="text/javascript" language="javascript">var readCookie;</script>
117
[% END %]
118
119
[% IF ( opacuserlogin ) %]
120
  [% IF ( TagsEnabled ) %]
121
    [% combine.javascript( src => themelang _ "/js/tags.js" ) %]
122
  [% END %]
123
[% END %]
124
87
[% IF ( GoogleJackets ) %]
125
[% IF ( GoogleJackets ) %]
88
<script type="text/javascript" language="javascript" src="[% themelang %]/js/google-jackets.js"></script>
126
[% combine.javascript( src => themelang _ "/js/google-jackets.js" ) %]
89
<script type="text/javascript" language="javascript">
127
<script type="text/javascript" language="javascript">
90
	//<![CDATA[
128
	//<![CDATA[
91
	var NO_GOOGLE_JACKET = _("No cover image available");
129
	var NO_GOOGLE_JACKET = _("No cover image available");
Lines 93-99 Link Here
93
</script>
131
</script>
94
[% END %]
132
[% END %]
95
[% IF OpenLibraryCovers %]
133
[% IF OpenLibraryCovers %]
96
<script type="text/javascript" language="javascript" src="[% themelang %]/js/openlibrary.js"></script>
134
[% combine.javascript( src => themelang _ "/js/openlibrary.js" ) %]
97
<script type="text/javascript" language="javascript">
135
<script type="text/javascript" language="javascript">
98
//<![CDATA[
136
//<![CDATA[
99
var NO_OL_JACKET = _("No cover image available");
137
var NO_OL_JACKET = _("No cover image available");
Lines 102-108 var NO_OL_JACKET = _("No cover image available"); Link Here
102
[% END %]
140
[% END %]
103
141
104
[% IF OPACLocalCoverImages %]
142
[% IF OPACLocalCoverImages %]
105
<script type="text/javascript" language="javascript" src="[% themelang %]/js/localcovers.js"></script>
143
[% combine.javascript( src => themelang _ "/js/localcovers.js" ) %]
106
<script type="text/javascript" language="javascript">
144
<script type="text/javascript" language="javascript">
107
//<![CDATA[
145
//<![CDATA[
108
var NO_LOCAL_JACKET = _("No cover image available");
146
var NO_LOCAL_JACKET = _("No cover image available");
Lines 110-116 var NO_LOCAL_JACKET = _("No cover image available"); Link Here
110
</script>
148
</script>
111
[% END %]
149
[% END %]
112
150
113
[% IF ( BakerTaylorEnabled ) %]<script type="text/javascript" language="javascript" src="[% themelang %]/js/bakertaylorimages.js"></script>
151
[% IF ( BakerTaylorEnabled ) %]
152
[% combine.javascript( src => themelang _ "/js/bakertaylorimages.js" ) %]
114
<script type="text/javascript" language="javascript">
153
<script type="text/javascript" language="javascript">
115
	//<![CDATA[
154
	//<![CDATA[
116
	var NO_BAKERTAYLOR_IMAGE = _("No cover image available");
155
	var NO_BAKERTAYLOR_IMAGE = _("No cover image available");
Lines 118-127 var NO_LOCAL_JACKET = _("No cover image available"); Link Here
118
		bt_verify_images();
157
		bt_verify_images();
119
	});
158
	});
120
	//]]>
159
	//]]>
121
</script>[% END %]
160
</script>
161
[% END %]
162
122
<link rel="unapi-server" type="application/xml" title="unAPI" href="[% OPACBaseURL %]/cgi-bin/koha/unapi" />
163
<link rel="unapi-server" type="application/xml" title="unAPI" href="[% OPACBaseURL %]/cgi-bin/koha/unapi" />
123
[% IF ( GoogleIndicTransliteration ) %]
164
[% IF ( GoogleIndicTransliteration ) %]
124
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
165
	<script type="text/javascript" src="http://www.google.com/jsapi"></script>
125
        <script type="text/javascript" language="javascript" src="[% themelang %]/js/googleindictransliteration.js"></script>
166
        [% combine.javascript( src => themelang _ "/js/googleindictransliteration.js" ) %]
126
[% END %]
167
[% END %]
127
168
[% combine.html( prefix => themelang ) %]
(-)a/koha-tmpl/opac-tmpl/prog/en/js/script.js (-2 lines)
Lines 1-4 Link Here
1
function _(s) { return s } // dummy function for gettext
2
function confirmDelete(message) {
1
function confirmDelete(message) {
3
	return (confirm(message) ? true : false);
2
	return (confirm(message) ? true : false);
4
}
3
}
5
- 

Return to bug 1918