PageSourceSearch

https://www.lhm.org/wp-content/plugins/zeno-font-resizer/js/zeno-font-resizer.js?ver=2.0.0

js lhm.org collected 2026-10-01 11:48:42 UTC 6,583 bytes, 229 lines download raw bytes

1/*
2
3WordPress Plugin: Zeno Font Resizer.
4Plugin URI: https://wordpress.org/plugins/zeno-font-resizer/
5
6Copyright 2010 - 2013  Cubetech GmbH
7Copyright 2015 - 2026  Marcel Pol  ([email protected])
8License: GPLv2 or later
9
10This program is free software; you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation; either version 2 of the License, or
13(at your option) any later version.
14
15This program is distributed in the hope that it will be useful,
16but WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18GNU General Public License for more details.
19
20You should have received a copy of the GNU General Public License
21along with this program; if not, write to the Free Software
22Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23*/
24
25
26document.addEventListener('DOMContentLoaded', function () {
27
28	var zeno_font_resizer_settings = {
29		element:     zeno_font_resizer_script.element,
30		resizemax:   parseInt( zeno_font_resizer_script.resizemax ),
31		resizemin:   parseInt( zeno_font_resizer_script.resizemin ),
32		resizesteps: parseFloat( zeno_font_resizer_script.resizesteps ),
33		cookietime:  parseInt( zeno_font_resizer_script.cookietime ),
34		startsize:   parseFloat( zeno_font_resizer_get_fontsize() ), // Runs before applying the saved size below.
35	};
36
37
38	// restore previous setting from cookie into html fontsize. Runs after setting the startsize in settings.
39	var savedsize = parseFloat( zeno_font_resizer_get_cookie() );
40	if ( savedsize > zeno_font_resizer_script.resizemin && savedsize < zeno_font_resizer_script.resizemax ) {
41		zeno_font_resizer_set_fontsize( savedsize );
42	}
43
44
45	/*
46	 * Will set the fontsize of the desired element.
47	 * Will also save this in a cookie.
48	 * Will not do anything in case the html element does not exist.
49	 *
50	 * @param fontsize float desired fontsize to be set.
51	 *
52	 * @since 2.0.0
53	 */
54	function zeno_font_resizer_set_fontsize( fontsize ) {
55
56		var element_name = zeno_font_resizer_settings.element;
57		if ( element_name ) {
58			var element = document.querySelector( element_name );
59			if ( element ) {
60
61				element.style.fontSize = fontsize + 'px';
62
63				zeno_font_resizer_set_cookie( fontsize );
64
65			}
66		}
67
68	}
69
70
71	/*
72	 * Will get the current fontsize of the desired element.
73	 *
74	 * Takes 3 steps to arrive at 1 value; have 15 as default, use the html element, and use the custom element.
75	 * The last found value will be used.
76	 *
77	 * @return fontsize float the current fontsize.
78	 *
79	 * @since 2.0.0
80	 */
81	function zeno_font_resizer_get_fontsize() {
82
83		var fontsize = 15;
84
85		var element_name = 'html';
86		if ( element_name ) {
87			var element = document.querySelector( element_name );
88			if ( element ) {
89				fontsize = element.style.fontSize;
90				if ( ! fontsize ) {
91					fontsize = getComputedStyle(element).fontSize;
92				}
93			}
94		}
95
96		var element_name = zeno_font_resizer_script.element;
97		if ( element_name ) {
98			var element = document.querySelector( element_name );
99			if ( element ) {
100				fontsize = element.style.fontSize;
101				if ( ! fontsize ) {
102					fontsize = getComputedStyle(element).fontSize;
103				}
104			}
105		}
106
107		if ( typeof fontsize === 'string' || fontsize instanceof String ) {
108			fontsize = fontsize.replace( 'px', '' );
109		}
110
111		return parseFloat( fontsize );
112
113	}
114
115
116	/*
117	 * Will save the new fontsize in a cookie.
118	 *
119	 * @param fontsize float the desired fontsize to be set.
120	 *
121	 * @since 2.0.0
122	 */
123	function zeno_font_resizer_set_cookie( fontsize ) {
124
125		var expires;
126		var days = parseInt( zeno_font_resizer_settings.cookietime );
127
128		if ( days ) {
129			var date = new Date();
130			date.setTime( date.getTime() + ( days * 24 * 60 * 60 * 1000 ) );
131			expires = '; expires=' + date.toGMTString();
132		} else {
133			expires = '';
134		}
135
136		document.cookie = 'fontSize=' + parseFloat( fontsize ) + expires + "; path=/";
137
138	}
139
140
141	/*
142	 * Will get the fontsize from a cookie.
143	 *
144	 * @return fontsize string the value of the cookie.
145	 *
146	 * @since 2.0.0
147	 */
148	function zeno_font_resizer_get_cookie() {
149
150		var name = 'fontSize';
151		if ( document.cookie.length > 0 ) {
152			c_start = document.cookie.indexOf( name + "=");
153			if ( c_start != -1 ) {
154				c_start = c_start + name.length + 1;
155				c_end = document.cookie.indexOf(";", c_start);
156				if ( c_end == -1 ) {
157					c_end = document.cookie.length;
158				}
159				return unescape(document.cookie.substring(c_start, c_end));
160			}
161		}
162
163		return '';
164
165	}
166
167
168	document.querySelectorAll( '.zeno_font_resizer_add' ).forEach( button => {
169		button.addEventListener( 'click', function (e) {
170
171			var fontsize = zeno_font_resizer_get_fontsize();
172			var resizesteps = parseFloat( zeno_font_resizer_settings.resizesteps );
173			var startsize = parseFloat( zeno_font_resizer_settings.startsize );
174			var newfontsize = fontsize + resizesteps;
175			var maxfontsize = startsize + ( resizesteps * 5 ); // max 5 steps
176			if ( newfontsize > maxfontsize) {
177				return false;
178			}
179			if ( newfontsize > zeno_font_resizer_settings.resizemax ) {
180				return false;
181			}
182			newfontsize = newfontsize.toFixed(2); // rounded to 2 decimals and converted to string.
183
184			zeno_font_resizer_set_fontsize( parseFloat( newfontsize ) );
185
186			e.preventDefault();
187			return false;
188
189		});
190	});
191
192
193	document.querySelectorAll( '.zeno_font_resizer_minus' ).forEach( button => {
194		button.addEventListener( 'click', function (e) {
195
196			var fontsize = zeno_font_resizer_get_fontsize();
197			var resizesteps = parseFloat( zeno_font_resizer_settings.resizesteps );
198			var startsize = parseFloat( zeno_font_resizer_settings.startsize );
199			var newfontsize = fontsize - resizesteps;
200			var minfontsize = startsize - ( resizesteps * 5 ); // max 5 steps
201			if ( newfontsize < minfontsize) {
202				return false;
203			}
204			if ( newfontsize < zeno_font_resizer_settings.resizemin ) {
205				return false;
206			}
207			newfontsize = newfontsize.toFixed(2); // rounded to 2 decimals and converted to string.
208
209			zeno_font_resizer_set_fontsize( parseFloat( newfontsize ) );
210
211			e.preventDefault();
212			return false;
213
214		});
215	});
216
217
218	document.querySelectorAll( '.zeno_font_resizer_reset' ).forEach( button => {
219		button.addEventListener( 'click', function (e) {
220
221			zeno_font_resizer_set_fontsize( zeno_font_resizer_settings.startsize );
222
223			e.preventDefault();
224			return false;
225
226		});
227	});
228
229});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.