forked from GNUsocial/gnu-social
remove unit tests for minify
This commit is contained in:
parent
11dab47e2d
commit
0c955b7c88
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/ConditionalGet.php';
|
||||
|
||||
// emulate regularly updating document
|
||||
$every = 20;
|
||||
$lastModified = round(time()/$every)*$every - $every;
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'lastModifiedTime' => $lastModified
|
||||
));
|
||||
if ($cg->cacheIsValid) {
|
||||
$cg->sendHeaders();
|
||||
// we're done
|
||||
exit();
|
||||
}
|
||||
|
||||
// generate content
|
||||
$title = 'Last-Modified is known : add Content-Length';
|
||||
$explain = '
|
||||
<p>Here, like <a href="./">the first example</a>, we know the Last-Modified time,
|
||||
but we also want to set the Content-Length to increase cacheability and allow
|
||||
HTTP persistent connections. Instead of sending headers immediately, we first
|
||||
generate our content, then use <code>setContentLength(strlen($content))</code>
|
||||
to add the header. Then finally call <code>sendHeaders()</code> and send the
|
||||
content.</p>
|
||||
<p><strong>Note:</strong> This is not required if your PHP config buffers all
|
||||
output and your script doesn\'t do any incremental flushing of the output
|
||||
buffer. PHP will generally set Content-Length for you if it can.</p>
|
||||
<p>This script emulates a document that changes every ' .$every. ' seconds.
|
||||
<br>This is version: ' . date('r', $lastModified) . '</p>
|
||||
';
|
||||
|
||||
require '_include.php';
|
||||
$content = get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
));
|
||||
|
||||
$cg->setContentLength(strlen($content));
|
||||
$cg->sendHeaders();
|
||||
send_slowly($content);
|
||||
|
@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/ConditionalGet.php';
|
||||
|
||||
// generate content first (not ideal)
|
||||
// emulate regularly updating document
|
||||
$every = 20;
|
||||
$lastModified = round(time()/$every)*$every - $every;
|
||||
$title = 'Last-Modified is unknown : use hash of content for ETag';
|
||||
$explain = '
|
||||
<p>When Last-Modified is unknown, you can still use ETags, but you need a short
|
||||
string that is unique for that content. In the worst case, you have to generate
|
||||
all the content first, <em>then</em> instantiate HTTP_ConditionalGet, setting
|
||||
the array key <code>contentHash</code> to the output of a hash function of the
|
||||
content. Since we have the full content, we might as well also use
|
||||
<code>setContentLength(strlen($content))</code> in the case where we need to
|
||||
send it.</p>
|
||||
<p>This script emulates a document that changes every ' .$every. ' seconds.
|
||||
<br>This is version: ' . date('r', $lastModified) . '</p>
|
||||
';
|
||||
require '_include.php';
|
||||
$content = get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
));
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'contentHash' => substr(md5($content), 7)
|
||||
));
|
||||
if ($cg->cacheIsValid) {
|
||||
$cg->sendHeaders();
|
||||
// we're done
|
||||
exit();
|
||||
}
|
||||
$cg->setContentLength(strlen($content));
|
||||
$cg->sendHeaders();
|
||||
|
||||
send_slowly($content);
|
||||
|
@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/ConditionalGet.php';
|
||||
|
||||
// emulate regularly updating document
|
||||
$every = 20;
|
||||
$lastModified = round(time()/$every)*$every - $every;
|
||||
|
||||
require 'HTTP/Encoder.php';
|
||||
list($enc,) = HTTP_Encoder::getAcceptedEncoding();
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'lastModifiedTime' => $lastModified
|
||||
,'encoding' => $enc
|
||||
));
|
||||
$cg->sendHeaders();
|
||||
if ($cg->cacheIsValid) {
|
||||
// we're done
|
||||
exit();
|
||||
}
|
||||
|
||||
// output encoded content
|
||||
|
||||
$title = 'ConditionalGet + Encoder';
|
||||
$explain = '
|
||||
<p>Using ConditionalGet and Encoder is straightforward. First impliment the
|
||||
ConditionalGet, then if the cache is not valid, encode and send the content</p>
|
||||
<p>This script emulates a document that changes every ' .$every. ' seconds.
|
||||
<br>This is version: ' . date('r', $lastModified) . '</p>
|
||||
';
|
||||
require '_include.php';
|
||||
$content = get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
));
|
||||
|
||||
$he = new HTTP_Encoder(array(
|
||||
'content' => get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
))
|
||||
));
|
||||
$he->encode();
|
||||
|
||||
// usually you would just $he->sendAll(), but here we want to emulate slow
|
||||
// connection
|
||||
$he->sendHeaders();
|
||||
send_slowly($he->getContent());
|
@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/ConditionalGet.php';
|
||||
|
||||
// far expires
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'maxAge' => 20
|
||||
,'lastModifiedTime' => filemtime(__FILE__)
|
||||
));
|
||||
$cg->sendHeaders();
|
||||
|
||||
// generate, send content
|
||||
$title = 'Last-Modified + Expires';
|
||||
$explain = '
|
||||
<p>Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser
|
||||
will consider this document fresh for 20 seconds, then revalidate its cache. After
|
||||
the 304 response, the cache will be good for another 20 seconds. Unless you force
|
||||
a reload, there will only be 304 responses for this page after the initial download.
|
||||
';
|
||||
|
||||
require '_include.php';
|
||||
echo get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
));
|
||||
|
@ -1,64 +0,0 @@
|
||||
<?php
|
||||
|
||||
function send_slowly($content)
|
||||
{
|
||||
$half = ceil(strlen($content) / 2);
|
||||
$content = str_split($content, $half);
|
||||
while ($chunk = array_shift($content)) {
|
||||
sleep(1);
|
||||
echo $chunk;
|
||||
ob_get_level() && ob_flush();
|
||||
flush();
|
||||
}
|
||||
}
|
||||
|
||||
function get_content($data)
|
||||
{
|
||||
ob_start();
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>HTTP_ConditionalGet : <?php echo $data['title']; ?></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>HTTP_ConditionalGet</h1>
|
||||
<h2><?php echo $data['title']; ?></h2>
|
||||
<?php echo $data['explain']; ?>
|
||||
<ul>
|
||||
<li><a href="./">Last-Modified is known : simple usage</a></li>
|
||||
<li><a href="2.php">Last-Modified is known : add Content-Length</a></li>
|
||||
<li><a href="3.php">Last-Modified is unknown : use hash of content for ETag</a></li>
|
||||
<li><a href="4.php">ConditionalGet + Encoder</a></li>
|
||||
<li><a href="5.php">Last-Modified + Expires</a></li>
|
||||
</ul>
|
||||
<h2>Notes</h2>
|
||||
<h3>How to distinguish 200 and 304 responses</h3>
|
||||
<p>For these pages all 200 responses are sent in chunks a second apart, so you
|
||||
should notice that 304 responses are quicker. You can also use HTTP sniffers
|
||||
like <a href="http://www.fiddlertool.com/">Fiddler (win)</a> and
|
||||
<a href="http://livehttpheaders.mozdev.org/">LiveHTTPHeaders (Firefox add-on)</a>
|
||||
to verify headers and content being sent.</p>
|
||||
<h3>Browser notes</h3>
|
||||
<dl>
|
||||
<dt>Opera</dt>
|
||||
<dd>Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5)
|
||||
prevents the ETag/If-Modified-Since headers from being sent; it only sends
|
||||
them when following a link or bookmark. Also, Opera will not honor the
|
||||
<code>must-revalidate</code> Cache-Control value unless <code>max-age</code>
|
||||
is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0
|
||||
(if one is not already set).</dd>
|
||||
<dt>Safari</dt>
|
||||
<dd>ETag validation is unsupported, but Safari supports HTTP/1.0 validation via
|
||||
If-Modified-Since headers as long as the cache is explicitly marked
|
||||
"public" or "private" ("private" is default in ConditionalGet).</dd>
|
||||
</dl>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
return $content;
|
||||
}
|
||||
|
@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/ConditionalGet.php';
|
||||
|
||||
// emulate regularly updating document
|
||||
$every = 20;
|
||||
$lastModified = round(time()/$every)*$every - $every;
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'lastModifiedTime' => $lastModified
|
||||
));
|
||||
$cg->sendHeaders();
|
||||
if ($cg->cacheIsValid) {
|
||||
// we're done
|
||||
exit();
|
||||
}
|
||||
|
||||
$title = 'Last-Modified is known : simple usage';
|
||||
$explain = '
|
||||
<p>If your content has not changed since a certain timestamp, set this via the
|
||||
the <code>lastModifiedTime</code> array key when instantiating HTTP_ConditionalGet.
|
||||
You can immediately call the method <code>sendHeaders()</code> to set the
|
||||
Last-Modified, ETag, and Cache-Control headers. The, if <code>cacheIsValid</code>
|
||||
property is false, you echo the content.</p>
|
||||
<p>This script emulates a document that changes every ' .$every. ' seconds.
|
||||
<br>This is version: ' . date('r', $lastModified) . '</p>
|
||||
';
|
||||
|
||||
require '_include.php';
|
||||
|
||||
echo send_slowly(get_content(array(
|
||||
'title' => $title
|
||||
,'explain' => $explain
|
||||
)));
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 202 B |
@ -1,60 +0,0 @@
|
||||
<?php
|
||||
ini_set('display_errors', 'on');
|
||||
|
||||
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
|
||||
require 'HTTP/Encoder.php';
|
||||
|
||||
if (!isset($_GET['test'])) {
|
||||
$type = 'text/html';
|
||||
ob_start();
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>HTTP_Encoder Test</title>
|
||||
<style type="text/css">
|
||||
@import "?test=2";
|
||||
#img {background:url("?test=1");}
|
||||
.green {background:#0f0;}
|
||||
p span {padding:0 .5em;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>HTTP_Encoder test</h1>
|
||||
<p><span class="green"> HTML </span></p>
|
||||
<p><span id="css"> CSS </span></p>
|
||||
<p><span id="js"> Javascript </span></p>
|
||||
<p><span id="img"> image </span></p>
|
||||
<script src="?test=3" type="text/javascript"></script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
} elseif ($_GET['test'] == '1') {
|
||||
$content = file_get_contents(dirname(__FILE__) . '/green.png');
|
||||
$type = 'image/png';
|
||||
|
||||
} elseif ($_GET['test'] == '2') {
|
||||
$content = '#css {background:#0f0;}';
|
||||
$type = 'text/css';
|
||||
|
||||
} else {
|
||||
$content = '
|
||||
window.onload = function(){
|
||||
document.getElementById("js").className = "green";
|
||||
};
|
||||
';
|
||||
$type = 'application/x-javascript';
|
||||
}
|
||||
|
||||
$he = new HTTP_Encoder(array(
|
||||
'content' => $content
|
||||
,'type' => $type
|
||||
));
|
||||
$he->encode();
|
||||
$he->sendAll();
|
||||
|
||||
?>
|
@ -1,50 +0,0 @@
|
||||
<?php
|
||||
|
||||
require dirname(__FILE__) . '/../min/config.php';
|
||||
|
||||
set_include_path($min_libPath . PATH_SEPARATOR . get_include_path());
|
||||
|
||||
// set cache path and doc root if configured
|
||||
$minifyCachePath = isset($min_cachePath)
|
||||
? $min_cachePath
|
||||
: '';
|
||||
if ($min_documentRoot) {
|
||||
$_SERVER['DOCUMENT_ROOT'] = $min_documentRoot;
|
||||
}
|
||||
|
||||
// default log to FirePHP
|
||||
require_once 'Minify/Logger.php';
|
||||
if ($min_errorLogger && true !== $min_errorLogger) { // custom logger
|
||||
Minify_Logger::setLogger($min_errorLogger);
|
||||
} else {
|
||||
require_once 'FirePHP.php';
|
||||
Minify_Logger::setLogger(FirePHP::getInstance(true));
|
||||
}
|
||||
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
header('Content-Type: text/plain');
|
||||
|
||||
$thisDir = dirname(__FILE__);
|
||||
|
||||
/**
|
||||
* pTest - PHP Unit Tester
|
||||
* @param mixed $test Condition to test, evaluated as boolean
|
||||
* @param string $message Descriptive message to output upon test
|
||||
* @url http://www.sitepoint.com/blogs/2007/08/13/ptest-php-unit-tester-in-9-lines-of-code/
|
||||
*/
|
||||
function assertTrue($test, $message)
|
||||
{
|
||||
static $count;
|
||||
if (!isset($count)) $count = array('pass'=>0, 'fail'=>0, 'total'=>0);
|
||||
|
||||
$mode = $test ? 'pass' : 'fail';
|
||||
$outMode = $test ? 'PASS' : '!FAIL';
|
||||
printf("%s: %s (%d of %d tests run so far have %sed)\n",
|
||||
$outMode, $message, ++$count[$mode], ++$count['total'], $mode);
|
||||
|
||||
return (bool)$test;
|
||||
}
|
||||
|
||||
ob_start();
|
@ -1,9 +0,0 @@
|
||||
|
||||
/* block comments get removed */
|
||||
|
||||
/*! YUI Compressor style comments are preserved */
|
||||
|
||||
/* but all other comments are removed */
|
||||
|
||||
/* comments that have any surrounding whitespace are replaced by a single space. */
|
||||
body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; }
|
@ -1,3 +0,0 @@
|
||||
|
||||
/* YUI Compressor style comments are preserved */
|
||||
body{background:#fff url(/path/to/image.gif) repeat-y}
|
@ -1,66 +0,0 @@
|
||||
/* hide from ie5/mac \*/ a{}
|
||||
.foo {color:red}
|
||||
/* necessary comment */
|
||||
|
||||
/* comment to attempt to confuse parser */
|
||||
|
||||
/* feed to ie5/mac \*//*/
|
||||
@import "ie5mac.css";
|
||||
/* necessary comment */
|
||||
|
||||
/* comment to attempt to confuse parser */
|
||||
|
||||
/*/ hide from nav4 */
|
||||
.foo {display:block;}
|
||||
/* necessary comment */
|
||||
|
||||
/* comment to attempt to confuse parser */
|
||||
|
||||
/*/ feed to nav *//*/
|
||||
.foo {display:crazy;}
|
||||
/* necessary comment */
|
||||
|
||||
/* hide props from various IE/win */
|
||||
div {
|
||||
width: 140px;
|
||||
width/* */:/**/100px;
|
||||
width: /**/100px;
|
||||
}
|
||||
|
||||
html>/**/body {}
|
||||
|
||||
/* Tantek's box model hack */
|
||||
div {
|
||||
width:400px;
|
||||
voice-family: "\"}\"";
|
||||
voice-family:inherit;
|
||||
width:300px;
|
||||
}
|
||||
|
||||
/* don't minimize hex colors in filters */
|
||||
div {
|
||||
filter:chroma(color=#aabbcc);
|
||||
filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000);
|
||||
}
|
||||
|
||||
@media screen {
|
||||
/* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/
|
||||
* html div#page {
|
||||
height: 1%;
|
||||
}
|
||||
/**/ /* end hidden from IE 5 Mac */
|
||||
}
|
||||
|
||||
foo { /* filters for IE */
|
||||
_height : 20px;
|
||||
*height : 15px;
|
||||
}
|
||||
|
||||
/* http://tantek.com/CSS/Examples/midpass.html */
|
||||
@media tty {
|
||||
i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";}
|
||||
}/* */
|
||||
|
||||
/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */
|
||||
p:first-letter {color:red;}
|
||||
p:first-line {color:red;}
|
@ -1,4 +0,0 @@
|
||||
/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media
|
||||
screen{/*\*/* html
|
||||
div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media
|
||||
tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red}
|
@ -1,890 +0,0 @@
|
||||
/*
|
||||
* DEFINITION DES STYLES DE TEXTE
|
||||
*/
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
h1 {
|
||||
color: #339933;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #339933;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5 {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.txt_10_noir {
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.txt_10_noir:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_noir {
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.txt_11_noir:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_noir {
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.txt_12_noir:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_noir {
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.txt_14_noir:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_gris {
|
||||
color: grey;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.txt_10_gris:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_gris {
|
||||
color: grey;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.txt_11_gris:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_gris {
|
||||
color: grey;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.txt_12_gris:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_gris {
|
||||
color: grey;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.txt_14_gris:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_blanc {
|
||||
color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.txt_10_blanc:hover {
|
||||
color: #FF8800; /*ORANGE*/
|
||||
}
|
||||
|
||||
.txt_11_blanc {
|
||||
color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.txt_11_blanc:hover {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
.txt_12_blanc {
|
||||
color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.txt_12_blanc:hover {
|
||||
color: #FFAA00;
|
||||
}
|
||||
|
||||
.txt_14_blanc {
|
||||
color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.txt_14_blanc:hover {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_orange {
|
||||
color: #FF8800;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
.txt_10_orange:hover {
|
||||
color: darkblue
|
||||
}
|
||||
|
||||
.txt_11_orange {
|
||||
color: #FF8800;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
.txt_11_orange:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_12_orange {
|
||||
color: #FF8800;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
.txt_12_orange:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_14_orange {
|
||||
color: #FF8800;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
.txt_14_orange:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_rouge {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_10_rouge:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_11_rouge {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_rouge:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_12_rouge {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_rouge:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_14_rouge {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_rouge:hover {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_bleu {
|
||||
color: blue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.txt_10_bleu:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_bleu {
|
||||
color: blue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.txt_11_bleu:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_bleu {
|
||||
color: blue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.txt_12_bleu:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_bleu {
|
||||
color: blue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.txt_14_bleu:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_bleu_f {
|
||||
color: darkblue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_10_bleu_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_bleu_f {
|
||||
color: darkblue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_11_bleu_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_bleu_f {
|
||||
color: darkblue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_12_bleu_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_bleu_f {
|
||||
color: darkblue;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active {
|
||||
color: darkblue;
|
||||
}
|
||||
|
||||
.txt_14_bleu_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_vert_f {
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
.txt_10_vert_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_vert_f {
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
.txt_11_vert_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_vert_f {
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
.txt_12_vert_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_vert_f {
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active {
|
||||
color: darkgreen;
|
||||
}
|
||||
|
||||
.txt_14_vert_f:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.txt_10_vert {
|
||||
color: green;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.txt_10_vert:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_11_vert {
|
||||
color: green;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.txt_11_vert:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_12_vert {
|
||||
color: green;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.txt_12_vert:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.txt_14_vert {
|
||||
color: green;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.txt_14_vert:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
.fond_blanc {
|
||||
background-color: #FFFFFF;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fond_gris_c, .fond_gris_c tr {
|
||||
background-color: #FFFFFF;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.fond_gris_c2, .fond_gris_c2 tr {
|
||||
background-color: #FBFBFB;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fond_bleu_c, .fond_bleu_c tr {
|
||||
background-color: #D9EEF9;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
background-image: url(../images/fond_1.bmp);
|
||||
}
|
||||
|
||||
.fond_bleu_c2 {
|
||||
background-color: #ECF4FF;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fond_bleu_f {
|
||||
background-color: #003366;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fond_orange {
|
||||
background-color: #FEEFE7;
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background-image: url(../images/fond_3.jpg);
|
||||
}
|
||||
|
||||
.fond_orange_2 {
|
||||
background-color: #FFF8F4;
|
||||
color: darkgreen;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid orange;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.vccDlgBody {
|
||||
border: 3px solid #336699;
|
||||
border-collapse: collapse;
|
||||
color: black;
|
||||
background-color: #EEFFEE;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* DEFINITION DES STYLES DE TABLEAUX */
|
||||
.bordure_0 {
|
||||
border: 0px solid;
|
||||
color: black;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.bordure_1_bleu {
|
||||
border: 1px solid green;
|
||||
border-collapse: collapse;
|
||||
color: black;
|
||||
background-color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.bordure_3_bleu {
|
||||
border: 3px solid #336699;
|
||||
border-collapse: collapse;
|
||||
color: black;
|
||||
background-color: #FFFFFF;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 11px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.indent {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */
|
||||
.Btn {
|
||||
color: #003366;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/ongletStyle1.jpg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
}
|
||||
|
||||
.Btn:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.menu1h {
|
||||
background-color: #003366;
|
||||
color: white;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border-top: 1px solid #003366;
|
||||
border-bottom: 1px solid #003366;
|
||||
border-left: 1px solid #003366;
|
||||
border-right: 1px solid white;
|
||||
border-collapse: collapse;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu1h:hover {
|
||||
background-color: white;
|
||||
color: red;
|
||||
border: 1px solid darkgreen;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.menu1h_f {
|
||||
background-color: #003366;
|
||||
color: white;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid #003366;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu1h_f:hover {
|
||||
background-color: white;
|
||||
color: red;
|
||||
border: 1px solid darkgreen;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.menu1v {
|
||||
background-color: #003366;
|
||||
color: white;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid #003366;
|
||||
border-collapse: collapse;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu1v:hover {
|
||||
background-color: white;
|
||||
color: red;
|
||||
border: 1px solid darkgreen;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.menu2v {
|
||||
background-color: #5588BB;
|
||||
color: white;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid #4277AB;
|
||||
border-collapse: collapse;
|
||||
float: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu2v:hover {
|
||||
background-color: white;
|
||||
color: red;
|
||||
border: 1px solid darkgreen;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.menuEDF {
|
||||
background-color: #003366;
|
||||
color: white;
|
||||
font-family: Verdana, Arial, Lucida, Tahoma;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.menuEDF:hover {
|
||||
color: #FF8800;
|
||||
}
|
||||
|
||||
/*bouton bleu sur blanc*/
|
||||
.Bouton {
|
||||
color: #003366;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
/* Ricardo cursor: hand; */
|
||||
cursor: pointer;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
input {
|
||||
border: 2px solid green;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.disabled_input {
|
||||
border: 1px solid gray;
|
||||
color: grey;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.input0 {
|
||||
border: 0px;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
}
|
||||
|
||||
.input2 {
|
||||
border: 1px solid green;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.input3 {
|
||||
border: 1px solid black;
|
||||
color: #003366;
|
||||
background-color: #EEEEEE;
|
||||
background-image: url();
|
||||
}
|
||||
|
||||
.input4 {
|
||||
border: 1px solid blue;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.input5 {
|
||||
border: 1px solid darkblue;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_4.bmp);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.input_btn {
|
||||
border: 0px;
|
||||
/* cursor: hand; */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border: 2px solid green;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(../images/fond_5.bmp);
|
||||
}
|
||||
|
||||
.TEXTAREA3 {
|
||||
border: 1px solid green;
|
||||
color: #003366;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url();
|
||||
}
|
||||
|
||||
.TEXTAREA4 {
|
||||
border: 1px solid green;
|
||||
color: #003366;
|
||||
background-color: #EEEEEE;
|
||||
background-image: url();
|
||||
}
|
||||
|
||||
.hand {
|
||||
cursor: hand;
|
||||
cursor: pointer;
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -1,12 +0,0 @@
|
||||
@import "foo.css";
|
||||
@import 'bar/foo.css' print;
|
||||
@import '/css/foo.css'; /* abs, should not alter */
|
||||
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
|
||||
@import url(../foo.css) tv, projection;
|
||||
@import url("/css/foo.css"); /* abs, should not alter */
|
||||
@import url(/css2/foo.css); /* abs, should not alter */
|
||||
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
|
||||
foo {background:url('bar/foo.png')}
|
||||
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
|
||||
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
|
||||
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */
|
@ -1 +0,0 @@
|
||||
@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)}
|
@ -1,14 +0,0 @@
|
||||
@import "foo.css";
|
||||
@import 'bar/foo.css' print;
|
||||
@import '../bar/foo.css' print;
|
||||
@import '../../foo.css' print;
|
||||
@import '/css/foo.css'; /* abs, should not alter */
|
||||
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
|
||||
@import url(../foo.css) tv, projection;
|
||||
@import url("/css/foo.css"); /* abs, should not alter */
|
||||
@import url(/css2/foo.css); /* abs, should not alter */
|
||||
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
|
||||
foo {background:url('bar/foo.png')}
|
||||
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
|
||||
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
|
||||
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */
|
@ -1 +0,0 @@
|
||||
@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)}
|
@ -1 +0,0 @@
|
||||
Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/
|
@ -1,42 +0,0 @@
|
||||
/* http://www.w3.org/TR/css3-selectors/ */
|
||||
|
||||
*
|
||||
E[foo]
|
||||
E[foo="bar"]
|
||||
E[foo~="bar"]
|
||||
E[foo^="bar"]
|
||||
E[foo$="bar"]
|
||||
E[foo*="bar"]
|
||||
E[hreflang|="en"]
|
||||
E:root
|
||||
E:nth-child(n)
|
||||
E:nth-last-child(n)
|
||||
E:nth-of-type(n)
|
||||
E:nth-last-of-type(n)
|
||||
E:first-child
|
||||
E:last-child
|
||||
E:first-of-type
|
||||
E:last-of-type
|
||||
E:only-child
|
||||
E:only-of-type
|
||||
E:empty
|
||||
E:link
|
||||
E:visited
|
||||
E:active
|
||||
E:hover
|
||||
E:focus
|
||||
E:target
|
||||
E:lang(fr)
|
||||
E:enabled
|
||||
E:disabled
|
||||
E:checked
|
||||
E::first-line
|
||||
E::first-letter
|
||||
E::selection
|
||||
E::before
|
||||
E::after
|
||||
E.warning#myid
|
||||
E:not(s)
|
||||
> F
|
||||
+ F
|
||||
~ F {color: red;}
|
@ -1,37 +0,0 @@
|
||||
*
|
||||
E[foo]
|
||||
E[foo="bar"]
|
||||
E[foo~="bar"]
|
||||
E[foo^="bar"]
|
||||
E[foo$="bar"]
|
||||
E[foo*="bar"]
|
||||
E[hreflang|="en"]
|
||||
E:root
|
||||
E:nth-child(n)
|
||||
E:nth-last-child(n)
|
||||
E:nth-of-type(n)
|
||||
E:nth-last-of-type(n)
|
||||
E:first-child
|
||||
E:last-child
|
||||
E:first-of-type
|
||||
E:last-of-type
|
||||
E:only-child
|
||||
E:only-of-type
|
||||
E:empty
|
||||
E:link
|
||||
E:visited
|
||||
E:active
|
||||
E:hover
|
||||
E:focus
|
||||
E:target
|
||||
E:lang(fr)
|
||||
E:enabled
|
||||
E:disabled
|
||||
E:checked
|
||||
E::first-line
|
||||
E::first-letter
|
||||
E::selection
|
||||
E::before
|
||||
E::after
|
||||
E.warning#myid
|
||||
E:not(s)>F+F~F{color:red}
|
@ -1,31 +0,0 @@
|
||||
/* some CSS to try to exercise things in general */
|
||||
|
||||
@import url( /more.css );
|
||||
|
||||
body, td, th {
|
||||
font-family: Verdana , "Bitstream Vera Sans" , sans-serif ;
|
||||
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
.nav {
|
||||
margin-left: 20%;
|
||||
}
|
||||
#main-nav {
|
||||
background-color: red;
|
||||
border: 1px solid #00ff77;
|
||||
}
|
||||
|
||||
div#content
|
||||
h1 + p {
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media all and (min-width: 640px) {
|
||||
#media-queries-1 { background-color: #0f0; }
|
||||
}
|
||||
|
||||
@media screen and (max-width: 2000px) {
|
||||
#media-queries-2 { background-color: #0f0; }
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px
|
||||
solid #0f7}div#content
|
||||
h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}}
|
@ -1,434 +0,0 @@
|
||||
/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+
|
||||
Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */
|
||||
/* The content of the posts (body of text) */
|
||||
/* General page style */
|
||||
|
||||
|
||||
|
||||
/* begin suggest post */
|
||||
.float-l{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.form-suggest{
|
||||
height:200px;
|
||||
background:#DEE2D0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.form-input input{
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.hide{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.form-input textarea{
|
||||
font-size: 11px;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.form-label{
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
line-height: 25px;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
width: 100px;
|
||||
color: #39738F;
|
||||
}
|
||||
|
||||
.font-9{
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.form-topic{
|
||||
font-weight:bold;
|
||||
|
||||
}
|
||||
|
||||
.form-error{
|
||||
color:red;
|
||||
}
|
||||
|
||||
.inline{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.space-10{
|
||||
clear: both;
|
||||
font-size: 10px;
|
||||
height: 10px;
|
||||
line-height: 10px;
|
||||
}
|
||||
|
||||
.suggest-success{
|
||||
color:green;
|
||||
padding-left:10px;
|
||||
font-size:11px;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.top{
|
||||
vertical-align: top;
|
||||
}
|
||||
/* end suggest post */
|
||||
|
||||
table td{
|
||||
padding:3px;
|
||||
}
|
||||
|
||||
a:link,a:active,a:visited,a.postlink{
|
||||
color: #006699;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover{
|
||||
color: #DD6900;
|
||||
}
|
||||
|
||||
a.admin:hover,a.mod:hover{
|
||||
color: #DD6900;
|
||||
}
|
||||
|
||||
a.but,a.but:hover,a.but:visited{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.topictitle:visited{
|
||||
color: #5493B4;
|
||||
}
|
||||
|
||||
a.topictitle:hover{
|
||||
color: #DD6900;
|
||||
}
|
||||
|
||||
|
||||
|
||||
body{
|
||||
color: #000000;
|
||||
font: 11px Verdana,Arial,Helvetica,sans-serif;
|
||||
margin: 0 10px 10px 10px;
|
||||
padding: 0;
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
/* General font families for common tags */
|
||||
font,th,td,p{
|
||||
font: 12px Verdana,Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
/* Form elements */
|
||||
form{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
hr{
|
||||
border: 0px solid #FFFFFF;
|
||||
border-top-width: 1px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
/* Gets rid of the need for border="0" on hyperlinked images */
|
||||
img{
|
||||
border: 0 solid;
|
||||
}
|
||||
|
||||
input{
|
||||
font: 11px Verdana,Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
input.button,input.liteoption,.fakebut{
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #000000;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
input.catbutton{
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #000000;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
input.mainoption{
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #000000;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input.post,textarea.post{
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #000000;
|
||||
font: 11px Verdana,Arial,Helvetica,sans-serif;
|
||||
padding-bottom: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
select{
|
||||
background: #FFFFFF;
|
||||
font: 11px Verdana,Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
table{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td{
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* Category gradients*/
|
||||
td.cat{
|
||||
background-color: #C2C6BA;
|
||||
font-weight: bold;
|
||||
height: 20px;
|
||||
letter-spacing: 1px;
|
||||
text-indent: 4px;
|
||||
}
|
||||
|
||||
td.genmed,.genmed{
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* This is for the table cell above the Topics,Post & Last posts on the index.php */
|
||||
td.rowpic{
|
||||
background: #C2C6BA;
|
||||
}
|
||||
|
||||
td.spacerow{
|
||||
background: #E5E6E2;
|
||||
}
|
||||
|
||||
/* Table Header cells */
|
||||
th{
|
||||
background-color: #FADD31;
|
||||
background-image: url(images/cellpic3.gif);
|
||||
background-repeat: repeat-x;
|
||||
color: #68685E;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
line-height:16px;
|
||||
height: 16px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Admin & Moderator Colours MODification */
|
||||
.admin,.mod{
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.admin,a.admin,a.admin:visited{
|
||||
color: #FFA34F;
|
||||
}
|
||||
|
||||
/* This is the border line & background colour round the entire page */
|
||||
.bodyline{
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #98AAB1;
|
||||
}
|
||||
|
||||
.center{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
.code{
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #D1D7DC;
|
||||
color: #006600;
|
||||
font: 12px Courier,"Courier New",sans-serif;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* This is for the error messages that pop up */
|
||||
.errorline{
|
||||
background: #E5E6E2;
|
||||
border: 1px solid #8F8B8B;
|
||||
color:#D92A2A;
|
||||
}
|
||||
|
||||
.explaintitle{
|
||||
color: #5C81B1;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* This is the outline round the main forum tables */
|
||||
.forumline{
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
/* General text */
|
||||
.gensmall{
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.h1-font{
|
||||
color: #006699;
|
||||
display: inline;
|
||||
font: bold 13px Verdana, Arial, Helvetica, sans-serif;
|
||||
margin: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.h2-font{
|
||||
display: inline;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.height1{
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.height22{
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
.height25{
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
.height28{
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.height30{
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.height40{
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
/* This is the line in the posting page which shows the rollover
|
||||
help line. Colour value in row2 */
|
||||
.helpline{
|
||||
border: 0 solid;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.imgfolder{
|
||||
margin: 1px 4px 1px 4px;
|
||||
}
|
||||
|
||||
.imgspace{
|
||||
margin-left: 1px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
/* Specify the space around images */
|
||||
.imgtopic,.imgicon{
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.left{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* The largest text used in the index page title and toptic title etc. */
|
||||
.maintitle,h1,h2{
|
||||
color: #5C81B1;
|
||||
font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.maxwidth{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mod,a.mod,a.mod:visited{
|
||||
color: #006600;
|
||||
}
|
||||
|
||||
/* Name of poster in viewmsg.php and viewtopic.php and other places */
|
||||
.name{
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */
|
||||
.nav{
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nowrap{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.postbody{
|
||||
font-size: 12px;
|
||||
line-height: 125%;
|
||||
}
|
||||
|
||||
.postbody a{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Location,number of posts,post date etc */
|
||||
.postdetails{
|
||||
color: #00396A;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/* Quote blocks */
|
||||
.quote{
|
||||
background: #F3F3EF;
|
||||
border: 1px solid #C2C6BA;
|
||||
color: #006699;
|
||||
font-size: 11px;
|
||||
line-height: 125%;
|
||||
}
|
||||
|
||||
.right{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Main table cell colours and backgrounds */
|
||||
.row1{
|
||||
background: #F0F0EB;
|
||||
}
|
||||
|
||||
.row2,.helpline{
|
||||
background: #E5E6E2;
|
||||
}
|
||||
|
||||
.row3{
|
||||
background: #DBDBD4;
|
||||
}
|
||||
|
||||
.subtitle,h2{
|
||||
font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* titles for the topics:could specify viewed link colour too */
|
||||
.topictitle {
|
||||
color: #000000;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.underline{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.top{
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
.image-hspace{
|
||||
margin-right:3px;
|
||||
}
|
||||
|
||||
.clear{
|
||||
clear:both;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input
|
||||
input{font-size:10px}.hide{display:none}.form-input
|
||||
textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table
|
||||
td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0
|
||||
10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px
|
||||
solid #FFF;border-top-width:1px;height:0px}img{border:0
|
||||
solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px
|
||||
solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px
|
||||
solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px
|
||||
solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px
|
||||
solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px
|
||||
solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px
|
||||
solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px
|
||||
solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0
|
||||
solid;font-size:10px}.imgfolder{margin:1px
|
||||
4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody
|
||||
a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px
|
||||
solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both}
|
@ -1,10 +0,0 @@
|
||||
/* test unusual, but valid strings in CSS */
|
||||
|
||||
foo[attr="multiple spaces"] {
|
||||
content: "Hello World!";
|
||||
}
|
||||
|
||||
foo[attr="Hel\
|
||||
lo"] {
|
||||
content: " \"World\"";
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\
|
||||
lo"]{content:" \"World\""}
|
@ -1,658 +0,0 @@
|
||||
/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */
|
||||
|
||||
#comments_inviter #close_me {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
border-top: 1px solid #eeeeee;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#comments_inviter #close_me span {
|
||||
color: #108eed;
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#comments_inviter img {
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#comments_inviter {
|
||||
width: 200px;
|
||||
background-color: #FFFFFF;
|
||||
border: 4px solid #eeeeee;
|
||||
font-size: 10px;
|
||||
font-family: verdana;
|
||||
padding: 10px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.one_com {
|
||||
background-color: #FAFAFA;
|
||||
padding: 10px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid #EEEEEE;
|
||||
}
|
||||
|
||||
.one_com .com_says, .one_com .com_det {
|
||||
text-transform: lowercase;
|
||||
color: #333333;
|
||||
padding: 0px;
|
||||
font-family: verdana;
|
||||
margin: 0px;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.flvPlayer {
|
||||
text-align: center;
|
||||
border: 5px solid #dddddd;
|
||||
width: 320px;
|
||||
}
|
||||
|
||||
.one_com .com_det {
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 8px solid #eeeeee;
|
||||
}
|
||||
|
||||
.one_com .com_det a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.one_com .com_txt {
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 10px;
|
||||
border-bottom: 2px solid #eeeeee
|
||||
}
|
||||
|
||||
.one_com .com_txt p {
|
||||
font-family: verdana;
|
||||
font-size: 13px;
|
||||
color: #777777;
|
||||
margin: 0px;
|
||||
padding: 5px;
|
||||
padding-bottom: 10px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.one_com .com_says a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.one_com .com_det a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.post_box .related_posts {
|
||||
|
||||
}
|
||||
|
||||
.post_box .related_posts p {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
padding-bottom: 20px;
|
||||
padding-left: 35px;
|
||||
font-family: verdana;
|
||||
|
||||
}
|
||||
|
||||
.post_box .related_posts a {
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
.post_nav_2 p {
|
||||
|
||||
text-align: center;
|
||||
color: #cccccc;
|
||||
font-family: verdana;
|
||||
}
|
||||
|
||||
.post_box .related_posts h3, #comments_box #respond, .comments_posted h3 {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-size: 18px;
|
||||
color: #FF8000;
|
||||
padding-top: 30px;
|
||||
margin-bottom: 20px;
|
||||
width: 300px;
|
||||
border-bottom: 5px solid #e0e0e0;
|
||||
}
|
||||
|
||||
.comments_posted {
|
||||
|
||||
margin-bottom: 50px;
|
||||
|
||||
}
|
||||
|
||||
.comments_posted h3 {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
}
|
||||
|
||||
.cmt_txtarea {
|
||||
width: 300px;
|
||||
height: 100px;
|
||||
|
||||
}
|
||||
|
||||
#comments_box #respond {
|
||||
|
||||
padding-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
|
||||
}
|
||||
|
||||
.pagetitle {
|
||||
color: #65DA33;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#searchform {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.si {
|
||||
background-color: #FFFFEE;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
#rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags {
|
||||
margin-top: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#post_nav p {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
#post_nav {
|
||||
text-align: left;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
#post_nav a, .post_nav_2 p a {
|
||||
text-decoration: none;
|
||||
font-family: Verdana;
|
||||
font-size: 12px;
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
#post_nav a:hover, .post_nav_2 p a:hover {
|
||||
text-decoration: underline;
|
||||
color: #FF8000;
|
||||
}
|
||||
|
||||
#rightcol #about {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#rightcol #r_news input {
|
||||
color: #333333;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#header {
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
background-image: url('images/header_bg.jpg');
|
||||
background-repeat: x-repeat;
|
||||
}
|
||||
|
||||
#header img {
|
||||
|
||||
float: right;
|
||||
margin-right: -3px;
|
||||
z-index: 100;
|
||||
|
||||
}
|
||||
|
||||
.tags {
|
||||
text-transform: lowercase;
|
||||
color: #333333;
|
||||
font-family: arial;
|
||||
font-size: 12px;
|
||||
border-top: 2px dotted #EEEEEE;
|
||||
width: 300px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.tags a {
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
.tags p {
|
||||
text-align: left;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
blockquote strong {
|
||||
font-family: verdana;
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
color: #FF0000;
|
||||
font-style: italic;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0px;
|
||||
background-color: #eeeeee;
|
||||
border: 2px solid #dddddd;
|
||||
padding: 24px;
|
||||
padding-top: 10px;
|
||||
padding-left: 60px;
|
||||
padding-bottom: 10px;
|
||||
font-size: 13px;
|
||||
color: #333333;
|
||||
margin-bottom: 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
html>body #header img { margin-right: 0px; }
|
||||
|
||||
#subscribe h3 {
|
||||
color: #ff0000;
|
||||
margin-top: 30px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.post_actions a{
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
.post_actions {
|
||||
border-top: 4px solid #DDDDDD;
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
text-align: center;
|
||||
background-color: #FFFFDd;
|
||||
color: #dddddd;
|
||||
white-space: no-wrap;
|
||||
padding-left: 20px;
|
||||
padding-bottom: 5px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
#subscribe td {
|
||||
color: #333333;
|
||||
font-size: 12px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
#subscribe input {
|
||||
font-size: 13px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.post_content {
|
||||
font-size: 13px;
|
||||
margin-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
text-align: justify;
|
||||
font-family: verdana;
|
||||
}
|
||||
|
||||
.post_content p {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-bottom: 20px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
#header h1 {
|
||||
z-index: 200;
|
||||
margin: 0px;
|
||||
position: absolute;
|
||||
float: left;
|
||||
text-transform: lowercase;
|
||||
padding: 0px;
|
||||
font-size: 45px;
|
||||
margin-top: 70px;
|
||||
margin-left: 40px;
|
||||
|
||||
}
|
||||
|
||||
#header h1 a {
|
||||
white-space: no-wrap;
|
||||
text-decoration: none;
|
||||
color: #FAFAFA;
|
||||
display: block
|
||||
}
|
||||
|
||||
#header h1 a:hover {
|
||||
color: #FAFAFA;
|
||||
border-bottom: 3px dotted #FAFAFA;
|
||||
}
|
||||
|
||||
html>body #header h1 { margin-left: 60px; }
|
||||
|
||||
body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#leftcol {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-left: 0px;
|
||||
margin-top: 17px;
|
||||
color: #000;
|
||||
padding: 3px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#leftcol .box_head h3 {
|
||||
text-transform: uppercase;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-family: georgia;
|
||||
font-size: 18px;
|
||||
color: #dddddd;
|
||||
border-top: 4px solid #dddddd;
|
||||
border-bottom: 4px solid #cccccc;
|
||||
padding-left: 10px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
background-image: url('images/stripesbg.png');
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#leftcol .box_head input {
|
||||
text-transform: lowercase;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
#leftcol .box_head {
|
||||
margin-left: 7px;
|
||||
background-color: #ffefd4;
|
||||
border-bottom: 2px solid #eeeeee;
|
||||
padding-bottom: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#leftcol .box_head p a {
|
||||
color: #0a2d4d;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
border-bottom: 3px solid #fefefe;
|
||||
padding-top: 20px;
|
||||
text-transform: lowercase;
|
||||
padding-bottom: 20px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#leftcol .box_head p a:hover {
|
||||
background-color: #fafafa;
|
||||
border-bottom: 3px solid #eeeeee;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#leftcol .box_head p {
|
||||
text-align: left;
|
||||
margin: 0px;
|
||||
width: 170px;
|
||||
padding-bottom: 0px;
|
||||
padding-top: 0px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
#rightcol {
|
||||
position: absolute;
|
||||
left: 77%;
|
||||
top: 278px;
|
||||
border: 3px solid #eeeeee;
|
||||
width: 200px;
|
||||
z-index: 3;
|
||||
color: #333333;
|
||||
padding: 10px;
|
||||
text-transform: lowercase;
|
||||
|
||||
}
|
||||
|
||||
#rightcol p {
|
||||
padding: 0px;
|
||||
marging: 0px;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
#rightcol #about img, #rightcol #linksbro img {
|
||||
border: 5px solid #eeeeee;
|
||||
}
|
||||
|
||||
#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 {
|
||||
background-color: #fafafa;
|
||||
border: 1px dotted #e0e0e0;
|
||||
font-size: 14px;
|
||||
color: #104bbc;
|
||||
padding: 5px;
|
||||
padding-top: 10px;
|
||||
font-family: Arial;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a {
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p {
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#content_warp {
|
||||
margin: 20px 25% 0 215px;
|
||||
padding: 3px;
|
||||
color: #000;
|
||||
background-color: #ededed;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 5px;
|
||||
background-color: #FFFFFF;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
|
||||
#footer {
|
||||
width: 99%;
|
||||
margin-top: 30px;
|
||||
height: 98px;
|
||||
background-color: #101b1d;
|
||||
}
|
||||
|
||||
#footer td a {
|
||||
color: #FF8000;
|
||||
}
|
||||
|
||||
#footer td a img {
|
||||
border: 2px solid #108eed;
|
||||
}
|
||||
|
||||
#footer td p {
|
||||
font-family: Verdana;
|
||||
font-size: 10px;
|
||||
color: #c0c0c0;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.s_offer {
|
||||
color: #65DA33;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.post_box {
|
||||
text-transform: lowercase;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
#newsletter_box {
|
||||
text-transform: lowercase;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 30px;
|
||||
font-style: normal;
|
||||
background-color: #ffffff;
|
||||
border: 5px solid #dddddd;
|
||||
}
|
||||
|
||||
#newsletter_head {
|
||||
color: #EEEEEE;
|
||||
font-family: Georgia;
|
||||
background-image: url('images/stripesbg.png');
|
||||
padding: 10px;
|
||||
padding-left: 30px;
|
||||
border-bottom: 5px solid #dddddd;
|
||||
}
|
||||
|
||||
#newsletter_body {
|
||||
color: #333333;
|
||||
font-family: Verdana;
|
||||
text-align: justify;
|
||||
background-color: #FFFFFF;
|
||||
padding: 10px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.s_offer {
|
||||
color: #65DA33;
|
||||
font-size: 26px;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.post_title a {
|
||||
color: #EEEEEE;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.post_title a:hover {
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
.post_title {
|
||||
background-image: url('images/stripe_post.png');
|
||||
text-transform: uppercase;
|
||||
font-size: 18px;
|
||||
font-family: georgia;
|
||||
padding: 10px;
|
||||
border-top: 4px solid #c0c0c0;
|
||||
margin: 0px;
|
||||
border-bottom: 2px solid #ffffdd;
|
||||
}
|
||||
|
||||
.post_det {
|
||||
text-transform: none;
|
||||
margin: 0px;
|
||||
border-top: 1px solid #f0f0f0;
|
||||
padding: 0px;
|
||||
padding-top: 5px;
|
||||
color: #999999;
|
||||
font-size: 10px;
|
||||
font-family: verdana;
|
||||
margin-bottom: 20px;
|
||||
background-color: #eeeeee;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 10px;
|
||||
text-align: left;
|
||||
border-bottom: 2px solid #dddddd;
|
||||
}
|
||||
|
||||
.post_det a {
|
||||
color: #999999;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
.subtle {
|
||||
text-transform: lowercase;
|
||||
font-size: 10px;
|
||||
font-family: verdana;
|
||||
color: #108eed;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
#top_menu #navlist, #top_menu #navlist li {
|
||||
padding:0px;
|
||||
margin: 0px;
|
||||
padding-top: 14px;
|
||||
text-transform: lowercase;
|
||||
padding-bottom: 17px;
|
||||
padding-left: 30px;
|
||||
border-left: 1px solid #65cdef;
|
||||
}
|
||||
|
||||
#top_menu #navlist, #top_menu #navlist li #first {
|
||||
|
||||
border-left: 0px;
|
||||
|
||||
}
|
||||
|
||||
#top_menu #navlist {
|
||||
padding-left: 30px;
|
||||
background-color: #1dabd9;
|
||||
border-top: 5px solid #0e96c3;
|
||||
border-bottom: 5px solid #0e96c3;
|
||||
}
|
||||
|
||||
#top_menu #navlist li {
|
||||
color: #444444;
|
||||
font-size: 10px;
|
||||
display: inline;
|
||||
list-style-type: none;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
#top_menu #navlist li a {
|
||||
text-decoration: none;
|
||||
font-family: Verdana;
|
||||
color: #fafafa;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#top_menu #navlist li a:hover {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.post_content a {
|
||||
color: #108eed;
|
||||
}
|
||||
|
||||
ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; }
|
||||
ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;}
|
||||
ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; }
|
||||
ul#tagcloud li a:hover { text-decoration:underline; }
|
||||
ul#tagcloud li.t1 a { color:#797979; font-size: 120%; }
|
||||
ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; }
|
||||
ul#tagcloud li.t3 a { color:#616161; font-size: 190%; }
|
||||
ul#tagcloud li.t4 a { color:#555555; font-size: 210%; }
|
||||
ul#tagcloud li.t5 a { color:#484848; font-size: 230%; }
|
||||
ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; }
|
||||
ul#tagcloud li.t7 a { color:#303030; font-size: 270%; }
|
||||
ul#tagcloud li.t8 a { color:#242424; font-size: 290%; }
|
||||
ul#tagcloud li.t9 a { color:#181818; font-size: 310%; }
|
||||
ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }
|
@ -1,79 +0,0 @@
|
||||
#comments_inviter
|
||||
#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me
|
||||
span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter
|
||||
img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px
|
||||
solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px
|
||||
solid #EEE}.one_com .com_says, .one_com
|
||||
.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px
|
||||
solid #ddd;width:320px}.one_com
|
||||
.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det
|
||||
a{text-decoration:none}.one_com
|
||||
.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt
|
||||
p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says
|
||||
a{color:#333}.one_com .com_det
|
||||
a{color:#333}.post_box
|
||||
.related_posts{}.post_box .related_posts
|
||||
p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts
|
||||
a{color:#108eed}.post_nav_2
|
||||
p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted
|
||||
h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted
|
||||
h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box
|
||||
#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px
|
||||
solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol
|
||||
#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav
|
||||
p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p
|
||||
a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol
|
||||
#about{padding-bottom:10px}#rightcol #r_news
|
||||
input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header
|
||||
img{float:right;margin-right: -3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags
|
||||
a{color:#108eed}.tags
|
||||
p{text-align:left;margin:0px;padding:0px}blockquote
|
||||
strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px
|
||||
solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header
|
||||
img{margin-right:0px}#subscribe
|
||||
h3{color:#f00;margin-top:30px;padding:20px}.post_actions
|
||||
a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe
|
||||
td{color:#333;font-size:12px;text-transform:lowercase}#subscribe
|
||||
input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content
|
||||
p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header
|
||||
h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1
|
||||
a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header
|
||||
h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head
|
||||
h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head
|
||||
input{text-transform:lowercase;color:#333}#leftcol
|
||||
.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p
|
||||
a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head
|
||||
p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px
|
||||
solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol
|
||||
p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro
|
||||
img{border:5px
|
||||
solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags
|
||||
h3{background-color:#fafafa;border:1px
|
||||
dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p
|
||||
a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro
|
||||
p{font-size:12px;text-align:left}#content_warp{margin:20px
|
||||
25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td
|
||||
a{color:#FF8000}#footer td a
|
||||
img{border:2px
|
||||
solid #108eed}#footer td
|
||||
p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px
|
||||
solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title
|
||||
a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det
|
||||
a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist
|
||||
li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li
|
||||
#first{border-left:0px}#top_menu
|
||||
#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist
|
||||
li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li
|
||||
a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content
|
||||
a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud
|
||||
li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1
|
||||
a{color:#797979;font-size:120%}ul#tagcloud li.t2
|
||||
a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3
|
||||
a{color:#616161;font-size:190%}ul#tagcloud li.t4
|
||||
a{color:#555;font-size:210%}ul#tagcloud li.t5
|
||||
a{color:#484848;font-size:230%}ul#tagcloud li.t6
|
||||
a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7
|
||||
a{color:#303030;font-size:270%}ul#tagcloud li.t8
|
||||
a{color:#242424;font-size:290%}ul#tagcloud li.t9
|
||||
a{color:#181818;font-size:310%}ul#tagcloud li.t10
|
||||
a{color:#0c0c0c;font-size:330%}
|
@ -1,14 +0,0 @@
|
||||
@import "/_test_files/css_uriRewriter/foo.css";
|
||||
@import '/_test_files/css_uriRewriter/bar/foo.css' print;
|
||||
@import '/_test_files/bar/foo.css' print;
|
||||
@import '/foo.css' print;
|
||||
@import '/css/foo.css'; /* abs, should not alter */
|
||||
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
|
||||
@import url(/_test_files/foo.css) tv, projection;
|
||||
@import url("/css/foo.css"); /* abs, should not alter */
|
||||
@import url(/css2/foo.css); /* abs, should not alter */
|
||||
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
|
||||
foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')}
|
||||
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
|
||||
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
|
||||
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */
|
@ -1,14 +0,0 @@
|
||||
@import "foo.css";
|
||||
@import 'bar/foo.css' print;
|
||||
@import '../bar/foo.css' print;
|
||||
@import '../../foo.css' print;
|
||||
@import '/css/foo.css'; /* abs, should not alter */
|
||||
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
|
||||
@import url(../foo.css) tv, projection;
|
||||
@import url("/css/foo.css"); /* abs, should not alter */
|
||||
@import url(/css2/foo.css); /* abs, should not alter */
|
||||
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
|
||||
foo {background:url('bar/foo.png')}
|
||||
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
|
||||
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
|
||||
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */
|
@ -1,96 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
|
||||
<head>
|
||||
<!-- comments get removed -->
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
||||
<meta name="author" content="Dave Shea" />
|
||||
<!-- also whitespace around block or undisplayed elements -->
|
||||
<meta name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display" />
|
||||
<meta name="description" content="A demonstration of what can be accomplished visually through CSS-based design." />
|
||||
<meta name="robots" content="all" />
|
||||
<title>css Zen Garden: The Beauty in CSS Design</title>
|
||||
|
||||
<!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
|
||||
<script type="text/javascript"><!--
|
||||
// js comment inside SCRIPT element
|
||||
var is = {
|
||||
ie: navigator.appName == 'Microsoft Internet Explorer',
|
||||
java: navigator.javaEnabled(),
|
||||
ns: navigator.appName == 'Netscape',
|
||||
ua: navigator.userAgent.toLowerCase(),
|
||||
version: parseFloat(navigator.appVersion.substr(21)) ||
|
||||
parseFloat(navigator.appVersion),
|
||||
win: navigator.platform == 'Win32'
|
||||
}
|
||||
is.mac = is.ua.indexOf('mac') >= 0;
|
||||
if (is.ua.indexOf('opera') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.opera = true;
|
||||
}
|
||||
if (is.ua.indexOf('gecko') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.gecko = true;
|
||||
}
|
||||
// --></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var i = 0;
|
||||
while (++i < 10)
|
||||
{
|
||||
// ...
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */ i = 1; /* ]]> */
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
(i < 1); /* CDATA needed */
|
||||
</script>
|
||||
<!--[if IE 6]>
|
||||
<style type="text/css">
|
||||
/*! copyright: you'll need CDATA for this < & */
|
||||
body {background:white;}
|
||||
</style>
|
||||
<![endif]-->
|
||||
<style type="text/css" title="currentStyle" media="screen">
|
||||
@import "/001/001.css";
|
||||
/*\*/ css hack {} /* */
|
||||
/* normal CSS comment */
|
||||
/*/*/ css hack {} /* */
|
||||
css hack {
|
||||
display/**/:/**/none;
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<link
|
||||
rel="Shortcut Icon"
|
||||
type="image/x-icon"
|
||||
href="http://www.csszengarden.com/favicon.ico" />
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="RSS"
|
||||
href="http://www.csszengarden.com/zengarden.xml" />
|
||||
</head>
|
||||
<body id="css-zen-garden">
|
||||
<!--[if !IE]>--><p>Browser != IE</p><!--<![endif]-->
|
||||
<div id="container">
|
||||
<div id="pageHeader">
|
||||
<h1><span>css Zen Garden</span></h1>
|
||||
<h2><span>The Beauty of <acronym title="Cascading Style Sheets">CSS</acronym>
|
||||
Design</span></h2>
|
||||
</div>
|
||||
<pre>
|
||||
White space is important here!
|
||||
</pre>
|
||||
<div id="quickSummary">
|
||||
<p class="p1"><span>A demonstration of what can be accomplished visually through <acronym title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p>
|
||||
<p class="p2"><span>Download the sample <a href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p>
|
||||
</div>
|
||||
<textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
|
||||
|
||||
1234567890</textarea>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
|
||||
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" ><head><meta
|
||||
http-equiv="content-type" content="text/html; charset=iso-8859-1" /><meta
|
||||
name="author" content="Dave Shea" /><meta
|
||||
name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display" /><meta
|
||||
name="description" content="A demonstration of what can be accomplished visually through CSS-based design." /><meta
|
||||
name="robots" content="all" /><title>css Zen Garden: The Beauty in CSS Design</title> <script type="text/javascript">var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
|
||||
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
|
||||
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}</script> <script type="text/javascript">/*<![CDATA[*/var i=0;while(++i<10)
|
||||
{}/*]]>*/</script> <script type="text/javascript">i=1;</script> <script type="text/javascript">/*<![CDATA[*/(i<1);/*]]>*/</script> <!--[if IE 6]><style type="text/css">/*<![CDATA[*/
|
||||
/* copyright: you'll need CDATA for this < & */
|
||||
body{background:white}/*]]>*/</style><![endif]--><style type="text/css" title="currentStyle" media="screen">@import "/001/001.css";/*\*/css
|
||||
hack{}/**/ /*/*/css
|
||||
hack{}/**/css
|
||||
hack{display/**/:/**/none;display:none}</style><link
|
||||
rel="Shortcut Icon"
|
||||
type="image/x-icon"
|
||||
href="http://www.csszengarden.com/favicon.ico" /><link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="RSS"
|
||||
href="http://www.csszengarden.com/zengarden.xml" /></head><body
|
||||
id="css-zen-garden"> <!--[if !IE]>--><p>Browser != IE</p><!--<![endif]--><div
|
||||
id="container"><div
|
||||
id="pageHeader"><h1><span>css Zen Garden</span></h1><h2><span>The Beauty of <acronym
|
||||
title="Cascading Style Sheets">CSS</acronym> Design</span></h2></div><pre>
|
||||
White space is important here!
|
||||
</pre><div
|
||||
id="quickSummary"><p
|
||||
class="p1"><span>A demonstration of what can be accomplished visually through <acronym
|
||||
title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p><p
|
||||
class="p2"><span>Download the sample <a
|
||||
href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a
|
||||
href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p></div><textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
|
||||
|
||||
1234567890</textarea></div></body></html>
|
@ -1,95 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- comments get removed -->
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="author" content="Dave Shea">
|
||||
<!-- also whitespace around block or undisplayed elements -->
|
||||
<meta name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display">
|
||||
<meta name="description" content="A demonstration of what can be accomplished visually through CSS-based design.">
|
||||
<meta name="robots" content="all">
|
||||
<title>css Zen Garden: The Beauty in CSS Design</title>
|
||||
|
||||
<!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
|
||||
<script type="text/javascript"><!--
|
||||
// js comment inside SCRIPT element
|
||||
var is = {
|
||||
ie: navigator.appName == 'Microsoft Internet Explorer',
|
||||
java: navigator.javaEnabled(),
|
||||
ns: navigator.appName == 'Netscape',
|
||||
ua: navigator.userAgent.toLowerCase(),
|
||||
version: parseFloat(navigator.appVersion.substr(21)) ||
|
||||
parseFloat(navigator.appVersion),
|
||||
win: navigator.platform == 'Win32'
|
||||
}
|
||||
is.mac = is.ua.indexOf('mac') >= 0;
|
||||
if (is.ua.indexOf('opera') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.opera = true;
|
||||
}
|
||||
if (is.ua.indexOf('gecko') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.gecko = true;
|
||||
}
|
||||
// --></script>
|
||||
<script type="text/javascript">
|
||||
var i = 0;
|
||||
while (++i < 10)
|
||||
{
|
||||
// ...
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
i = 1;
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
(i < 1);
|
||||
</script>
|
||||
<!--[if IE 6]>
|
||||
<style type="text/css">
|
||||
/*! copyright: you'll need CDATA for this < & */
|
||||
body {background:white;}
|
||||
</style>
|
||||
<![endif]-->
|
||||
<style type="text/css" title="currentStyle" media="screen">
|
||||
@import "/001/001.css";
|
||||
/*\*/ css hack {} /* */
|
||||
/* normal CSS comment */
|
||||
/*/*/ css hack {} /* */
|
||||
css hack {
|
||||
display/**/:/**/none;
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<link
|
||||
rel="Shortcut Icon"
|
||||
type="image/x-icon"
|
||||
href="http://www.csszengarden.com/favicon.ico">
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="RSS"
|
||||
href="http://www.csszengarden.com/zengarden.xml">
|
||||
</head>
|
||||
<body id="css-zen-garden">
|
||||
<!--[if !IE]>--><p>Browser != IE</p><!--<![endif]-->
|
||||
<div id="container">
|
||||
<div id="pageHeader">
|
||||
<h1><span>css Zen Garden</span></h1>
|
||||
<h2><span>The Beauty of <acronym title="Cascading Style Sheets">CSS</acronym>
|
||||
Design</span></h2>
|
||||
</div>
|
||||
<pre>
|
||||
White space is important here!
|
||||
</pre>
|
||||
<div id="quickSummary">
|
||||
<p class="p1"><span>A demonstration of what can be accomplished visually through <acronym title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p>
|
||||
<p class="p2"><span>Download the sample <a href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p>
|
||||
</div>
|
||||
<textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
|
||||
|
||||
1234567890</textarea>
|
||||
Preserve at least 1 char of whitespace near <script type="text/javascript"></script>scripts in case of document.write().
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,36 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html
|
||||
lang="en"><head><meta
|
||||
http-equiv="content-type" content="text/html; charset=iso-8859-1"><meta
|
||||
name="author" content="Dave Shea"><meta
|
||||
name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display"><meta
|
||||
name="description" content="A demonstration of what can be accomplished visually through CSS-based design."><meta
|
||||
name="robots" content="all"><title>css Zen Garden: The Beauty in CSS Design</title> <script type="text/javascript">var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
|
||||
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
|
||||
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}</script> <script type="text/javascript">var i=0;while(++i<10)
|
||||
{}</script> <script type="text/javascript">i=1;</script> <script type="text/javascript">(i<1);</script> <!--[if IE 6]><style type="text/css">
|
||||
/* copyright: you'll need CDATA for this < & */
|
||||
body{background:white}</style><![endif]--><style type="text/css" title="currentStyle" media="screen">@import "/001/001.css";/*\*/css
|
||||
hack{}/**/ /*/*/css
|
||||
hack{}/**/css
|
||||
hack{display/**/:/**/none;display:none}</style><link
|
||||
rel="Shortcut Icon"
|
||||
type="image/x-icon"
|
||||
href="http://www.csszengarden.com/favicon.ico"><link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="RSS"
|
||||
href="http://www.csszengarden.com/zengarden.xml"></head><body
|
||||
id="css-zen-garden"> <!--[if !IE]>--><p>Browser != IE</p><!--<![endif]--><div
|
||||
id="container"><div
|
||||
id="pageHeader"><h1><span>css Zen Garden</span></h1><h2><span>The Beauty of <acronym
|
||||
title="Cascading Style Sheets">CSS</acronym> Design</span></h2></div><pre>
|
||||
White space is important here!
|
||||
</pre><div
|
||||
id="quickSummary"><p
|
||||
class="p1"><span>A demonstration of what can be accomplished visually through <acronym
|
||||
title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p><p
|
||||
class="p2"><span>Download the sample <a
|
||||
href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a
|
||||
href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p></div><textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
|
||||
|
||||
1234567890</textarea>Preserve at least 1 char of whitespace near <script type="text/javascript"></script>scripts in case of document.write().</div></body></html>
|
@ -1,3 +0,0 @@
|
||||
/* @import url('bad.css' ) bad; */
|
||||
adjacent2 foo { background: red url(/red.gif); }
|
||||
adjacent2 bar { background: url('../green.gif') }
|
@ -1,4 +0,0 @@
|
||||
@import url( adjacent.css ) all;
|
||||
@import '../input.css';
|
||||
tv foo { background: red url(/red.gif); }
|
||||
tv bar { background: url('../green.gif') }
|
@ -1,4 +0,0 @@
|
||||
@import url(../css/styles.css);
|
||||
@import url(http://example.com/hello.css);
|
||||
adjacent foo { background: red url(/red.gif); }
|
||||
adjacent bar { background: url('../green.gif') }
|
@ -1,4 +0,0 @@
|
||||
@import url( adjacent.css ) screen;
|
||||
@import "1/tv.css" tv, projection;
|
||||
input foo { background: red url(/red.gif); }
|
||||
input bar { background: url('../green.gif') }
|
@ -1,48 +0,0 @@
|
||||
@media screen {
|
||||
/* some CSS to try to exercise things in general */
|
||||
|
||||
@import url(/more.css);
|
||||
|
||||
body, td, th {
|
||||
font-family: Verdana , "Bitstream Vera Sans" , sans-serif ;
|
||||
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
.nav {
|
||||
margin-left: 20%;
|
||||
}
|
||||
#main-nav {
|
||||
background-color: red;
|
||||
border: 1px solid #00ff77;
|
||||
}
|
||||
|
||||
div#content
|
||||
h1 + p {
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media all and (min-width: 640px) {
|
||||
#media-queries-1 { background-color: #0f0; }
|
||||
}
|
||||
|
||||
@media screen and (max-width: 2000px) {
|
||||
#media-queries-2 { background-color: #0f0; }
|
||||
}
|
||||
@import url(http://example.com/hello.css);
|
||||
adjacent foo { background: red url(/red.gif); }
|
||||
adjacent bar { background: url('%TEST_FILES_URI%/green.gif') }
|
||||
}
|
||||
|
||||
@media tv,projection {
|
||||
/* @import url('%TEST_FILES_URI%/importProcessor/1/bad.css') bad; */
|
||||
adjacent2 foo { background: red url(/red.gif); }
|
||||
adjacent2 bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') }
|
||||
@import '../input.css';
|
||||
tv foo { background: red url(/red.gif); }
|
||||
tv bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') }
|
||||
}
|
||||
|
||||
input foo { background: red url(/red.gif); }
|
||||
input bar { background: url('%TEST_FILES_URI%/green.gif') }
|
@ -1,57 +0,0 @@
|
||||
/*! is.js
|
||||
|
||||
(c) 2001 Douglas Crockford
|
||||
2001 June 3
|
||||
*/
|
||||
|
||||
// is
|
||||
|
||||
// The -is- object is used to identify the browser. Every browser edition
|
||||
// identifies itself, but there is no standard way of doing it, and some of
|
||||
// the identification is deceptive. This is because the authors of web
|
||||
// browsers are liars. For example, Microsoft's IE browsers claim to be
|
||||
// Mozilla 4. Netscape 6 claims to be version 5.
|
||||
|
||||
var is = {
|
||||
ie: navigator.appName == 'Microsoft Internet Explorer',
|
||||
java: navigator.javaEnabled(),
|
||||
ns: navigator.appName == 'Netscape',
|
||||
ua: navigator.userAgent.toLowerCase(),
|
||||
version: parseFloat(navigator.appVersion.substr(21)) ||
|
||||
parseFloat(navigator.appVersion),
|
||||
win: navigator.platform == 'Win32'
|
||||
}
|
||||
/*!*
|
||||
* preserve this comment, too
|
||||
*/
|
||||
is.mac = is.ua.indexOf('mac') >= 0;
|
||||
if (is.ua.indexOf('opera') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.opera = true;
|
||||
}
|
||||
if (is.ua.indexOf('gecko') >= 0) {
|
||||
is.ie = is.ns = false;
|
||||
is.gecko = true;
|
||||
}
|
||||
|
||||
/*@cc_on
|
||||
/*@if (@_win32)
|
||||
if (is.ie && is.win)
|
||||
document.write("PASS: IE/win honored conditional comment.<br>");
|
||||
@else @*/
|
||||
if (is.ie && is.win)
|
||||
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");
|
||||
else
|
||||
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");
|
||||
/*@end
|
||||
@*/
|
||||
|
||||
var recognizesCondComm = true;
|
||||
//@cc_on/*
|
||||
recognizesCondComm = false;
|
||||
//@cc_on*/
|
||||
|
||||
if ((is.ie && is.win) == recognizesCondComm)
|
||||
document.write("PASS: IE/win honored single-line conditional comment.<br>");
|
||||
else
|
||||
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
|
@ -1,22 +0,0 @@
|
||||
/* is.js
|
||||
|
||||
(c) 2001 Douglas Crockford
|
||||
2001 June 3
|
||||
*/
|
||||
var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
|
||||
/**
|
||||
* preserve this comment, too
|
||||
*/
|
||||
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
|
||||
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on
|
||||
/*@if (@_win32)
|
||||
if (is.ie && is.win)
|
||||
document.write("PASS: IE/win honored conditional comment.<br>");
|
||||
@else @*/if(is.ie&&is.win)
|
||||
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");else
|
||||
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");/*@end
|
||||
@*/var recognizesCondComm=true;//@cc_on/*
|
||||
recognizesCondComm=false;//@cc_on*/
|
||||
if((is.ie&&is.win)==recognizesCondComm)
|
||||
document.write("PASS: IE/win honored single-line conditional comment.<br>");else
|
||||
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
|
@ -1,22 +0,0 @@
|
||||
/* is.js
|
||||
|
||||
(c) 2001 Douglas Crockford
|
||||
2001 June 3
|
||||
*/
|
||||
var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
|
||||
/**
|
||||
* preserve this comment, too
|
||||
*/
|
||||
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
|
||||
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on
|
||||
/*@if (@_win32)
|
||||
if (is.ie && is.win)
|
||||
document.write("PASS: IE/win honored conditional comment.<br>");
|
||||
@else @*/if(is.ie&&is.win)
|
||||
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");else
|
||||
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");/*@end
|
||||
@*/var recognizesCondComm=true;//@cc_on/*
|
||||
recognizesCondComm=false;//@cc_on*/
|
||||
if((is.ie&&is.win)==recognizesCondComm)
|
||||
document.write("PASS: IE/win honored single-line conditional comment.<br>");else
|
||||
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
|
@ -1,14 +0,0 @@
|
||||
var isWin;
|
||||
/*@cc_on
|
||||
@if (@_win32)
|
||||
isWin = true;
|
||||
@else @*/ isWin = false;
|
||||
/*@end
|
||||
@*/
|
||||
|
||||
isWin = /*@cc_on!*/!1;
|
||||
|
||||
var recognizesCondComm = true;
|
||||
//@cc_on/*
|
||||
recognizesCondComm = false;
|
||||
//@cc_on*/
|
@ -1,13 +0,0 @@
|
||||
var isWin;
|
||||
/*@cc_on
|
||||
@if (@_win32)
|
||||
isWin = true;
|
||||
@else @*/
|
||||
isWin = false;
|
||||
/*@end
|
||||
@*/
|
||||
|
||||
var recognizesCondComm = true;
|
||||
//@cc_on/*
|
||||
recognizesCondComm = false;
|
||||
//@cc_on*/
|
@ -1,4 +0,0 @@
|
||||
|
||||
function testIssue74() {
|
||||
return /'/;
|
||||
}
|
@ -1 +0,0 @@
|
||||
function testIssue74(){return /'/;}
|
@ -1 +0,0 @@
|
||||
function testIssue74(){return /'/}
|
File diff suppressed because it is too large
Load Diff
@ -1,168 +0,0 @@
|
||||
var MrClay = window.MrClay || {};
|
||||
|
||||
/**
|
||||
* Simplified access to/manipulation of the query string
|
||||
*
|
||||
* Based on: http://adamv.com/dev/javascript/files/querystring.js
|
||||
* Design pattern: http://www.litotes.demon.co.uk/js_info/private_static.html#wConst
|
||||
*/
|
||||
MrClay.QueryString = function(){
|
||||
/**
|
||||
* @static
|
||||
* @private
|
||||
*/
|
||||
var parse = function(str) {
|
||||
var assignments = str.split('&')
|
||||
,obj = {}
|
||||
,propValue;
|
||||
for (var i = 0, l = assignments.length; i < l; ++i) {
|
||||
propValue = assignments[i].split('=');
|
||||
if (propValue.length > 2
|
||||
|| -1 != propValue[0].indexOf('+')
|
||||
|| propValue[0] == ''
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
if (propValue.length == 1) {
|
||||
propValue[1] = propValue[0];
|
||||
}
|
||||
obj[unescape(propValue[0])] = unescape(propValue[1].replace(/\+/g, ' '));
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor (MrClay.QueryString becomes this)
|
||||
*
|
||||
* @param mixed A window object, a query string, or empty (default current window)
|
||||
*/
|
||||
function construct_(spec) {
|
||||
spec = spec || window;
|
||||
if (typeof spec == 'object') {
|
||||
// get querystring from window
|
||||
this.window = spec;
|
||||
spec = spec.location.search.substr(1);
|
||||
} else {
|
||||
this.window = window;
|
||||
}
|
||||
this.vars = parse(spec);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the window
|
||||
*
|
||||
* @static
|
||||
* @public
|
||||
* @param object vars Specify querystring vars only if you wish to replace them
|
||||
* @param object window_ window to be reloaded (current window by default)
|
||||
*/
|
||||
construct_.reload = function(vars, window_) {
|
||||
window_ = window_ || window;
|
||||
vars = vars || (new MrClay.QueryString(window_)).vars;
|
||||
var l = window_.location
|
||||
,currUrl = l.href
|
||||
,s = MrClay.QueryString.toString(vars)
|
||||
,newUrl = l.protocol + '//' + l.hostname + l.pathname
|
||||
+ (s ? '?' + s : '') + l.hash;
|
||||
if (currUrl == newUrl) {
|
||||
l.reload();
|
||||
} else {
|
||||
l.assign(newUrl);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the value of a querystring var
|
||||
*
|
||||
* @static
|
||||
* @public
|
||||
* @param string key
|
||||
* @param mixed default_ value to return if key not found
|
||||
* @param object window_ window to check (current window by default)
|
||||
* @return mixed
|
||||
*/
|
||||
construct_.get = function(key, default_, window_) {
|
||||
window_ = window_ || window;
|
||||
return (new MrClay.QueryString(window_)).get(key, default_);
|
||||
};
|
||||
|
||||
/**
|
||||
* Reload the page setting one or multiple querystring vars
|
||||
*
|
||||
* @static
|
||||
* @public
|
||||
* @param mixed key object of query vars/values, or a string key for a single
|
||||
* assignment
|
||||
* @param mixed null for multiple settings, the value to assign for single
|
||||
* @param object window_ window to reload (current window by default)
|
||||
*/
|
||||
construct_.set = function(key, value, window_) {
|
||||
window_ = window_ || window;
|
||||
(new MrClay.QueryString(window_)).set(key, value).reload();
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert an object of query vars/values to a querystring
|
||||
*
|
||||
* @static
|
||||
* @public
|
||||
* @param object query vars/values
|
||||
* @return string
|
||||
*/
|
||||
construct_.toString = function(vars) {
|
||||
var pieces = [];
|
||||
for (var prop in vars) {
|
||||
pieces.push(escape(prop) + '=' + escape(vars[prop]));
|
||||
}
|
||||
return pieces.join('&');
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
construct_.prototype.reload = function() {
|
||||
MrClay.QueryString.reload(this.vars, this.window);
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
construct_.prototype.get = function(key, default_) {
|
||||
if (typeof default_ == 'undefined') {
|
||||
default_ = null;
|
||||
}
|
||||
return (this.vars[key] == null)
|
||||
? default_
|
||||
: this.vars[key];
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
construct_.prototype.set = function(key, value) {
|
||||
var obj = {};
|
||||
if (typeof key == 'string') {
|
||||
obj[key] = value;
|
||||
} else {
|
||||
obj = key;
|
||||
}
|
||||
for (var prop in obj) {
|
||||
if (obj[prop] == null) {
|
||||
delete this.vars[prop];
|
||||
} else {
|
||||
this.vars[prop] = obj[prop];
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
construct_.prototype.toString = function() {
|
||||
return QueryString.toString(this.vars);
|
||||
};
|
||||
|
||||
return construct_;
|
||||
}(); // define and execute
|
@ -1,24 +0,0 @@
|
||||
// http://mrclay.org/
|
||||
(function(){
|
||||
var
|
||||
reMailto = /^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,
|
||||
reRemoveTitleIf = /^my name is/,
|
||||
oo = window.onload,
|
||||
fixHrefs = function() {
|
||||
var i = 0, l, m;
|
||||
while (l = document.links[i++]) {
|
||||
// require phrase in href property
|
||||
if (m = l.href.match(reMailto)) {
|
||||
l.href = 'mailto:' + m[1] + '@' + m[2];
|
||||
if (reRemoveTitleIf.test(l.title)) {
|
||||
l.title = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
// end var
|
||||
window.onload = function() {
|
||||
oo && oo();
|
||||
fixHrefs();
|
||||
};
|
||||
})();
|
@ -1,2 +0,0 @@
|
||||
|
||||
// end in comment
|
@ -1,3 +0,0 @@
|
||||
function h() {
|
||||
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
/* this { is a } comment */
|
||||
|
||||
@import "/1.css";
|
||||
|
||||
selector {
|
||||
property: value;
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
/* this { is a } comment */
|
||||
|
||||
@import "/2.css";
|
||||
|
||||
selector2 {
|
||||
property: value;
|
||||
}
|
@ -1 +0,0 @@
|
||||
@import "/1.css";@import "/2.css";selector{property:value}selector2{property:value}
|
@ -1,2 +0,0 @@
|
||||
var triggerBug = {_default: "*/*"};
|
||||
var essentialFunctionality = true;
|
@ -1,280 +0,0 @@
|
||||
|
||||
/* email.js */
|
||||
|
||||
/* 1 */ // http://mrclay.org/
|
||||
/* 2 */ (function(){
|
||||
/* 3 */ var
|
||||
/* 4 */ reMailto = /^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,
|
||||
/* 5 */ reRemoveTitleIf = /^my name is/,
|
||||
/* 6 */ oo = window.onload,
|
||||
/* 7 */ fixHrefs = function() {
|
||||
/* 8 */ var i = 0, l, m;
|
||||
/* 9 */ while (l = document.links[i++]) {
|
||||
/* 10 */ // require phrase in href property
|
||||
/* 11 */ if (m = l.href.match(reMailto)) {
|
||||
/* 12 */ l.href = 'mailto:' + m[1] + '@' + m[2];
|
||||
/* 13 */ if (reRemoveTitleIf.test(l.title)) {
|
||||
/* 14 */ l.title = '';
|
||||
/* 15 */ }
|
||||
/* 16 */ }
|
||||
/* 17 */ }
|
||||
/* 18 */ };
|
||||
/* 19 */ // end var
|
||||
/* 20 */ window.onload = function() {
|
||||
/* 21 */ oo && oo();
|
||||
/* 22 */ fixHrefs();
|
||||
/* 23 */ };
|
||||
/* 24 */ })();
|
||||
|
||||
;
|
||||
/* lines_bugs.js */
|
||||
|
||||
/* 1 */ var triggerBug = {_default: "*/*"};
|
||||
/* 2 */ var essentialFunctionality = true;
|
||||
/* 3 */
|
||||
|
||||
;
|
||||
/* QueryString.js */
|
||||
|
||||
/* 1 */ var MrClay = window.MrClay || {};
|
||||
/* 2 */
|
||||
/* 3 */ /**
|
||||
/* 4 *| * Simplified access to/manipulation of the query string
|
||||
/* 5 *| *
|
||||
/* 6 *| * Based on: http://adamv.com/dev/javascript/files/querystring.js
|
||||
/* 7 *| * Design pattern: http://www.litotes.demon.co.uk/js_info/private_static.html#wConst
|
||||
/* 8 *| */
|
||||
/* 9 */ MrClay.QueryString = function(){
|
||||
/* 10 */ /**
|
||||
/* 11 *| * @static
|
||||
/* 12 *| * @private
|
||||
/* 13 *| */
|
||||
/* 14 */ var parse = function(str) {
|
||||
/* 15 */ var assignments = str.split('&')
|
||||
/* 16 */ ,obj = {}
|
||||
/* 17 */ ,propValue;
|
||||
/* 18 */ for (var i = 0, l = assignments.length; i < l; ++i) {
|
||||
/* 19 */ propValue = assignments[i].split('=');
|
||||
/* 20 */ if (propValue.length > 2
|
||||
/* 21 */ || -1 != propValue[0].indexOf('+')
|
||||
/* 22 */ || propValue[0] == ''
|
||||
/* 23 */ ) {
|
||||
/* 24 */ continue;
|
||||
/* 25 */ }
|
||||
/* 26 */ if (propValue.length == 1) {
|
||||
/* 27 */ propValue[1] = propValue[0];
|
||||
/* 28 */ }
|
||||
/* 29 */ obj[unescape(propValue[0])] = unescape(propValue[1].replace(/\+/g, ' '));
|
||||
/* 30 */ }
|
||||
/* 31 */ return obj;
|
||||
/* 32 */ };
|
||||
/* 33 */
|
||||
/* 34 */ /**
|
||||
/* 35 *| * Constructor (MrClay.QueryString becomes this)
|
||||
/* 36 *| *
|
||||
/* 37 *| * @param mixed A window object, a query string, or empty (default current window)
|
||||
/* 38 *| */
|
||||
/* 39 */ function construct_(spec) {
|
||||
/* 40 */ spec = spec || window;
|
||||
/* 41 */ if (typeof spec == 'object') {
|
||||
/* 42 */ // get querystring from window
|
||||
/* 43 */ this.window = spec;
|
||||
/* 44 */ spec = spec.location.search.substr(1);
|
||||
/* 45 */ } else {
|
||||
/* 46 */ this.window = window;
|
||||
/* 47 */ }
|
||||
/* 48 */ this.vars = parse(spec);
|
||||
/* 49 */ }
|
||||
/* 50 */
|
||||
|
||||
/* QueryString.js */
|
||||
|
||||
/* 51 */ /**
|
||||
/* 52 *| * Reload the window
|
||||
/* 53 *| *
|
||||
/* 54 *| * @static
|
||||
/* 55 *| * @public
|
||||
/* 56 *| * @param object vars Specify querystring vars only if you wish to replace them
|
||||
/* 57 *| * @param object window_ window to be reloaded (current window by default)
|
||||
/* 58 *| */
|
||||
/* 59 */ construct_.reload = function(vars, window_) {
|
||||
/* 60 */ window_ = window_ || window;
|
||||
/* 61 */ vars = vars || (new MrClay.QueryString(window_)).vars;
|
||||
/* 62 */ var l = window_.location
|
||||
/* 63 */ ,currUrl = l.href
|
||||
/* 64 */ ,s = MrClay.QueryString.toString(vars)
|
||||
/* 65 */ ,newUrl = l.protocol + '//' + l.hostname + l.pathname
|
||||
/* 66 */ + (s ? '?' + s : '') + l.hash;
|
||||
/* 67 */ if (currUrl == newUrl) {
|
||||
/* 68 */ l.reload();
|
||||
/* 69 */ } else {
|
||||
/* 70 */ l.assign(newUrl);
|
||||
/* 71 */ }
|
||||
/* 72 */ };
|
||||
/* 73 */
|
||||
/* 74 */ /**
|
||||
/* 75 *| * Get the value of a querystring var
|
||||
/* 76 *| *
|
||||
/* 77 *| * @static
|
||||
/* 78 *| * @public
|
||||
/* 79 *| * @param string key
|
||||
/* 80 *| * @param mixed default_ value to return if key not found
|
||||
/* 81 *| * @param object window_ window to check (current window by default)
|
||||
/* 82 *| * @return mixed
|
||||
/* 83 *| */
|
||||
/* 84 */ construct_.get = function(key, default_, window_) {
|
||||
/* 85 */ window_ = window_ || window;
|
||||
/* 86 */ return (new MrClay.QueryString(window_)).get(key, default_);
|
||||
/* 87 */ };
|
||||
/* 88 */
|
||||
/* 89 */ /**
|
||||
/* 90 *| * Reload the page setting one or multiple querystring vars
|
||||
/* 91 *| *
|
||||
/* 92 *| * @static
|
||||
/* 93 *| * @public
|
||||
/* 94 *| * @param mixed key object of query vars/values, or a string key for a single
|
||||
/* 95 *| * assignment
|
||||
/* 96 *| * @param mixed null for multiple settings, the value to assign for single
|
||||
/* 97 *| * @param object window_ window to reload (current window by default)
|
||||
/* 98 *| */
|
||||
/* 99 */ construct_.set = function(key, value, window_) {
|
||||
/* 100 */ window_ = window_ || window;
|
||||
|
||||
/* QueryString.js */
|
||||
|
||||
/* 101 */ (new MrClay.QueryString(window_)).set(key, value).reload();
|
||||
/* 102 */ };
|
||||
/* 103 */
|
||||
/* 104 */ /**
|
||||
/* 105 *| * Convert an object of query vars/values to a querystring
|
||||
/* 106 *| *
|
||||
/* 107 *| * @static
|
||||
/* 108 *| * @public
|
||||
/* 109 *| * @param object query vars/values
|
||||
/* 110 *| * @return string
|
||||
/* 111 *| */
|
||||
/* 112 */ construct_.toString = function(vars) {
|
||||
/* 113 */ var pieces = [];
|
||||
/* 114 */ for (var prop in vars) {
|
||||
/* 115 */ pieces.push(escape(prop) + '=' + escape(vars[prop]));
|
||||
/* 116 */ }
|
||||
/* 117 */ return pieces.join('&');
|
||||
/* 118 */ };
|
||||
/* 119 */
|
||||
/* 120 */ /**
|
||||
/* 121 *| * @public
|
||||
/* 122 *| */
|
||||
/* 123 */ construct_.prototype.reload = function() {
|
||||
/* 124 */ MrClay.QueryString.reload(this.vars, this.window);
|
||||
/* 125 */ return this;
|
||||
/* 126 */ };
|
||||
/* 127 */
|
||||
/* 128 */ /**
|
||||
/* 129 *| * @public
|
||||
/* 130 *| */
|
||||
/* 131 */ construct_.prototype.get = function(key, default_) {
|
||||
/* 132 */ if (typeof default_ == 'undefined') {
|
||||
/* 133 */ default_ = null;
|
||||
/* 134 */ }
|
||||
/* 135 */ return (this.vars[key] == null)
|
||||
/* 136 */ ? default_
|
||||
/* 137 */ : this.vars[key];
|
||||
/* 138 */ };
|
||||
/* 139 */
|
||||
/* 140 */ /**
|
||||
/* 141 *| * @public
|
||||
/* 142 *| */
|
||||
/* 143 */ construct_.prototype.set = function(key, value) {
|
||||
/* 144 */ var obj = {};
|
||||
/* 145 */ if (typeof key == 'string') {
|
||||
/* 146 */ obj[key] = value;
|
||||
/* 147 */ } else {
|
||||
/* 148 */ obj = key;
|
||||
/* 149 */ }
|
||||
/* 150 */ for (var prop in obj) {
|
||||
|
||||
/* QueryString.js */
|
||||
|
||||
/* 151 */ if (obj[prop] == null) {
|
||||
/* 152 */ delete this.vars[prop];
|
||||
/* 153 */ } else {
|
||||
/* 154 */ this.vars[prop] = obj[prop];
|
||||
/* 155 */ }
|
||||
/* 156 */ }
|
||||
/* 157 */ return this;
|
||||
/* 158 */ };
|
||||
/* 159 */
|
||||
/* 160 */ /**
|
||||
/* 161 *| * @public
|
||||
/* 162 *| */
|
||||
/* 163 */ construct_.prototype.toString = function() {
|
||||
/* 164 */ return QueryString.toString(this.vars);
|
||||
/* 165 */ };
|
||||
/* 166 */
|
||||
/* 167 */ return construct_;
|
||||
/* 168 */ }(); // define and execute
|
||||
|
||||
;
|
||||
/* before.js */
|
||||
|
||||
/* 1 */ /*! is.js
|
||||
/* 2 *|
|
||||
/* 3 *| (c) 2001 Douglas Crockford
|
||||
/* 4 *| 2001 June 3
|
||||
/* 5 *| */
|
||||
/* 6 */
|
||||
/* 7 */ // is
|
||||
/* 8 */
|
||||
/* 9 */ // The -is- object is used to identify the browser. Every browser edition
|
||||
/* 10 */ // identifies itself, but there is no standard way of doing it, and some of
|
||||
/* 11 */ // the identification is deceptive. This is because the authors of web
|
||||
/* 12 */ // browsers are liars. For example, Microsoft's IE browsers claim to be
|
||||
/* 13 */ // Mozilla 4. Netscape 6 claims to be version 5.
|
||||
/* 14 */
|
||||
/* 15 */ var is = {
|
||||
/* 16 */ ie: navigator.appName == 'Microsoft Internet Explorer',
|
||||
/* 17 */ java: navigator.javaEnabled(),
|
||||
/* 18 */ ns: navigator.appName == 'Netscape',
|
||||
/* 19 */ ua: navigator.userAgent.toLowerCase(),
|
||||
/* 20 */ version: parseFloat(navigator.appVersion.substr(21)) ||
|
||||
/* 21 */ parseFloat(navigator.appVersion),
|
||||
/* 22 */ win: navigator.platform == 'Win32'
|
||||
/* 23 */ }
|
||||
/* 24 */ /*!*
|
||||
/* 25 *| * preserve this comment, too
|
||||
/* 26 *| */
|
||||
/* 27 */ is.mac = is.ua.indexOf('mac') >= 0;
|
||||
/* 28 */ if (is.ua.indexOf('opera') >= 0) {
|
||||
/* 29 */ is.ie = is.ns = false;
|
||||
/* 30 */ is.opera = true;
|
||||
/* 31 */ }
|
||||
/* 32 */ if (is.ua.indexOf('gecko') >= 0) {
|
||||
/* 33 */ is.ie = is.ns = false;
|
||||
/* 34 */ is.gecko = true;
|
||||
/* 35 */ }
|
||||
/* 36 */
|
||||
/* 37 */ /*@cc_on
|
||||
/* 38 *| /*@if (@_win32)
|
||||
/* 39 *| if (is.ie && is.win)
|
||||
/* 40 *| document.write("PASS: IE/win honored conditional comment.<br>");
|
||||
/* 41 *| @else @*/
|
||||
/* 42 */ if (is.ie && is.win)
|
||||
/* 43 */ document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");
|
||||
/* 44 */ else
|
||||
/* 45 */ document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");
|
||||
/* 46 */ /*@end
|
||||
/* 47 *| @*/
|
||||
/* 48 */
|
||||
/* 49 */ var recognizesCondComm = true;
|
||||
/* 50 */ //@cc_on/*
|
||||
|
||||
/* before.js */
|
||||
|
||||
/* 51 *| recognizesCondComm = false;
|
||||
/* 52 *| //@cc_on*/
|
||||
/* 53 */
|
||||
/* 54 */ if ((is.ie && is.win) == recognizesCondComm)
|
||||
/* 55 */ document.write("PASS: IE/win honored single-line conditional comment.<br>");
|
||||
/* 56 */ else
|
||||
/* 57 */ document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
|
||||
/* 58 */
|
@ -1,5 +0,0 @@
|
||||
@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px
|
||||
solid #0f7}div#content
|
||||
h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}}
|
||||
/* YUI Compressor style comments are preserved */
|
||||
body{background:#fff url(/path/to/image.gif) repeat-y}
|
@ -1,12 +0,0 @@
|
||||
(function(){var
|
||||
reMailto=/^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,reRemoveTitleIf=/^my name is/,oo=window.onload,fixHrefs=function(){var i=0,l,m;while(l=document.links[i++]){if(m=l.href.match(reMailto)){l.href='mailto:'+m[1]+'@'+m[2];if(reRemoveTitleIf.test(l.title)){l.title='';}}}};window.onload=function(){oo&&oo();fixHrefs();};})();;var MrClay=window.MrClay||{};MrClay.QueryString=function(){var parse=function(str){var assignments=str.split('&'),obj={},propValue;for(var i=0,l=assignments.length;i<l;++i){propValue=assignments[i].split('=');if(propValue.length>2||-1!=propValue[0].indexOf('+')||propValue[0]==''){continue;}
|
||||
if(propValue.length==1){propValue[1]=propValue[0];}
|
||||
obj[unescape(propValue[0])]=unescape(propValue[1].replace(/\+/g,' '));}
|
||||
return obj;};function construct_(spec){spec=spec||window;if(typeof spec=='object'){this.window=spec;spec=spec.location.search.substr(1);}else{this.window=window;}
|
||||
this.vars=parse(spec);}
|
||||
construct_.reload=function(vars,window_){window_=window_||window;vars=vars||(new MrClay.QueryString(window_)).vars;var l=window_.location,currUrl=l.href,s=MrClay.QueryString.toString(vars),newUrl=l.protocol+'//'+l.hostname+l.pathname
|
||||
+(s?'?'+s:'')+l.hash;if(currUrl==newUrl){l.reload();}else{l.assign(newUrl);}};construct_.get=function(key,default_,window_){window_=window_||window;return(new MrClay.QueryString(window_)).get(key,default_);};construct_.set=function(key,value,window_){window_=window_||window;(new MrClay.QueryString(window_)).set(key,value).reload();};construct_.toString=function(vars){var pieces=[];for(var prop in vars){pieces.push(escape(prop)+'='+escape(vars[prop]));}
|
||||
return pieces.join('&');};construct_.prototype.reload=function(){MrClay.QueryString.reload(this.vars,this.window);return this;};construct_.prototype.get=function(key,default_){if(typeof default_=='undefined'){default_=null;}
|
||||
return(this.vars[key]==null)?default_:this.vars[key];};construct_.prototype.set=function(key,value){var obj={};if(typeof key=='string'){obj[key]=value;}else{obj=key;}
|
||||
for(var prop in obj){if(obj[prop]==null){delete this.vars[prop];}else{this.vars[prop]=obj[prop];}}
|
||||
return this;};construct_.prototype.toString=function(){return QueryString.toString(this.vars);};return construct_;}();
|
@ -1,137 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'HTTP/ConditionalGet.php';
|
||||
|
||||
function test_HTTP_ConditionalGet()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$lmTime = time() - 900;
|
||||
$gmtTime = gmdate('D, d M Y H:i:s \G\M\T', $lmTime);
|
||||
|
||||
$tests = array(
|
||||
array(
|
||||
'desc' => 'client has valid If-Modified-Since'
|
||||
,'inm' => null
|
||||
,'ims' => $gmtTime
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'client has valid If-Modified-Since with trailing semicolon'
|
||||
,'inm' => null
|
||||
,'ims' => $gmtTime . ';'
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'client has valid ETag (non-encoded version)'
|
||||
,'inm' => "\"badEtagFoo\", \"pri{$lmTime}\""
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'client has valid ETag (gzip version)'
|
||||
,'inm' => "\"badEtagFoo\", \"pri{$lmTime};gz\""
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'no conditional get'
|
||||
,'inm' => null
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'client has invalid ETag'
|
||||
,'inm' => '"pri' . ($lmTime - 300) . '"'
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'desc' => 'client has invalid If-Modified-Since'
|
||||
,'inm' => null
|
||||
,'ims' => gmdate('D, d M Y H:i:s \G\M\T', $lmTime - 300)
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
foreach ($tests as $test) {
|
||||
// setup env
|
||||
if (null === $test['inm']) {
|
||||
unset($_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
} else {
|
||||
$_SERVER['HTTP_IF_NONE_MATCH'] = get_magic_quotes_gpc()
|
||||
? addslashes($test['inm'])
|
||||
: $test['inm'];
|
||||
}
|
||||
if (null === $test['ims']) {
|
||||
unset($_SERVER['HTTP_IF_MODIFIED_SINCE']);
|
||||
} else {
|
||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $test['ims'];
|
||||
}
|
||||
$exp = $test['exp'];
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'lastModifiedTime' => $lmTime
|
||||
,'encoding' => 'x-gzip'
|
||||
));
|
||||
$ret = $cg->getHeaders();
|
||||
$ret['isValid'] = $cg->cacheIsValid;
|
||||
|
||||
$passed = assertTrue($exp == $ret, 'HTTP_ConditionalGet : ' . $test['desc']);
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n--- INM = {$test['inm']} / IMS = {$test['ims']}\n";
|
||||
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
|
||||
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_HTTP_ConditionalGet();
|
@ -1,260 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'HTTP/Encoder.php';
|
||||
|
||||
function test_HTTP_Encoder()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
HTTP_Encoder::$encodeToIe6 = true;
|
||||
$methodTests = array(
|
||||
array(
|
||||
'ua' => 'Any browser'
|
||||
,'ae' => 'compress, x-gzip'
|
||||
,'exp' => array('gzip', 'x-gzip')
|
||||
,'desc' => 'recognize "x-gzip" as gzip'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Any browser'
|
||||
,'ae' => 'compress, x-gzip;q=0.5'
|
||||
,'exp' => array('gzip', 'x-gzip')
|
||||
,'desc' => 'gzip w/ non-zero q'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Any browser'
|
||||
,'ae' => 'compress, x-gzip;q=0'
|
||||
,'exp' => array('compress', 'compress')
|
||||
,'desc' => 'gzip w/ zero q'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'
|
||||
,'ae' => 'gzip, deflate'
|
||||
,'exp' => array('', '')
|
||||
,'desc' => 'IE6 w/o "enhanced security"'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'
|
||||
,'ae' => 'gzip, deflate'
|
||||
,'exp' => array('gzip', 'gzip')
|
||||
,'desc' => 'IE6 w/ "enhanced security"'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.01)'
|
||||
,'ae' => 'gzip, deflate'
|
||||
,'exp' => array('', '')
|
||||
,'desc' => 'IE5.5'
|
||||
)
|
||||
,array(
|
||||
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.25'
|
||||
,'ae' => 'gzip,deflate'
|
||||
,'exp' => array('gzip', 'gzip')
|
||||
,'desc' => 'Opera identifying as IE6'
|
||||
)
|
||||
);
|
||||
foreach ($methodTests as $test) {
|
||||
$_SERVER['HTTP_USER_AGENT'] = $test['ua'];
|
||||
$_SERVER['HTTP_ACCEPT_ENCODING'] = $test['ae'];
|
||||
$exp = $test['exp'];
|
||||
$ret = HTTP_Encoder::getAcceptedEncoding();
|
||||
$passed = assertTrue($exp == $ret, 'HTTP_Encoder : ' . $test['desc']);
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n--- AE | UA = {$test['ae']} | {$test['ua']}\n";
|
||||
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
|
||||
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
|
||||
}
|
||||
}
|
||||
HTTP_Encoder::$encodeToIe6 = false;
|
||||
$methodTests = array(
|
||||
array(
|
||||
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'
|
||||
,'ae' => 'gzip, deflate'
|
||||
,'exp' => array('', '')
|
||||
,'desc' => 'IE6 w/ "enhanced security"'
|
||||
)
|
||||
);
|
||||
foreach ($methodTests as $test) {
|
||||
$_SERVER['HTTP_USER_AGENT'] = $test['ua'];
|
||||
$_SERVER['HTTP_ACCEPT_ENCODING'] = $test['ae'];
|
||||
$exp = $test['exp'];
|
||||
$ret = HTTP_Encoder::getAcceptedEncoding();
|
||||
$passed = assertTrue($exp == $ret, 'HTTP_Encoder : ' . $test['desc']);
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n--- AE | UA = {$test['ae']} | {$test['ua']}\n";
|
||||
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
|
||||
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('gzdeflate')) {
|
||||
echo "!WARN: HTTP_Encoder : Zlib support is not present in PHP. Encoding cannot be performed/tested.\n";
|
||||
return;
|
||||
}
|
||||
|
||||
// test compression of varied content (HTML,JS, & CSS)
|
||||
$variedContent = file_get_contents($thisDir . '/_test_files/html/before.html')
|
||||
. file_get_contents($thisDir . '/_test_files/css/subsilver.css')
|
||||
. file_get_contents($thisDir . '/_test_files/js/jquery-1.2.3.js');
|
||||
$variedLength = strlen($variedContent);
|
||||
|
||||
$encodingTests = array(
|
||||
array('method' => 'deflate', 'inv' => 'gzinflate', 'exp' => 32157)
|
||||
,array('method' => 'gzip', 'inv' => '_gzdecode', 'exp' => 32175)
|
||||
,array('method' => 'compress', 'inv' => 'gzuncompress', 'exp' => 32211)
|
||||
);
|
||||
|
||||
foreach ($encodingTests as $test) {
|
||||
$e = new HTTP_Encoder(array(
|
||||
'content' => $variedContent
|
||||
,'method' => $test['method']
|
||||
));
|
||||
$e->encode(9);
|
||||
$ret = strlen($e->getContent());
|
||||
|
||||
// test uncompression
|
||||
$roundTrip = @call_user_func($test['inv'], $e->getContent());
|
||||
$desc = "HTTP_Encoder : {$test['method']} : uncompress possible";
|
||||
$passed = assertTrue($variedContent == $roundTrip, $desc);
|
||||
|
||||
// test expected compressed size
|
||||
$desc = "HTTP_Encoder : {$test['method']} : compressed to "
|
||||
. sprintf('%4.2f%% of original', $ret/$variedLength*100);
|
||||
$passed = assertTrue(abs($ret - $test['exp']) < 100, $desc);
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n--- {$test['method']}: expected bytes: "
|
||||
, "{$test['exp']}. Returned: {$ret} "
|
||||
, "(off by ". abs($ret - $test['exp']) . " bytes)\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
$_SERVER['HTTP_ACCEPT_ENCODING'] = 'identity';
|
||||
$he = new HTTP_Encoder(array(
|
||||
'content' => 'Hello'
|
||||
));
|
||||
$he->encode();
|
||||
$headers = $he->getHeaders();
|
||||
assertTrue(isset($headers['Vary']), 'HTTP_Encoder : Vary always sent');
|
||||
}
|
||||
|
||||
test_HTTP_Encoder();
|
||||
|
||||
function _gzdecode($data)
|
||||
{
|
||||
$filename = $error = '';
|
||||
return _phpman_gzdecode($data, $filename, $error);
|
||||
}
|
||||
|
||||
// http://www.php.net/manual/en/function.gzdecode.php#82930
|
||||
function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
|
||||
{
|
||||
$len = strlen($data);
|
||||
if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
|
||||
$error = "Not in GZIP format.";
|
||||
return null; // Not GZIP format (See RFC 1952)
|
||||
}
|
||||
$method = ord(substr($data,2,1)); // Compression method
|
||||
$flags = ord(substr($data,3,1)); // Flags
|
||||
if ($flags & 31 != $flags) {
|
||||
$error = "Reserved bits not allowed.";
|
||||
return null;
|
||||
}
|
||||
// NOTE: $mtime may be negative (PHP integer limitations)
|
||||
$mtime = unpack("V", substr($data,4,4));
|
||||
$mtime = $mtime[1];
|
||||
$xfl = substr($data,8,1);
|
||||
$os = substr($data,8,1);
|
||||
$headerlen = 10;
|
||||
$extralen = 0;
|
||||
$extra = "";
|
||||
if ($flags & 4) {
|
||||
// 2-byte length prefixed EXTRA data in header
|
||||
if ($len - $headerlen - 2 < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$extralen = unpack("v",substr($data,8,2));
|
||||
$extralen = $extralen[1];
|
||||
if ($len - $headerlen - 2 - $extralen < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$extra = substr($data,10,$extralen);
|
||||
$headerlen += 2 + $extralen;
|
||||
}
|
||||
$filenamelen = 0;
|
||||
$filename = "";
|
||||
if ($flags & 8) {
|
||||
// C-style string
|
||||
if ($len - $headerlen - 1 < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$filenamelen = strpos(substr($data,$headerlen),chr(0));
|
||||
if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$filename = substr($data,$headerlen,$filenamelen);
|
||||
$headerlen += $filenamelen + 1;
|
||||
}
|
||||
$commentlen = 0;
|
||||
$comment = "";
|
||||
if ($flags & 16) {
|
||||
// C-style string COMMENT data in header
|
||||
if ($len - $headerlen - 1 < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$commentlen = strpos(substr($data,$headerlen),chr(0));
|
||||
if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
|
||||
return false; // Invalid header format
|
||||
}
|
||||
$comment = substr($data,$headerlen,$commentlen);
|
||||
$headerlen += $commentlen + 1;
|
||||
}
|
||||
$headercrc = "";
|
||||
if ($flags & 2) {
|
||||
// 2-bytes (lowest order) of CRC32 on header present
|
||||
if ($len - $headerlen - 2 < 8) {
|
||||
return false; // invalid
|
||||
}
|
||||
$calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
|
||||
$headercrc = unpack("v", substr($data,$headerlen,2));
|
||||
$headercrc = $headercrc[1];
|
||||
if ($headercrc != $calccrc) {
|
||||
$error = "Header checksum failed.";
|
||||
return false; // Bad header CRC
|
||||
}
|
||||
$headerlen += 2;
|
||||
}
|
||||
// GZIP FOOTER
|
||||
$datacrc = unpack("V",substr($data,-8,4));
|
||||
$datacrc = sprintf('%u',$datacrc[1] & 0xFFFFFFFF);
|
||||
$isize = unpack("V",substr($data,-4));
|
||||
$isize = $isize[1];
|
||||
// decompression:
|
||||
$bodylen = $len-$headerlen-8;
|
||||
if ($bodylen < 1) {
|
||||
// IMPLEMENTATION BUG!
|
||||
return null;
|
||||
}
|
||||
$body = substr($data,$headerlen,$bodylen);
|
||||
$data = "";
|
||||
if ($bodylen > 0) {
|
||||
switch ($method) {
|
||||
case 8:
|
||||
// Currently the only supported compression method:
|
||||
$data = gzinflate($body,$maxlength);
|
||||
break;
|
||||
default:
|
||||
$error = "Unknown compression method.";
|
||||
return false;
|
||||
}
|
||||
} // zero-byte body content is allowed
|
||||
// Verifiy CRC32
|
||||
$crc = sprintf("%u",crc32($data));
|
||||
$crcOK = $crc == $datacrc;
|
||||
$lenOK = $isize == strlen($data);
|
||||
if (!$lenOK || !$crcOK) {
|
||||
$error = ( $lenOK ? '' : 'Length check FAILED. ') . ( $crcOK ? '' : 'Checksum FAILED.');
|
||||
return false;
|
||||
}
|
||||
return $data;
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'JSMin.php';
|
||||
|
||||
function test_JSMin()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/js/before.js');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/js/before.min.js');
|
||||
$minOutput = JSMin::minify($src);
|
||||
|
||||
$passed = assertTrue($minExpected == $minOutput, 'JSMin : Overall');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/js/issue74.js');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/js/issue74.min.js');
|
||||
$minOutput = JSMin::minify($src);
|
||||
|
||||
$passed = assertTrue($minExpected == $minOutput, 'JSMin : Quotes in RegExp literals (Issue 74)');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
|
||||
test_JSMin_exception('"Hello'
|
||||
,'Unterminated String'
|
||||
,'JSMin_UnterminatedStringException'
|
||||
,"Unterminated String: '\"Hello'");
|
||||
test_JSMin_exception("return /regexp\n}"
|
||||
,'Unterminated RegExp'
|
||||
,'JSMin_UnterminatedRegExpException'
|
||||
,"Unterminated RegExp: '/regexp\n'");
|
||||
test_JSMin_exception("/* Comment "
|
||||
,'Unterminated Comment'
|
||||
,'JSMin_UnterminatedCommentException'
|
||||
,"Unterminated Comment: '/* Comment '");
|
||||
}
|
||||
}
|
||||
|
||||
function test_JSMin_exception($js, $label, $expClass, $expMessage) {
|
||||
$eClass = $eMsg = '';
|
||||
try {
|
||||
JSMin::minify($js);
|
||||
} catch (Exception $e) {
|
||||
$eClass = get_class($e);
|
||||
$eMsg = $e->getMessage();
|
||||
}
|
||||
$passed = assertTrue($eClass === $expClass && $eMsg === $expMessage,
|
||||
'JSMin : throw on ' . $label);
|
||||
if (! $passed && __FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n ---" , $e, "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
test_JSMin();
|
@ -1,80 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'JSMinPlus.php';
|
||||
|
||||
function test_JSMinPlus()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/js/condcomm.js');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/js/condcomm.min_plus.js');
|
||||
|
||||
$minOutput = JSMinPlus::minify($src);
|
||||
|
||||
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Conditional Comments');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/js/before.js');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/js/before.min_plus.js');
|
||||
$minOutput = JSMinPlus::minify($src);
|
||||
|
||||
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Overall');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/js/issue74.js');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/js/issue74.min_plus.js');
|
||||
$minOutput = JSMinPlus::minify($src);
|
||||
|
||||
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Quotes in RegExp literals (Issue 74)');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
/*
|
||||
test_JSMin_exception('"Hello'
|
||||
,'Unterminated String'
|
||||
,'JSMin_UnterminatedStringException'
|
||||
,"Unterminated String: '\"Hello'");
|
||||
test_JSMin_exception("return /regexp\n}"
|
||||
,'Unterminated RegExp'
|
||||
,'JSMin_UnterminatedRegExpException'
|
||||
,"Unterminated RegExp: '/regexp\n'");
|
||||
test_JSMin_exception("/* Comment "
|
||||
,'Unterminated Comment'
|
||||
,'JSMin_UnterminatedCommentException'
|
||||
,"Unterminated Comment: '/* Comment '");
|
||||
//*/
|
||||
}
|
||||
}
|
||||
|
||||
/*function test_JSMin_exception($js, $label, $expClass, $expMessage) {
|
||||
$eClass = $eMsg = '';
|
||||
try {
|
||||
JSMin::minify($js);
|
||||
} catch (Exception $e) {
|
||||
$eClass = get_class($e);
|
||||
$eMsg = $e->getMessage();
|
||||
}
|
||||
$passed = assertTrue($eClass === $expClass && $eMsg === $expMessage,
|
||||
'JSMin : throw on ' . $label);
|
||||
if (! $passed && __FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n ---" , $e, "\n\n";
|
||||
}
|
||||
}//*/
|
||||
|
||||
test_JSMinPlus();
|
@ -1,213 +0,0 @@
|
||||
<?php
|
||||
|
||||
// currently these only test serve() when passed the 'quiet' options
|
||||
|
||||
require_once '_inc.php';
|
||||
require_once 'Minify.php';
|
||||
|
||||
function test_Minify()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$minifyTestPath = dirname(__FILE__) . '/_test_files/minify';
|
||||
$thisFileActive = (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME']));
|
||||
$tomorrow = $_SERVER['REQUEST_TIME'] + 86400;
|
||||
$lastModified = $_SERVER['REQUEST_TIME'] - 86400;
|
||||
|
||||
// Test 304 response
|
||||
|
||||
// simulate conditional headers
|
||||
$_SERVER['HTTP_IF_NONE_MATCH'] = "\"{$lastModified}pub\"";
|
||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s \G\M\T', $lastModified);
|
||||
|
||||
$expected = array (
|
||||
'success' => true
|
||||
,'statusCode' => 304
|
||||
,'content' => '',
|
||||
'headers' => array(
|
||||
'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $_SERVER['REQUEST_TIME'] + 1800),
|
||||
'Vary' => 'Accept-Encoding',
|
||||
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
|
||||
'ETag' => "\"pub{$lastModified}\"",
|
||||
'Cache-Control' => 'max-age=1800, public',
|
||||
'_responseCode' => 'HTTP/1.0 304 Not Modified',
|
||||
)
|
||||
);
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => $thisDir . '/_test_files/css/styles.css' // controller casts to array
|
||||
,'quiet' => true
|
||||
,'lastModifiedTime' => $lastModified
|
||||
,'encodeOutput' => false
|
||||
));
|
||||
$passed = assertTrue($expected === $output, 'Minify : 304 response');
|
||||
if ($thisFileActive) {
|
||||
echo "\nOutput: " .var_export($output, 1). "\n\n";
|
||||
if (! $passed) {
|
||||
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
assertTrue(
|
||||
! class_exists('Minify_CSS', false)
|
||||
&& ! class_exists('Minify_Cache', false)
|
||||
,'Minify : cache, and minifier classes aren\'t loaded for 304s'
|
||||
);
|
||||
|
||||
// Test minifying JS and serving with Expires header
|
||||
|
||||
$content = preg_replace('/\\r\\n?/', "\n", file_get_contents($minifyTestPath . '/minified.js'));
|
||||
$lastModified = max(
|
||||
filemtime($minifyTestPath . '/email.js')
|
||||
,filemtime($minifyTestPath . '/QueryString.js')
|
||||
);
|
||||
$expected = array(
|
||||
'success' => true
|
||||
,'statusCode' => 200
|
||||
// JSMin always converts to \n line endings
|
||||
,'content' => $content
|
||||
,'headers' => array (
|
||||
'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $tomorrow),
|
||||
'Vary' => 'Accept-Encoding',
|
||||
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
|
||||
'ETag' => "\"pub{$lastModified}\"",
|
||||
'Cache-Control' => 'max-age=86400, public',
|
||||
'Content-Length' => strlen($content),
|
||||
'Content-Type' => 'application/x-javascript; charset=utf-8',
|
||||
)
|
||||
);
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$minifyTestPath . '/email.js'
|
||||
,$minifyTestPath . '/QueryString.js'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'maxAge' => 86400
|
||||
,'encodeOutput' => false
|
||||
));
|
||||
|
||||
$passed = assertTrue($expected === $output, 'Minify : JS and Expires');
|
||||
if ($thisFileActive) {
|
||||
echo "\nOutput: " .var_export($output, 1). "\n\n";
|
||||
if (! $passed) {
|
||||
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
// test for Issue 73
|
||||
Minify::setCache(null);
|
||||
|
||||
$expected = ";function h(){}";
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$minifyTestPath . '/issue73_1.js'
|
||||
,$minifyTestPath . '/issue73_2.js'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'encodeOutput' => false
|
||||
));
|
||||
$output = $output['content'];
|
||||
|
||||
$passed = assertTrue($expected === $output, 'Minify : Issue 73');
|
||||
if ($thisFileActive) {
|
||||
if (! $passed) {
|
||||
echo "\n---Output : " .var_export($output, 1). "\n";
|
||||
echo "---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
// test for Issue 89
|
||||
$expected = file_get_contents($minifyTestPath . '/issue89_out.min.css');
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$minifyTestPath . '/issue89_1.css'
|
||||
,$minifyTestPath . '/issue89_2.css'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'encodeOutput' => false
|
||||
,'bubbleCssImports' => true
|
||||
));
|
||||
$output = $output['content'];
|
||||
$passed = assertTrue($expected === $output, 'Minify : Issue 89 : bubbleCssImports');
|
||||
if ($thisFileActive) {
|
||||
if (! $passed) {
|
||||
echo "\n---Output : " .var_export($output, 1). "\n";
|
||||
echo "---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$minifyTestPath . '/issue89_1.css'
|
||||
,$minifyTestPath . '/issue89_2.css'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'encodeOutput' => false
|
||||
));
|
||||
$output = $output['content'];
|
||||
$passed = assertTrue(0 === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : detect invalid imports');
|
||||
if ($thisFileActive) {
|
||||
if (! $passed) {
|
||||
echo "\n---Output : " .var_export($output, 1). "\n";
|
||||
echo "---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$minifyTestPath . '/issue89_1.css'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'encodeOutput' => false
|
||||
));
|
||||
$output = $output['content'];
|
||||
$passed = assertTrue(false === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : don\'t warn about valid imports');
|
||||
if ($thisFileActive) {
|
||||
if (! $passed) {
|
||||
echo "\n---Output : " .var_export($output, 1). "\n";
|
||||
echo "---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Test minifying CSS and responding with Etag/Last-Modified
|
||||
|
||||
Minify::setCache(null);
|
||||
|
||||
// don't allow conditional headers
|
||||
unset($_SERVER['HTTP_IF_NONE_MATCH'], $_SERVER['HTTP_IF_MODIFIED_SINCE']);
|
||||
|
||||
$expectedContent = file_get_contents($minifyTestPath . '/minified.css');
|
||||
|
||||
$expected = array(
|
||||
'success' => true
|
||||
,'statusCode' => 200
|
||||
,'content' => $expectedContent
|
||||
,'headers' => array (
|
||||
'Vary' => 'Accept-Encoding',
|
||||
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
|
||||
'ETag' => "\"pub{$lastModified}\"",
|
||||
'Cache-Control' => 'max-age=0, public',
|
||||
'Content-Length' => strlen($expectedContent),
|
||||
'Content-Type' => 'text/css; charset=utf-8',
|
||||
)
|
||||
);
|
||||
$output = Minify::serve('Files', array(
|
||||
'files' => array(
|
||||
$thisDir . '/_test_files/css/styles.css'
|
||||
,$thisDir . '/_test_files/css/comments.css'
|
||||
)
|
||||
,'quiet' => true
|
||||
,'lastModifiedTime' => $lastModified
|
||||
,'encodeOutput' => false
|
||||
,'maxAge' => false
|
||||
));
|
||||
|
||||
$passed = assertTrue($expected === $output, 'Minify : CSS and Etag/Last-Modified');
|
||||
if ($thisFileActive) {
|
||||
echo "\nOutput: " .var_export($output, 1). "\n\n";
|
||||
if (! $passed) {
|
||||
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_Minify();
|
@ -1,36 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/Build.php';
|
||||
|
||||
function test_Minify_Build()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$file1 = $thisDir . '/_test_files/css/paths_prepend.css';
|
||||
$file2 = $thisDir . '/_test_files/css/styles.css';
|
||||
$maxTime = max(filemtime($file1), filemtime($file2));
|
||||
|
||||
$b = new Minify_Build($file1);
|
||||
assertTrue($b->lastModified == filemtime($file1)
|
||||
,'Minify_Build : single file path');
|
||||
|
||||
$b = new Minify_Build(array($file1, $file2));
|
||||
assertTrue($maxTime == $b->lastModified
|
||||
,'Minify_Build : multiple file paths');
|
||||
|
||||
require_once 'Minify.php';
|
||||
$b = new Minify_Build(array(
|
||||
$file1
|
||||
,new Minify_Source(array('filepath' => $file2))
|
||||
));
|
||||
|
||||
assertTrue($maxTime == $b->lastModified
|
||||
,'Minify_Build : file path and a Minify_Source');
|
||||
assertTrue($b->uri('/path') == "/path?{$maxTime}"
|
||||
,'Minify_Build : uri() with no querystring');
|
||||
assertTrue($b->uri('/path?hello') == "/path?hello&{$maxTime}"
|
||||
,'Minify_Build : uri() with existing querystring');
|
||||
}
|
||||
|
||||
test_Minify_Build();
|
@ -1,53 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/CSS.php';
|
||||
|
||||
function test_CSS()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$cssPath = dirname(__FILE__) . '/_test_files/css';
|
||||
|
||||
// build test file list
|
||||
$d = dir($cssPath);
|
||||
while (false !== ($entry = $d->read())) {
|
||||
if (preg_match('/^([\w\\-]+)\.css$/', $entry, $m)) {
|
||||
$list[] = $m[1];
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
|
||||
foreach ($list as $item) {
|
||||
|
||||
$options = array();
|
||||
if ($item === 'paths_prepend') {
|
||||
$options = array('prependRelativePath' => '../');
|
||||
} elseif ($item === 'paths_rewrite') {
|
||||
$options = array('currentDir' => $thisDir . '/_test_files/css');
|
||||
$tempDocRoot = $_SERVER['DOCUMENT_ROOT'];
|
||||
$_SERVER['DOCUMENT_ROOT'] = $thisDir;
|
||||
}
|
||||
|
||||
$src = file_get_contents($cssPath . "/{$item}.css");
|
||||
$minExpected = file_get_contents($cssPath . "/{$item}.min.css");
|
||||
$minOutput = Minify_CSS::minify($src, $options);
|
||||
|
||||
// reset doc root as configured
|
||||
if ($item === 'paths_rewrite') {
|
||||
$_SERVER['DOCUMENT_ROOT'] = $tempDocRoot;
|
||||
}
|
||||
|
||||
$passed = assertTrue($minExpected === $minOutput, 'Minify_CSS : ' . $item);
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
|
||||
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_CSS();
|
@ -1,56 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/CSS/UriRewriter.php';
|
||||
|
||||
function test_Minify_CSS_UriRewriter()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
Minify_CSS_UriRewriter::$debugText = '';
|
||||
$in = file_get_contents($thisDir . '/_test_files/css_uriRewriter/in.css');
|
||||
$expected = file_get_contents($thisDir . '/_test_files/css_uriRewriter/exp.css');
|
||||
$actual = Minify_CSS_UriRewriter::rewrite(
|
||||
$in
|
||||
,$thisDir . '/_test_files/css_uriRewriter' // currentDir
|
||||
,$thisDir // use DOCUMENT_ROOT = '/full/path/to/min_unit_tests'
|
||||
);
|
||||
|
||||
$passed = assertTrue($expected === $actual, 'Minify_CSS_UriRewriter');
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Input:\n\n{$in}\n";
|
||||
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
|
||||
}
|
||||
|
||||
// show debugging only when test run directly
|
||||
echo "--- Minify_CSS_UriRewriter::\$debugText\n\n"
|
||||
, Minify_CSS_UriRewriter::$debugText;
|
||||
}
|
||||
|
||||
Minify_CSS_UriRewriter::$debugText = '';
|
||||
$in = '../../../../assets/skins/sam/sprite.png';
|
||||
$exp = '/yui/assets/skins/sam/sprite.png';
|
||||
$actual = Minify_CSS_UriRewriter::rewriteRelative(
|
||||
$in
|
||||
,'sf_root_dir\web\yui\menu\assets\skins\sam'
|
||||
,'sf_root_dir\web'
|
||||
);
|
||||
|
||||
$passed = assertTrue($exp === $actual, 'Minify_CSS_UriRewriter : Issue 99');
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Input:\n\n{$in}\n";
|
||||
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($exp). " bytes\n\n{$exp}\n\n\n";
|
||||
}
|
||||
|
||||
// show debugging only when test run directly
|
||||
echo "--- Minify_CSS_UriRewriter::\$debugText\n\n"
|
||||
, Minify_CSS_UriRewriter::$debugText;
|
||||
}
|
||||
}
|
||||
|
||||
test_Minify_CSS_UriRewriter();
|
@ -1,33 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/Cache/APC.php';
|
||||
|
||||
function test_Minify_Cache_APC()
|
||||
{
|
||||
$prefix = 'Minify_Cache_APC : ';
|
||||
if (! function_exists('apc_store')) {
|
||||
return;
|
||||
}
|
||||
$data = str_repeat(md5('testing'), 160);
|
||||
$id = 'Minify_test_cache';
|
||||
|
||||
$cache = new Minify_Cache_APC();
|
||||
|
||||
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
|
||||
|
||||
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
|
||||
|
||||
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
|
||||
|
||||
ob_start();
|
||||
$cache->display($id);
|
||||
$displayed = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
assertTrue($data === $displayed, $prefix . 'display');
|
||||
|
||||
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
|
||||
}
|
||||
|
||||
test_Minify_Cache_APC();
|
@ -1,54 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/Cache/File.php';
|
||||
|
||||
function test_Minify_Cache_File()
|
||||
{
|
||||
global $minifyCachePath;
|
||||
|
||||
$data = str_repeat(md5(time()), 160);
|
||||
$id = 'Minify_test_cache_noLock';
|
||||
$prefix = 'Minify_Cache_File : ';
|
||||
|
||||
$cache = new Minify_Cache_File($minifyCachePath);
|
||||
|
||||
echo "NOTE: Minify_Cache_File : path is set to: '" . $cache->getPath() . "'.\n";
|
||||
|
||||
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
|
||||
|
||||
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
|
||||
|
||||
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
|
||||
|
||||
ob_start();
|
||||
$cache->display($id);
|
||||
$displayed = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
assertTrue($data === $displayed, $prefix . 'display');
|
||||
|
||||
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
|
||||
|
||||
// test with locks
|
||||
|
||||
$id = 'Minify_test_cache_withLock';
|
||||
$cache = new Minify_Cache_File($minifyCachePath, true);
|
||||
|
||||
assertTrue(true === $cache->store($id, $data), $prefix . 'store w/ lock');
|
||||
|
||||
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
|
||||
|
||||
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
|
||||
|
||||
ob_start();
|
||||
$cache->display($id);
|
||||
$displayed = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
assertTrue($data === $displayed, $prefix . 'display w/ lock');
|
||||
|
||||
assertTrue($data === $cache->fetch($id), $prefix . 'fetch w/ lock');
|
||||
}
|
||||
|
||||
test_Minify_Cache_File();
|
@ -1,38 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/Cache/Memcache.php';
|
||||
|
||||
function test_Minify_Cache_Memcache()
|
||||
{
|
||||
$prefix = 'Minify_Cache_Memcache : ';
|
||||
if (! function_exists('memcache_set')) {
|
||||
return;
|
||||
}
|
||||
$mc = new Memcache;
|
||||
if (! @$mc->connect('localhost', 11211)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = str_repeat(md5('testing'), 160);
|
||||
$id = 'Minify_test_cache';
|
||||
|
||||
$cache = new Minify_Cache_Memcache($mc);
|
||||
|
||||
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
|
||||
|
||||
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
|
||||
|
||||
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
|
||||
|
||||
ob_start();
|
||||
$cache->display($id);
|
||||
$displayed = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
assertTrue($data === $displayed, $prefix . 'display');
|
||||
|
||||
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
|
||||
}
|
||||
|
||||
test_Minify_Cache_Memcache();
|
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/CommentPreserver.php';
|
||||
|
||||
function test_Minify_CommentPreserver()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$inOut = array(
|
||||
'/*!*/' => "\n/**/\n"
|
||||
,'/*!*/a' => "\n/**/\n1A"
|
||||
,'a/*!*//*!*/b' => "2A\n/**/\n\n/**/\n3B"
|
||||
,'a/*!*/b/*!*/' => "4A\n/**/\n5B\n/**/\n"
|
||||
);
|
||||
|
||||
foreach ($inOut as $in => $expected) {
|
||||
$actual = Minify_CommentPreserver::process($in, '_test_MCP_processor');
|
||||
$passed = assertTrue($expected === $actual, 'Minify_CommentPreserver');
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _test_MCP_processor($content, $options = array())
|
||||
{
|
||||
static $callCount = 0;
|
||||
++$callCount;
|
||||
return $callCount . strtoupper($content);
|
||||
}
|
||||
|
||||
test_Minify_CommentPreserver();
|
@ -1,59 +0,0 @@
|
||||
<?php
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/HTML.php';
|
||||
require_once 'Minify/CSS.php';
|
||||
require_once 'JSMin.php';
|
||||
|
||||
function test_HTML()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/html/before.html');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/html/before.min.html');
|
||||
|
||||
$time = microtime(true);
|
||||
$minOutput = Minify_HTML::minify($src, array(
|
||||
'cssMinifier' => array('Minify_CSS', 'minify')
|
||||
,'jsMinifier' => array('JSMin', 'minify')
|
||||
));
|
||||
$time = microtime(true) - $time;
|
||||
|
||||
$passed = assertTrue($minExpected === $minOutput, 'Minify_HTML');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
if ($passed) {
|
||||
echo "\n---Source: ", strlen($src), " bytes\n"
|
||||
, "---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n\n";
|
||||
} else {
|
||||
echo "\n---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n"
|
||||
, "---Expected: ", strlen($minExpected), " bytes\n\n{$minExpected}\n\n"
|
||||
, "---Source: ", strlen($src), " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
$src = file_get_contents($thisDir . '/_test_files/html/before2.html');
|
||||
$minExpected = file_get_contents($thisDir . '/_test_files/html/before2.min.html');
|
||||
|
||||
$time = microtime(true);
|
||||
$minOutput = Minify_HTML::minify($src, array(
|
||||
'cssMinifier' => array('Minify_CSS', 'minify')
|
||||
,'jsMinifier' => array('JSMin', 'minify')
|
||||
));
|
||||
$time = microtime(true) - $time;
|
||||
|
||||
$passed = assertTrue($minExpected === $minOutput, 'Minify_HTML');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
if ($passed) {
|
||||
echo "\n---Source: ", strlen($src), " bytes\n"
|
||||
, "---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n\n";
|
||||
} else {
|
||||
echo "\n---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n"
|
||||
, "---Expected: ", strlen($minExpected), " bytes\n\n{$minExpected}\n\n"
|
||||
, "---Source: ", strlen($src), " bytes\n\n{$src}\n\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_HTML();
|
@ -1,48 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once '_inc.php';
|
||||
|
||||
require_once 'Minify/ImportProcessor.php';
|
||||
|
||||
function test_Minify_ImportProcessor()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$linDir = $thisDir . '/_test_files/importProcessor';
|
||||
|
||||
$testFilesUri = substr(
|
||||
realpath($thisDir . '/_test_files')
|
||||
,strlen(realpath($_SERVER['DOCUMENT_ROOT']))
|
||||
);
|
||||
$testFilesUri = str_replace('\\', '/', $testFilesUri);
|
||||
|
||||
$expected = str_replace(
|
||||
'%TEST_FILES_URI%'
|
||||
,$testFilesUri
|
||||
,file_get_contents($linDir . '/output.css')
|
||||
);
|
||||
|
||||
$actual = Minify_ImportProcessor::process($linDir . '/input.css');
|
||||
|
||||
$passed = assertTrue($expected === $actual, 'ImportProcessor');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
$expectedIncludes = array (
|
||||
realpath($linDir . '/input.css')
|
||||
,realpath($linDir . '/adjacent.css')
|
||||
,realpath($linDir . '/../css/styles.css')
|
||||
,realpath($linDir . '/1/tv.css')
|
||||
,realpath($linDir . '/1/adjacent.css')
|
||||
);
|
||||
|
||||
$passed = assertTrue($expectedIncludes === Minify_ImportProcessor::$filesIncluded
|
||||
, 'ImportProcessor : included right files in right order');
|
||||
}
|
||||
|
||||
test_Minify_ImportProcessor();
|
@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once '_inc.php';
|
||||
require_once 'Minify.php';
|
||||
|
||||
function test_Lines()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
$exp = file_get_contents("{$thisDir}/_test_files/minify/lines_output.js");
|
||||
|
||||
Minify::setCache(null); // no cache
|
||||
|
||||
$ret = Minify::serve('Files', array(
|
||||
'debug' => true
|
||||
,'quiet' => true
|
||||
,'encodeOutput' => false
|
||||
,'files' => array(
|
||||
"{$thisDir}/_test_files/minify/email.js"
|
||||
,"{$thisDir}/_test_files/minify/lines_bugs.js"
|
||||
,"{$thisDir}/_test_files/minify/QueryString.js"
|
||||
,"{$thisDir}/_test_files/js/before.js"
|
||||
)
|
||||
));
|
||||
|
||||
$passed = assertTrue($exp === $ret['content'], 'Minify_Lines');
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
echo "\n---Output: " .strlen($ret['content']). " bytes\n\n{$ret['content']}\n\n";
|
||||
if (!$passed) {
|
||||
echo "---Expected: " .strlen($exp). " bytes\n\n{$exp}\n\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_Lines();
|
@ -1,17 +0,0 @@
|
||||
<?php
|
||||
|
||||
require 'test_Minify.php';
|
||||
require 'test_Minify_Build.php';
|
||||
require 'test_Minify_Cache_APC.php';
|
||||
require 'test_Minify_Cache_File.php';
|
||||
require 'test_Minify_Cache_Memcache.php';
|
||||
require 'test_Minify_CSS.php';
|
||||
require 'test_Minify_CSS_UriRewriter.php';
|
||||
require 'test_Minify_CommentPreserver.php';
|
||||
require 'test_Minify_HTML.php';
|
||||
require 'test_Minify_ImportProcessor.php';
|
||||
require 'test_Minify_Lines.php';
|
||||
require 'test_HTTP_Encoder.php';
|
||||
require 'test_HTTP_ConditionalGet.php';
|
||||
require 'test_JSMin.php';
|
||||
require 'test_environment.php';
|
@ -1,100 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
// called directly
|
||||
if (isset($_GET['getOutputCompression'])) {
|
||||
echo (int)ini_get('zlib.output_compression');
|
||||
exit();
|
||||
}
|
||||
if (isset($_GET['hello'])) {
|
||||
// try to disable (may not work)
|
||||
ini_set('zlib.output_compression', '0');
|
||||
echo 'World!';
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
require_once '_inc.php';
|
||||
|
||||
function test_environment()
|
||||
{
|
||||
global $thisDir;
|
||||
|
||||
// check DOCROOT
|
||||
$noSlash = assertTrue(
|
||||
0 === preg_match('@[\\\\/]$@', $_SERVER['DOCUMENT_ROOT'])
|
||||
,'environment : DOCUMENT_ROOT should not end in trailing slash'
|
||||
);
|
||||
$isRealPath = assertTrue(false !== realpath($_SERVER['DOCUMENT_ROOT'])
|
||||
,'environment : DOCUMENT_ROOT should pass realpath()'
|
||||
);
|
||||
$containsThisFile = assertTrue(
|
||||
0 === strpos(realpath(__FILE__), realpath($_SERVER['DOCUMENT_ROOT']))
|
||||
,'environment : DOCUMENT_ROOT should contain this test file'
|
||||
);
|
||||
if (! $noSlash || ! $isRealPath || ! $containsThisFile) {
|
||||
echo "\nDOCUMENT_ROOT is set to: '{$_SERVER['DOCUMENT_ROOT']}'. If you "
|
||||
. "cannot modify this, consider setting \$min_documentRoot in config.php\n\n";
|
||||
}
|
||||
if (isset($_SERVER['SUBDOMAIN_DOCUMENT_ROOT'])) {
|
||||
echo "\n!NOTE: environment : \$_SERVER['SUBDOMAIN_DOCUMENT_ROOT'] is set. "
|
||||
. "You may need to set \$min_documentRoot to this in config.php\n";
|
||||
}
|
||||
if (realpath(__FILE__) !== realpath($_SERVER['DOCUMENT_ROOT'] . '/min_unit_tests/test_environment.php')) {
|
||||
echo "!NOTE: environment : /min_unit_tests/ is not directly inside DOCUMENT_ROOT\n";
|
||||
}
|
||||
|
||||
$thisUrl = 'http://'
|
||||
. $_SERVER['HTTP_HOST'] // avoid redirects when SERVER_NAME doesn't match
|
||||
. ('80' === $_SERVER['SERVER_PORT'] ? '' : ":{$_SERVER['SERVER_PORT']}")
|
||||
. dirname($_SERVER['REQUEST_URI'])
|
||||
. '/test_environment.php';
|
||||
|
||||
$oc = @file_get_contents($thisUrl . '?getOutputCompression=1');
|
||||
|
||||
if (false === $oc || ! preg_match('/^[01]$/', $oc)) {
|
||||
echo "!WARN: environment : Local HTTP request failed. Testing cannot continue.\n";
|
||||
return;
|
||||
}
|
||||
if ('1' === $oc) {
|
||||
echo "!WARN: environment : zlib.output_compression is enabled in php.ini"
|
||||
. " or .htaccess.\n";
|
||||
}
|
||||
|
||||
$fp = fopen($thisUrl . '?hello=1', 'r', false, stream_context_create(array(
|
||||
'http' => array(
|
||||
'method' => "GET",
|
||||
'header' => "Accept-Encoding: deflate, gzip\r\n"
|
||||
)
|
||||
)));
|
||||
|
||||
$meta = stream_get_meta_data($fp);
|
||||
|
||||
$passed = true;
|
||||
foreach ($meta['wrapper_data'] as $i => $header) {
|
||||
if ((preg_match('@^Content-Length: (\\d+)$@i', $header, $m) && $m[1] !== '6')
|
||||
|| preg_match('@^Content-Encoding:@i', $header, $m)
|
||||
) {
|
||||
$passed = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($passed && stream_get_contents($fp) !== 'World!') {
|
||||
$passed = false;
|
||||
}
|
||||
assertTrue(
|
||||
$passed
|
||||
,'environment : PHP/server does not auto-HTTP-encode content'
|
||||
);
|
||||
fclose($fp);
|
||||
|
||||
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
if (! $passed) {
|
||||
echo "\nReturned content should be 6 bytes and not HTTP encoded.\n"
|
||||
. "Headers returned by: {$thisUrl}?hello=1\n\n";
|
||||
var_export($meta['wrapper_data']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test_environment();
|
@ -1,4 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html><title>Test before.min.js</title></html>
|
||||
<h1>Test before.min.js</h1>
|
||||
<script src="_test_files/js/before.min.js" type="text/javascript"></script>
|
Loading…
Reference in New Issue
Block a user