<!DOCTYPE html> <html> <head> <title>CSS Compressor [VERSION]</title> <link rel='stylesheet' type='text/css' href='styles.css' /> <script src='js.js'></script> </head> <body>
<!-- CSS Compressor [VERSION] [DATE] Corey Hart @ http://www.codenothing.com -->
<h2>CSS Compressor [VERSION]</h2>
<?php
if ( isset( $_GET['view'] ) && $_GET['view'] == "compress" ) { // Run compression on passed script require("css-compression.php"); $CSSC = new CSSCompression( $_POST['css'], $_POST ); $height = ( $CSSC->media || $CSSC->readability > CSSCompression::READ_NONE ) ? "400px" : "12px";
// Add results above the form echo "<div id='results'>"; $CSSC->displayStats(); echo "<textarea style='height:$height;' onclick='this.select()'>".$CSSC->css."</textarea><br><br>"; echo '</div>';
// Form Saving foreach ( $_POST as $k => $v ) { if ( $k != 'css' ) { $checked[ $k ] = $v ? "checked='checked'" : ''; } }
// Readability is a select, not a checkbox $checked['readability'] = $_POST['readability'];
} else{ // Set options by default $opts = array( 'color-long2hex', 'color-rgb2hex', 'color-hex2shortcolor', 'color-hex2shorthex', 'fontweight2num', 'format-units', 'lowercase-selectors', 'directional-compress', 'multiple-selectors', 'multiple-details', 'csw-combine', 'auralcp-combine', 'mp-combine', 'border-combine', 'font-combine', 'background-combine', 'list-combine', 'unnecessary-semicolons', 'rm-multi-define', );
foreach ( $opts as $key ) { $checked[ $key ] = "checked='checked'"; } $checked['color-hex2shortcolor'] = ''; }
?>
<form action='index.php?view=compress' method='POST'> <table> <tr valign='top'> <td width='50%'><textarea name='css'><?php if ( isset( $_POST['css'] ) ) echo $_POST['css'];?></textarea></td> <td> <label class='order-important'> <input type='checkbox' name='order-important' onChange='forceOrder(this);' <?php if ( isset( $checked['order-important'] ) ) echo $checked['order-important']; ?> /> Order Important Stylesheet (Won't mess with the order of selectors) </label> <div class='options'> <label> <input type='checkbox' name='color-long2hex' <?php if ( isset( $checked['color-long2hex'] ) ) echo $checked['color-long2hex']; ?> /> Convert long color names to short hex names (aliceblue -> #f0f8ff) </label> <label class='odd'> <input type='checkbox' name='color-rgb2hex' <?php if ( isset( $checked['color-rgb2hex'] ) ) echo $checked['color-rgb2hex']; ?> /> Convert rgb colors to hex (rgb(159,80,98) -> #9F5062, rgb(100%) -> #FFFFFF) </label> <label> <input type='checkbox' name='color-hex2shortcolor' <?php if ( isset( $checked['color-hex2shortcolor'] ) ) echo $checked['color-hex2shortcolor']; ?> /> Convert long hex codes to short color names (#f5f5dc -> beige)<br> <i>(Short colornames are only supported by newer browsers)</i> </label> <label class='odd'> <input type='checkbox' name='color-hex2shorthex' <?php if ( isset( $checked['color-hex2shorthex'] ) ) echo $checked['color-hex2shorthex']; ?> /> Convert long hex codes to short hex codes (#44ff11 -> #4f1) </label> <label> <input type='checkbox' name='fontweight2num' <?php if ( isset( $checked['fontweight2num'] ) ) echo $checked['fontweight2num']; ?> /> Convert font-weight names to numbers (bold -> 700) </label> <label class='odd'> <input type='checkbox' name='format-units' <?php if ( isset( $checked['format-units'] ) ) echo $checked['format-units']; ?> /> Remove zero decimals and 0 units (15.0px -> 15px || 0px -> 0) </label> <label> <input type='checkbox' name='lowercase-selectors' <?php if ( isset( $checked['lowercase-selectors'] ) ) echo $checked['lowercase-selectors']; ?> /> Lowercase html tags from list (BODY -> body) </label> <label class='odd'> <input type='checkbox' name='directional-compress' <?php if ( isset( $checked['directional-compress'] ) ) echo $checked['directional-compress']; ?> /> Compress single defined multi-directional properties (margin:15px 25px 15px 25px -> margin:15px 25px) </label> <label> <input type='checkbox' id='orderimportant1' name='multiple-selectors' <?php echo ( isset( $checked['order-important'] ) ? "disabled='disabled'" : '')?> <?php if ( isset( $checked['multiple-selectors'] ) ) echo $checked['multiple-selectors']; ?> /> Combine multiply defined selectors (p{color:blue;} p{font-size:12pt} -> p{color:blue;font-size:12pt;}) </label> <label class='odd'> <input type='checkbox' id='orderimportant2' name='multiple-details' <?php echo ( isset( $checked['order-important'] ) ? "disabled='disabled'" : '')?> <?php if ( isset( $checked['multiple-details'] ) ) echo $checked['multiple-details']; ?> /> Combine selectors with same details (p{color:blue;} a{color:blue;} -> p,a{color:blue;}) </label> <label> <input type='checkbox' name='csw-combine' <?php if ( isset( $checked['csw-combine'] ) ) echo $checked['csw-combine']; ?> /> Combine color/style/width properties (border-style:dashed;border-color:black;border-width:4px; -> border:4px dashed black) </label> <label class='odd'> <input type='checkbox' name='auralcp-combine' <?php if ( isset( $checked['auralcp-combine'] ) ) echo $checked['auralcp-combine']; ?> /> Combines cue/pause properties (cue-before: url(before.au); cue-after: url(after.au) -> cue:url(before.au) url(after.au)) </label> <label> <input type='checkbox' name='mp-combine' <?php if ( isset( $checked['mp-combine'] ) ) echo $checked['mp-combine']; ?> /> Combine margin/padding directionals (margin-top:10px;margin-right:5px;margin-bottom:4px;margin-left:1px; -> margin:10px 5px 4px 1px;) </label> <label class='odd'> <input type='checkbox' name='border-combine' <?php if ( isset( $checked['border-combine'] ) ) echo $checked['border-combine']; ?> /> Combine border directionals (border-top|right|bottom|left:1px solid black -> border:1px solid black) </label> <label> <input type='checkbox' name='font-combine' <?php if ( isset( $checked['font-combine'] ) ) echo $checked['font-combine']; ?> /> Combine font properties (font-size:12pt; font-family: arial; -> font:12pt arial) </label> <label class='odd'> <input type='checkbox' name='background-combine' <?php if ( isset( $checked['background-combine'] ) ) echo $checked['background-combine']; ?> /> Combine background properties (background-color: black; background-image: url(bgimg.jpeg); -> background:black url(bgimg.jpeg)) </label> <label> <input type='checkbox' name='list-combine' <?php if ( isset( $checked['list-combine'] ) ) echo $checked['list-combine']; ?> /> Combine list-style properties (list-style-type: round; list-style-position: outside -> list-style:round outside </label> <label class='odd'> <input type='checkbox' name='unnecessary-semicolons' <?php if ( isset( $checked['unnecessary-semicolons'] ) ) echo $checked['unnecessary-semicolons']; ?> /> Removes the last semicolon of a property set ({margin: 2px; color: blue;} -> {margin: 2px; color: blue}) </label> <label> <input type='checkbox' name='rm-multi-define' <?php if ( isset( $checked['rm-multi-define'] ) ) echo $checked['rm-multi-define']; ?> /> Remove multiply defined properties, STRONGLY SUGGESTED TO KEEP THIS ONE TRUE </label> <label class='odd'> <select name='readability'> <option value='0' <?php echo isset( $checked['readability'] ) && $checked['readability'] == 0 ? "selected='selected'" : '';?> >None</option> <option value='1' <?php echo isset( $checked['readability'] ) && $checked['readability'] == 1 ? "selected='selected'" : '';?> >Minimal</option> <option value='2' <?php echo isset( $checked['readability'] ) && $checked['readability'] == 2 ? "selected='selected'" : '';?> >Average</option> <option value='3' <?php echo isset( $checked['readability'] ) && $checked['readability'] == 3 ? "selected='selected'" : '';?> >Maximum</option> </select> <b>Readability</b> after compression (None == single line) </label> </div> </td> </tr> <tr> <td align='center'><input type='submit' value=' Compress ' /></td> <td></td> </tr> </table> </form>
<p style='margin-top:60px;font-size:9pt;'> Have a question? Found a bug? Test it using the <a href='sandbox/'>sandbox</a> or <a href='mailto:corey@codenothing.com?Subject=CSSC Question/Bug'>mail me</a>. </p>
<div style='margin-top:50px;'> <a href='http://www.codenothing.com/archives/php/css-compressor/'>Back to Original Article</a> </div>
</body> </html>
|