xref: /plugin/pagecss/vendor/csstidy-2.2.1/css_optimiser.php (revision 7d6669007238fef7e8728f167d637ed824899eb0)
1*7d666900SdWiGhT<?php
2*7d666900SdWiGhT
3*7d666900SdWiGhT/**
4*7d666900SdWiGhT * CSSTidy - CSS Optimiser Interface
5*7d666900SdWiGhT * This file produces an XHTML interface for optimising CSS code
6*7d666900SdWiGhT *
7*7d666900SdWiGhT * Copyright 2005, 2006, 2007 Florian Schmitz
8*7d666900SdWiGhT *
9*7d666900SdWiGhT * This file is part of CSSTidy.
10*7d666900SdWiGhT *
11*7d666900SdWiGhT *  CSSTidy is free software; you can redistribute it and/or modify
12*7d666900SdWiGhT *  it under the terms of the GNU Lesser General Public License as published by
13*7d666900SdWiGhT *  the Free Software Foundation; either version 2.1 of the License, or
14*7d666900SdWiGhT *   (at your option) any later version.
15*7d666900SdWiGhT *
16*7d666900SdWiGhT *   CSSTidy is distributed in the hope that it will be useful,
17*7d666900SdWiGhT *   but WITHOUT ANY WARRANTY; without even the implied warranty of
18*7d666900SdWiGhT *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19*7d666900SdWiGhT *   GNU Lesser General Public License for more details.
20*7d666900SdWiGhT *
21*7d666900SdWiGhT *   You should have received a copy of the GNU Lesser General Public License
22*7d666900SdWiGhT *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
23*7d666900SdWiGhT *
24*7d666900SdWiGhT * @license http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License
25*7d666900SdWiGhT * @package csstidy
26*7d666900SdWiGhT * @author Florian Schmitz (floele at gmail dot com) 2005-2007
27*7d666900SdWiGhT * @author Brett Zamir (brettz9 at yahoo dot com) 2007
28*7d666900SdWiGhT */
29*7d666900SdWiGhT
30*7d666900SdWiGhTrequire('class.csstidy.php');
31*7d666900SdWiGhTrequire('lang.inc.php');
32*7d666900SdWiGhT
33*7d666900SdWiGhTif (!file_exists(__DIR__ . DIRECTORY_SEPARATOR . ".unlock_css_optimiser")) {
34*7d666900SdWiGhT		print 'Access Denied. Add a file `.unlock_css_optimiser` to the directory to unlock css_optimiser';
35*7d666900SdWiGhT		exit;
36*7d666900SdWiGhT}
37*7d666900SdWiGhT
38*7d666900SdWiGhT
39*7d666900SdWiGhTif (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
40*7d666900SdWiGhT	if (isset($_REQUEST['css_text'])) {
41*7d666900SdWiGhT		$_REQUEST['css_text'] = stripslashes($_REQUEST['css_text']);
42*7d666900SdWiGhT	}
43*7d666900SdWiGhT	if (isset($_REQUEST['custom'])) {
44*7d666900SdWiGhT		$_REQUEST['custom'] = stripslashes($_REQUEST['custom']);
45*7d666900SdWiGhT	}
46*7d666900SdWiGhT	if (isset($_COOKIE['custom_template'])) {
47*7d666900SdWiGhT		$_COOKIE['custom_template'] = stripslashes($_COOKIE['custom_template']);
48*7d666900SdWiGhT	}
49*7d666900SdWiGhT}
50*7d666900SdWiGhT
51*7d666900SdWiGhTfunction rmdirr($dirname,$oc=0)
52*7d666900SdWiGhT{
53*7d666900SdWiGhT	// Sanity check
54*7d666900SdWiGhT	if (!file_exists($dirname)) {
55*7d666900SdWiGhT		return false;
56*7d666900SdWiGhT	}
57*7d666900SdWiGhT	// Simple delete for a file
58*7d666900SdWiGhT	if (is_file($dirname) && (time()-fileatime($dirname))>3600) {
59*7d666900SdWiGhT		 return unlink($dirname);
60*7d666900SdWiGhT	}
61*7d666900SdWiGhT	// Loop through the folder
62*7d666900SdWiGhT	if (is_dir($dirname)) {
63*7d666900SdWiGhT		$dir = dir($dirname);
64*7d666900SdWiGhT		while (false !== $entry = $dir->read()) {
65*7d666900SdWiGhT			// Skip pointers
66*7d666900SdWiGhT			if ($entry === '.' || $entry === '..') {
67*7d666900SdWiGhT				 continue;
68*7d666900SdWiGhT			}
69*7d666900SdWiGhT			// Recurse
70*7d666900SdWiGhT			rmdirr($dirname.'/'.$entry,$oc);
71*7d666900SdWiGhT		}
72*7d666900SdWiGhT		$dir->close();
73*7d666900SdWiGhT	}
74*7d666900SdWiGhT	// Clean up
75*7d666900SdWiGhT	if ($oc==1) {
76*7d666900SdWiGhT		return rmdir($dirname);
77*7d666900SdWiGhT	}
78*7d666900SdWiGhT}
79*7d666900SdWiGhT
80*7d666900SdWiGhTfunction options($options, $selected = null, $labelIsValue = false)
81*7d666900SdWiGhT{
82*7d666900SdWiGhT	$html = '';
83*7d666900SdWiGhT
84*7d666900SdWiGhT	settype($selected, 'array');
85*7d666900SdWiGhT	settype($options, 'array');
86*7d666900SdWiGhT
87*7d666900SdWiGhT	foreach ($options as $value=>$label) {
88*7d666900SdWiGhT		if (is_array($label)) {
89*7d666900SdWiGhT			$value = $label[0];
90*7d666900SdWiGhT			$label = $label[1];
91*7d666900SdWiGhT		}
92*7d666900SdWiGhT		$label = htmlspecialchars($label, ENT_QUOTES, 'utf-8');
93*7d666900SdWiGhT		$value = $labelIsValue ? $label
94*7d666900SdWiGhT								 : htmlspecialchars($value, ENT_QUOTES, 'utf-8');
95*7d666900SdWiGhT
96*7d666900SdWiGhT		$html .= '<option value="'.$value.'"';
97*7d666900SdWiGhT		if (in_array($value, $selected)) {
98*7d666900SdWiGhT			$html .= ' selected="selected"';
99*7d666900SdWiGhT		}
100*7d666900SdWiGhT		$html .= '>'.$label.'</option>';
101*7d666900SdWiGhT	}
102*7d666900SdWiGhT	if (!$html) {
103*7d666900SdWiGhT		$html .= '<option value="0">---</option>';
104*7d666900SdWiGhT	}
105*7d666900SdWiGhT
106*7d666900SdWiGhT	return $html;
107*7d666900SdWiGhT}
108*7d666900SdWiGhT
109*7d666900SdWiGhT$css = new csstidy();
110*7d666900SdWiGhT$is_custom = isset($_REQUEST['custom']) && !empty($_REQUEST['custom']) && isset($_REQUEST['template']) && ($_REQUEST['template'] === '4');
111*7d666900SdWiGhTif ($is_custom)
112*7d666900SdWiGhT{
113*7d666900SdWiGhT	setcookie ('custom_template', $_REQUEST['custom'], time()+360000);
114*7d666900SdWiGhT}
115*7d666900SdWiGhT
116*7d666900SdWiGhTrmdirr('temp');
117*7d666900SdWiGhT
118*7d666900SdWiGhTif (isset($_REQUEST['case_properties'])) $css->set_cfg('case_properties',$_REQUEST['case_properties']);
119*7d666900SdWiGhTif (isset($_REQUEST['lowercase'])) $css->set_cfg('lowercase_s',true);
120*7d666900SdWiGhTif (!isset($_REQUEST['compress_c']) && isset($_REQUEST['post'])) $css->set_cfg('compress_colors',false);
121*7d666900SdWiGhTif (!isset($_REQUEST['compress_fw']) && isset($_REQUEST['post'])) $css->set_cfg('compress_font-weight',false);
122*7d666900SdWiGhTif (isset($_REQUEST['merge_selectors'])) $css->set_cfg('merge_selectors', $_REQUEST['merge_selectors']);
123*7d666900SdWiGhTif (isset($_REQUEST['optimise_shorthands'])) $css->set_cfg('optimise_shorthands',$_REQUEST['optimise_shorthands']);
124*7d666900SdWiGhTif (!isset($_REQUEST['rbs']) && isset($_REQUEST['post'])) $css->set_cfg('remove_bslash',false);
125*7d666900SdWiGhTif (isset($_REQUEST['preserve_css'])) $css->set_cfg('preserve_css',true);
126*7d666900SdWiGhTif (isset($_REQUEST['sort_sel'])) $css->set_cfg('sort_selectors',true);
127*7d666900SdWiGhTif (isset($_REQUEST['sort_de'])) $css->set_cfg('sort_properties',true);
128*7d666900SdWiGhTif (isset($_REQUEST['remove_last_sem'])) $css->set_cfg('remove_last_;',true);
129*7d666900SdWiGhTif (isset($_REQUEST['discard'])) $css->set_cfg('discard_invalid_properties',true);
130*7d666900SdWiGhTif (isset($_REQUEST['css_level'])) $css->set_cfg('css_level',$_REQUEST['css_level']);
131*7d666900SdWiGhTif (isset($_REQUEST['timestamp'])) $css->set_cfg('timestamp',true);
132*7d666900SdWiGhTif (isset($_REQUEST['rtl'])) $css->set_cfg('reverse_left_and_right',true);
133*7d666900SdWiGhT
134*7d666900SdWiGhT
135*7d666900SdWiGhT// This by itself is enough since our scripts don't use DOM to create elements (in which case the namespace aware ones
136*7d666900SdWiGhT// should be used when serving as application/xhtml+xml but not when served as text/html ;
137*7d666900SdWiGhT// also, case will be different when retrieving element names, as HTML DOM returns in upper case,
138*7d666900SdWiGhT// genuine XHTML DOM (when XHTML served as such) as lower
139*7d666900SdWiGhTif (stristr($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml')) {
140*7d666900SdWiGhT	$http_accept = 'application/xhtml+xml';
141*7d666900SdWiGhT} elseif (stristr($_SERVER['HTTP_ACCEPT'], 'application/xml')) {
142*7d666900SdWiGhT	$http_accept = 'application/xml';
143*7d666900SdWiGhT} elseif (stristr($_SERVER['HTTP_ACCEPT'], 'text/xml')) {
144*7d666900SdWiGhT	$http_accept = 'text/xml';
145*7d666900SdWiGhT} elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Opera ') || stristr($_SERVER['HTTP_USER_AGENT'], 'Opera/')) {
146*7d666900SdWiGhT	preg_match('@Opera/(\d)@', $_SERVER['HTTP_USER_AGENT'], $matches);
147*7d666900SdWiGhT	if (isset($matches[1]) && $matches[1] >= 7) {
148*7d666900SdWiGhT		$http_accept = 'application/xhtml+xml';
149*7d666900SdWiGhT	} else {
150*7d666900SdWiGhT		$http_accept = 'text/html';
151*7d666900SdWiGhT	}
152*7d666900SdWiGhT} else {
153*7d666900SdWiGhT	$http_accept = 'text/html';
154*7d666900SdWiGhT}
155*7d666900SdWiGhT
156*7d666900SdWiGhTheader('Content-Type: '.$http_accept.'; charset=utf-8');
157*7d666900SdWiGhT
158*7d666900SdWiGhTif ($http_accept === 'text/html') {
159*7d666900SdWiGhT
160*7d666900SdWiGhT?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
161*7d666900SdWiGhT	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
162*7d666900SdWiGhT<?php
163*7d666900SdWiGhT} else {
164*7d666900SdWiGhT
165*7d666900SdWiGhT?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
166*7d666900SdWiGhT<?php
167*7d666900SdWiGhT}
168*7d666900SdWiGhT
169*7d666900SdWiGhT?><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $l; ?>">
170*7d666900SdWiGhT	<head>
171*7d666900SdWiGhT	<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
172*7d666900SdWiGhT	<title>
173*7d666900SdWiGhT		<?php echo $lang[$l][0]; echo $css->version; ?>)
174*7d666900SdWiGhT	</title>
175*7d666900SdWiGhT	<link rel="stylesheet" href="cssparse.css" type="text/css" />
176*7d666900SdWiGhT	<script type="text/javascript"><!--/*--><![CDATA[/*><!--*/
177*7d666900SdWiGhT	function enable_disable_preserve() {
178*7d666900SdWiGhT		var inputs =   new Array('sort_sel', 'sort_de', 'optimise_shorthands', 'merge_selectors', 'none');
179*7d666900SdWiGhT		var inputs_v = new Array( true,       true,      true,                  true,              false);
180*7d666900SdWiGhT		for (var i = 0; i < inputs.length; i++) {
181*7d666900SdWiGhT			if (document.getElementById('preserve_css').checked)  {
182*7d666900SdWiGhT				document.getElementById(inputs[i]).disabled = inputs_v[i];
183*7d666900SdWiGhT			} else {
184*7d666900SdWiGhT				document.getElementById(inputs[i]).disabled = !inputs_v[i];
185*7d666900SdWiGhT			}
186*7d666900SdWiGhT		}
187*7d666900SdWiGhT	}
188*7d666900SdWiGhT	function ClipBoard() {
189*7d666900SdWiGhT		if (window.clipboardData) { // Feature testing
190*7d666900SdWiGhT			window.clipboardData.setData('Text',document.getElementById("copytext").innerText);
191*7d666900SdWiGhT		} else if (navigator.userAgent.indexOf('Gecko') != -1
192*7d666900SdWiGhT					&& navigator.userAgent.indexOf('Apple') == -1
193*7d666900SdWiGhT					) {
194*7d666900SdWiGhT			try {
195*7d666900SdWiGhT				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
196*7d666900SdWiGhT				const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].
197*7d666900SdWiGhT									getService(Components.interfaces.nsIClipboardHelper);
198*7d666900SdWiGhT									gClipboardHelper.copyString(document.getElementById("copytext").innerHTML);
199*7d666900SdWiGhT			}
200*7d666900SdWiGhT			catch (e) {
201*7d666900SdWiGhT				alert(e+"\n\n"+"<?php echo $lang[$l][66] ?>");
202*7d666900SdWiGhT			}
203*7d666900SdWiGhT		} else {
204*7d666900SdWiGhT			alert("<?php echo $lang[$l][60]; ?>");
205*7d666900SdWiGhT		}
206*7d666900SdWiGhT	}
207*7d666900SdWiGhT	/*]]>*/-->
208*7d666900SdWiGhT	</script>
209*7d666900SdWiGhT	</head>
210*7d666900SdWiGhT	<body onload="enable_disable_preserve()">
211*7d666900SdWiGhT	<div><h1 style="display:inline">
212*7d666900SdWiGhT		<?php echo $lang[$l][1]; ?>
213*7d666900SdWiGhT	</h1>
214*7d666900SdWiGhT	<?php echo $lang[$l][2]; ?> <a
215*7d666900SdWiGhT		href="http://csstidy.sourceforge.net/">csstidy</a> <?php echo $css->version; ?>)
216*7d666900SdWiGhT	</div><p>
217*7d666900SdWiGhT	<?php echo $lang[$l][39]; ?>: <a hreflang="en" href="?lang=en">English</a> <a hreflang="de" href="?lang=de">Deutsch</a> <a hreflang="fr" href="?lang=fr">French</a> <a hreflang="zh" href="?lang=zh">Chinese</a></p>
218*7d666900SdWiGhT	<p><?php echo $lang[$l][4]; ?>
219*7d666900SdWiGhT		<?php echo $lang[$l][6]; ?>
220*7d666900SdWiGhT	</p>
221*7d666900SdWiGhT
222*7d666900SdWiGhT	<form method="post" action="">
223*7d666900SdWiGhT		<div>
224*7d666900SdWiGhT		<fieldset id="field_input">
225*7d666900SdWiGhT			<legend><?php echo $lang[$l][8]; ?></legend> <label for="css_text"
226*7d666900SdWiGhT			class="block"><?php echo $lang[$l][9]; ?></label><textarea id="css_text" name="css_text" rows="20" cols="35"><?php if (isset($_REQUEST['css_text'])) echo htmlspecialchars($_REQUEST['css_text'], ENT_QUOTES, "utf-8"); ?></textarea>
227*7d666900SdWiGhT			<label for="url"><?php echo $lang[$l][10]; ?></label> <input type="text"
228*7d666900SdWiGhT			name="url" id="url" <?php if (isset($_REQUEST['url']) &&
229*7d666900SdWiGhT			!empty($_REQUEST['url'])) echo 'value="',htmlspecialchars($_REQUEST['url'], ENT_QUOTES, 'utf-8'),'"'; ?>
230*7d666900SdWiGhT			size="35" /><br />
231*7d666900SdWiGhT			<input type="submit" value="<?php echo $lang[$l][35]; ?>" id="submit" />
232*7d666900SdWiGhT		</fieldset>
233*7d666900SdWiGhT		<div id="rightcol">
234*7d666900SdWiGhT			<fieldset id="code_layout">
235*7d666900SdWiGhT			<legend><?php echo $lang[$l][11]; ?></legend> <label for="template"
236*7d666900SdWiGhT			class="block"><?php echo $lang[$l][12]; ?></label> <select
237*7d666900SdWiGhT			id="template" name="template" style="margin-bottom:1em">
238*7d666900SdWiGhT				<?php
239*7d666900SdWiGhT				$num = (isset($_REQUEST['template'])) ? intval($_REQUEST['template']) : 1;
240*7d666900SdWiGhT				echo options(array(3 => $lang[$l][13], 2 => $lang[$l][14], 1 => $lang[$l][15], 0 => $lang[$l][16], 4 => $lang[$l][17]), $num);
241*7d666900SdWiGhT				?>
242*7d666900SdWiGhT			</select><br />
243*7d666900SdWiGhT			<label for="custom" class="block">
244*7d666900SdWiGhT			<?php echo $lang[$l][18]; ?> </label> <textarea id="custom"
245*7d666900SdWiGhT			name="custom" cols="33" rows="4"><?php
246*7d666900SdWiGhT				 if ($is_custom) echo
247*7d666900SdWiGhT				htmlspecialchars($_REQUEST['custom'], ENT_QUOTES, 'utf-8');
248*7d666900SdWiGhT				 elseif(isset($_COOKIE['custom_template']) &&
249*7d666900SdWiGhT				!empty($_COOKIE['custom_template'])) echo
250*7d666900SdWiGhT				htmlspecialchars($_COOKIE['custom_template'], ENT_QUOTES, 'utf-8');
251*7d666900SdWiGhT				 ?></textarea>
252*7d666900SdWiGhT			</fieldset>
253*7d666900SdWiGhT			<fieldset id="options">
254*7d666900SdWiGhT		 <legend><?php echo $lang[$l][19]; ?></legend>
255*7d666900SdWiGhT
256*7d666900SdWiGhT			<input onchange="enable_disable_preserve()" type="checkbox" name="preserve_css" id="preserve_css"
257*7d666900SdWiGhT					 <?php if ($css->get_cfg('preserve_css')) echo 'checked="checked"'; ?> />
258*7d666900SdWiGhT			<label for="preserve_css" title="<?php echo $lang[$l][52]; ?>" class="help"><?php echo $lang[$l][51]; ?></label><br />
259*7d666900SdWiGhT
260*7d666900SdWiGhT
261*7d666900SdWiGhT			<input type="checkbox" name="sort_sel" id="sort_sel"
262*7d666900SdWiGhT					 <?php if ($css->get_cfg('sort_selectors')) echo 'checked="checked"'; ?> />
263*7d666900SdWiGhT			<label for="sort_sel" title="<?php echo $lang[$l][41]; ?>" class="help"><?php echo $lang[$l][20]; ?></label><br />
264*7d666900SdWiGhT
265*7d666900SdWiGhT
266*7d666900SdWiGhT			<input type="checkbox" name="sort_de" id="sort_de"
267*7d666900SdWiGhT					 <?php if ($css->get_cfg('sort_properties')) echo 'checked="checked"'; ?> />
268*7d666900SdWiGhT			<label for="sort_de"><?php echo $lang[$l][21]; ?></label><br />
269*7d666900SdWiGhT
270*7d666900SdWiGhT
271*7d666900SdWiGhT			<label for="merge_selectors"><?php echo $lang[$l][22]; ?></label>
272*7d666900SdWiGhT			<select style="width:15em;" name="merge_selectors" id="merge_selectors">
273*7d666900SdWiGhT				<?php echo options(array('0' => $lang[$l][47], '1' => $lang[$l][48], '2' => $lang[$l][49]), $css->get_cfg('merge_selectors')); ?>
274*7d666900SdWiGhT			</select><br />
275*7d666900SdWiGhT
276*7d666900SdWiGhT			<label for="optimise_shorthands"><?php echo $lang[$l][23]; ?></label>
277*7d666900SdWiGhT			<select name="optimise_shorthands" id="optimise_shorthands">
278*7d666900SdWiGhT			<?php echo options(array($lang[$l][54], $lang[$l][55], $lang[$l][56]), $css->get_cfg('optimise_shorthands')); ?>
279*7d666900SdWiGhT			</select><br />
280*7d666900SdWiGhT
281*7d666900SdWiGhT
282*7d666900SdWiGhT			<input type="checkbox" name="compress_c" id="compress_c"
283*7d666900SdWiGhT					 <?php if ($css->get_cfg('compress_colors')) echo 'checked="checked"';?> />
284*7d666900SdWiGhT			<label for="compress_c"><?php echo $lang[$l][24]; ?></label><br />
285*7d666900SdWiGhT
286*7d666900SdWiGhT
287*7d666900SdWiGhT			<input type="checkbox" name="compress_fw" id="compress_fw"
288*7d666900SdWiGhT					 <?php if ($css->get_cfg('compress_font-weight')) echo 'checked="checked"';?> />
289*7d666900SdWiGhT			<label for="compress_fw"><?php echo $lang[$l][45]; ?></label><br />
290*7d666900SdWiGhT
291*7d666900SdWiGhT
292*7d666900SdWiGhT			<input type="checkbox" name="lowercase" id="lowercase" value="lowercase"
293*7d666900SdWiGhT					 <?php if ($css->get_cfg('lowercase_s')) echo 'checked="checked"'; ?> />
294*7d666900SdWiGhT			<label title="<?php echo $lang[$l][30]; ?>" class="help" for="lowercase"><?php echo $lang[$l][25]; ?></label><br />
295*7d666900SdWiGhT
296*7d666900SdWiGhT
297*7d666900SdWiGhT			<?php echo $lang[$l][26]; ?><br />
298*7d666900SdWiGhT			<input type="radio" name="case_properties" id="none" value="0"
299*7d666900SdWiGhT					 <?php if ($css->get_cfg('case_properties') === 0) echo 'checked="checked"'; ?> />
300*7d666900SdWiGhT			<label for="none"><?php echo $lang[$l][53]; ?></label>
301*7d666900SdWiGhT			<input type="radio" name="case_properties" id="lower_yes" value="1"
302*7d666900SdWiGhT					 <?php if ($css->get_cfg('case_properties') === 1) echo 'checked="checked"'; ?> />
303*7d666900SdWiGhT			<label for="lower_yes"><?php echo $lang[$l][27]; ?></label>
304*7d666900SdWiGhT			<input type="radio" name="case_properties" id="upper_yes" value="2"
305*7d666900SdWiGhT					 <?php if ($css->get_cfg('case_properties') === 2) echo 'checked="checked"'; ?> />
306*7d666900SdWiGhT			<label for="upper_yes"><?php echo $lang[$l][29]; ?></label><br />
307*7d666900SdWiGhT
308*7d666900SdWiGhT			<input type="checkbox" name="rbs" id="rbs"
309*7d666900SdWiGhT					 <?php if ($css->get_cfg('remove_bslash')) echo 'checked="checked"'; ?> />
310*7d666900SdWiGhT			<label for="rbs"><?php echo $lang[$l][31]; ?></label><br />
311*7d666900SdWiGhT
312*7d666900SdWiGhT
313*7d666900SdWiGhT			<input type="checkbox" id="remove_last_sem" name="remove_last_sem"
314*7d666900SdWiGhT					 <?php if ($css->get_cfg('remove_last_;')) echo 'checked="checked"'; ?> />
315*7d666900SdWiGhT	 			<label for="remove_last_sem"><?php echo $lang[$l][42]; ?></label><br />
316*7d666900SdWiGhT
317*7d666900SdWiGhT
318*7d666900SdWiGhT			<input type="checkbox" id="discard" name="discard"
319*7d666900SdWiGhT					 <?php if ($css->get_cfg('discard_invalid_properties')) echo 'checked="checked"'; ?> />
320*7d666900SdWiGhT			<label for="discard"><?php echo $lang[$l][43]; ?></label>
321*7d666900SdWiGhT			<select name="css_level"><?php echo options(array('CSS3.0','CSS2.1','CSS2.0','CSS1.0'),$css->get_cfg('css_level'), true); ?></select><br />
322*7d666900SdWiGhT
323*7d666900SdWiGhT
324*7d666900SdWiGhT			<input type="checkbox" id="timestamp" name="timestamp"
325*7d666900SdWiGhT					 <?php if ($css->get_cfg('timestamp')) echo 'checked="checked"'; ?> />
326*7d666900SdWiGhT	 			<label for="timestamp"><?php echo $lang[$l][57]; ?></label><br />
327*7d666900SdWiGhT
328*7d666900SdWiGhT			<input type="checkbox" id="rtl" name="rtl"
329*7d666900SdWiGhT					 <?php if ($css->get_cfg('reverse_left_and_right')) echo 'checked="checked"'; ?> />
330*7d666900SdWiGhT	 			<label for="rtl"><?php echo $lang[$l][67]; ?></label><br />
331*7d666900SdWiGhT
332*7d666900SdWiGhT			<input type="checkbox" id="whole_file" name="whole_file"
333*7d666900SdWiGhT					 <?php if (isset($_REQUEST['whole_file'])) echo 'checked="checked"'; ?> />
334*7d666900SdWiGhT	 			<label for="whole_file"><?php echo $lang[$l][63]; ?></label><br />
335*7d666900SdWiGhT
336*7d666900SdWiGhT
337*7d666900SdWiGhT			<input type="checkbox" name="file_output" id="file_output" value="file_output"
338*7d666900SdWiGhT					 <?php if (isset($_REQUEST['file_output'])) echo 'checked="checked"'; ?> />
339*7d666900SdWiGhT			<label class="help" title="<?php echo $lang[$l][34]; ?>" for="file_output">
340*7d666900SdWiGhT				<strong><?php echo $lang[$l][33]; ?></strong>
341*7d666900SdWiGhT			</label><br />
342*7d666900SdWiGhT
343*7d666900SdWiGhT			</fieldset>
344*7d666900SdWiGhT		<input type="hidden" name="post" />
345*7d666900SdWiGhT		</div>
346*7d666900SdWiGhT		</div>
347*7d666900SdWiGhT	</form>
348*7d666900SdWiGhT	<?php
349*7d666900SdWiGhT
350*7d666900SdWiGhT	$file_ok = false;
351*7d666900SdWiGhT	$result = false;
352*7d666900SdWiGhT
353*7d666900SdWiGhT	$url = (isset($_REQUEST['url']) && !empty($_REQUEST['url'])) ? $_REQUEST['url'] : false;
354*7d666900SdWiGhT
355*7d666900SdWiGhT	if (isset($_REQUEST['template'])) {
356*7d666900SdWiGhT		switch ($_REQUEST['template']) {
357*7d666900SdWiGhT			case 4:
358*7d666900SdWiGhT			if ($is_custom) {
359*7d666900SdWiGhT				$css->load_template($_REQUEST['custom'],false);
360*7d666900SdWiGhT			}
361*7d666900SdWiGhT			break;
362*7d666900SdWiGhT
363*7d666900SdWiGhT			case 3:
364*7d666900SdWiGhT			$css->load_template('highest_compression');
365*7d666900SdWiGhT			break;
366*7d666900SdWiGhT
367*7d666900SdWiGhT			case 2:
368*7d666900SdWiGhT			$css->load_template('high_compression');
369*7d666900SdWiGhT			break;
370*7d666900SdWiGhT
371*7d666900SdWiGhT			case 0:
372*7d666900SdWiGhT			$css->load_template('low_compression');
373*7d666900SdWiGhT			break;
374*7d666900SdWiGhT		}
375*7d666900SdWiGhT	}
376*7d666900SdWiGhT
377*7d666900SdWiGhT	if ($url) {
378*7d666900SdWiGhT		if (substr($_REQUEST['url'],0,7) !== 'http://') {
379*7d666900SdWiGhT			$_REQUEST['url'] = 'http://'.$_REQUEST['url'];
380*7d666900SdWiGhT		}
381*7d666900SdWiGhT		$result = $css->parse_from_url($_REQUEST['url'],0);
382*7d666900SdWiGhT	} elseif (isset($_REQUEST['css_text']) && strlen($_REQUEST['css_text'])>5) {
383*7d666900SdWiGhT		$result = $css->parse($_REQUEST['css_text']);
384*7d666900SdWiGhT	}
385*7d666900SdWiGhT
386*7d666900SdWiGhT	if ($result) {
387*7d666900SdWiGhT		$ratio = $css->print->get_ratio();
388*7d666900SdWiGhT		$diff = $css->print->get_diff();
389*7d666900SdWiGhT		if (isset($_REQUEST['file_output'])) {
390*7d666900SdWiGhT			$filename = md5(mt_rand().time().mt_rand());
391*7d666900SdWiGhT			if (!is_dir('temp')) {
392*7d666900SdWiGhT				$madedir = mkdir('temp');
393*7d666900SdWiGhT				if (!$madedir) {
394*7d666900SdWiGhT					print 'Could not make directory "temp" in '.dirname(__FILE__);
395*7d666900SdWiGhT					exit;
396*7d666900SdWiGhT				}
397*7d666900SdWiGhT			}
398*7d666900SdWiGhT			$handle = fopen('temp/'.$filename.'.css','w');
399*7d666900SdWiGhT			if ($handle) {
400*7d666900SdWiGhT				if (fwrite($handle,$css->print->plain())) {
401*7d666900SdWiGhT					$file_ok = true;
402*7d666900SdWiGhT				}
403*7d666900SdWiGhT			}
404*7d666900SdWiGhT			fclose($handle);
405*7d666900SdWiGhT		}
406*7d666900SdWiGhT		if ($ratio>0) $ratio = '<span style="color:green">'.$ratio.'%</span>
407*7d666900SdWiGhT	('.$diff.' Bytes)'; else $ratio = '<span
408*7d666900SdWiGhT	style="color:red;">'.$ratio.'%</span> ('.$diff.' Bytes)';
409*7d666900SdWiGhT		if (count($css->log) > 0): ?>
410*7d666900SdWiGhT		<fieldset id="messages"><legend>Messages</legend>
411*7d666900SdWiGhT			<div><dl><?php
412*7d666900SdWiGhT			foreach ($css->log as $line => $array) {
413*7d666900SdWiGhT				echo '<dt>',$line,'</dt>';
414*7d666900SdWiGhT				$array_size = count($array);
415*7d666900SdWiGhT				for ($i = 0; $i < $array_size; ++$i) {
416*7d666900SdWiGhT					echo '<dd class="',$array[$i]['t'],'">',$array[$i]['m'],'</dd>';
417*7d666900SdWiGhT				}
418*7d666900SdWiGhT			}
419*7d666900SdWiGhT			?></dl></div>
420*7d666900SdWiGhT		</fieldset>
421*7d666900SdWiGhT		<?php endif;
422*7d666900SdWiGhT		echo '<fieldset><legend>',$lang[$l][37],': ',$css->print->size('input'),'KB, ',$lang[$l][38],':',$css->print->size('output'),'KB, ',$lang[$l][36],': ',$ratio;
423*7d666900SdWiGhT		if ($file_ok) {
424*7d666900SdWiGhT			echo ' - <a href="temp/',$filename,'.css">Download</a>';
425*7d666900SdWiGhT		}
426*7d666900SdWiGhT		echo ' - <a href="javascript:ClipBoard()">',$lang[$l][58],'</a>'
427*7d666900SdWiGhT		, '</legend>'
428*7d666900SdWiGhT		, '<code id="copytext">'
429*7d666900SdWiGhT		, $css->print->formatted()
430*7d666900SdWiGhT		, '</code></fieldset><div><br /></div>'
431*7d666900SdWiGhT
432*7d666900SdWiGhT		, '<fieldset class="code_output"><legend>',$lang[$l][64],'</legend>'
433*7d666900SdWiGhT		, '<textarea rows="10" cols="80">';
434*7d666900SdWiGhT
435*7d666900SdWiGhT		if (isset($_REQUEST['whole_file'])) {
436*7d666900SdWiGhT			echo htmlspecialchars($css->print->formatted_page('xhtml1.1', false, '', 'en'), ENT_QUOTES, 'utf-8');
437*7d666900SdWiGhT		} else {
438*7d666900SdWiGhT			echo htmlspecialchars('<code id="copytext">', ENT_QUOTES, 'utf-8'),"\n";
439*7d666900SdWiGhT			echo htmlspecialchars($css->print->formatted()."\n".'</code>', ENT_QUOTES, 'utf-8');
440*7d666900SdWiGhT		}
441*7d666900SdWiGhT		echo '</textarea></fieldset>'
442*7d666900SdWiGhT		, '<fieldset class="code_output"><legend>',$lang[$l][65],'</legend>'
443*7d666900SdWiGhT		, '<textarea rows="10" cols="30">';
444*7d666900SdWiGhT
445*7d666900SdWiGhT		echo file_get_contents('cssparsed.css');
446*7d666900SdWiGhT		echo '</textarea>'
447*7d666900SdWiGhT
448*7d666900SdWiGhT		, '</fieldset><p><a href="javascript:scrollTo(0,0)">&#8593; ',$lang[$l][59],'</a></p>';
449*7d666900SdWiGhT
450*7d666900SdWiGhT	 } elseif (isset($_REQUEST['css_text']) || isset($_REQUEST['url'])) {
451*7d666900SdWiGhT		echo '<p class="important">',$lang[$l][28],'</p>';
452*7d666900SdWiGhT	 }
453*7d666900SdWiGhT	 ?>
454*7d666900SdWiGhT	<p style="text-align:center;font-size:.8em;clear:both">
455*7d666900SdWiGhT		<?php echo $lang[$l][61] ?> <a
456*7d666900SdWiGhT		href="http://csstidy.sourceforge.net/contact.php"><?php echo $lang[$l][62] ?></a>.
457*7d666900SdWiGhT	</p>
458*7d666900SdWiGhT	</body>
459*7d666900SdWiGhT</html>