183 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			183 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (phpversion() < 5) {
							 | 
						||
| 
								 | 
							
								    exit('Minify requires PHP5 or greater.');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// check for auto-encoding
							 | 
						||
| 
								 | 
							
								$encodeOutput = (function_exists('gzdeflate')
							 | 
						||
| 
								 | 
							
								                 && !ini_get('zlib.output_compression'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require dirname(__FILE__) . '/../config.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (! $min_enableBuilder) {
							 | 
						||
| 
								 | 
							
								    header('Location: /');
							 | 
						||
| 
								 | 
							
								    exit();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ob_start();
							 | 
						||
| 
								 | 
							
								?>
							 | 
						||
| 
								 | 
							
								<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
							 | 
						||
| 
								 | 
							
								<head>
							 | 
						||
| 
								 | 
							
								    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
							 | 
						||
| 
								 | 
							
								    <title>Minify URI Builder</title>
							 | 
						||
| 
								 | 
							
								    <style type="text/css">
							 | 
						||
| 
								 | 
							
								body {margin:1em 60px;}
							 | 
						||
| 
								 | 
							
								h1, h2, h3 {margin-left:-25px; position:relative;}
							 | 
						||
| 
								 | 
							
								h1 {margin-top:0;}
							 | 
						||
| 
								 | 
							
								#sources {margin:0; padding:0;}
							 | 
						||
| 
								 | 
							
								#sources li {margin:0 0 0 40px}
							 | 
						||
| 
								 | 
							
								#sources li input {margin-left:2px}
							 | 
						||
| 
								 | 
							
								#add {margin:5px 0 1em 40px}
							 | 
						||
| 
								 | 
							
								.hide {display:none}
							 | 
						||
| 
								 | 
							
								#uriTable {border-collapse:collapse;}
							 | 
						||
| 
								 | 
							
								#uriTable td, #uriTable th {padding-top:10px;}
							 | 
						||
| 
								 | 
							
								#uriTable th {padding-right:10px;}
							 | 
						||
| 
								 | 
							
								#groupConfig {font-family:monospace;}
							 | 
						||
| 
								 | 
							
								b {color:#c00}
							 | 
						||
| 
								 | 
							
								.topNote {background: #ff9; display:inline-block; padding:.5em .6em; margin:0 0 1em;}
							 | 
						||
| 
								 | 
							
								.topWarning {background:#c00; color:#fff; padding:.5em .6em; margin:0 0 1em;}
							 | 
						||
| 
								 | 
							
								    </style>
							 | 
						||
| 
								 | 
							
								</head>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<?php if (! isset($min_cachePath)): ?>
							 | 
						||
| 
								 | 
							
								<p class=topNote><strong>Note:</strong> Please set <code>$min_cachePath</code> 
							 | 
						||
| 
								 | 
							
								in /min/config.php to improve performance.</p>
							 | 
						||
| 
								 | 
							
								<?php endIf; ?>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p id=minRewriteFailed class="hide"><strong>Note:</strong> Your webserver does not seem to
							 | 
						||
| 
								 | 
							
								 support mod_rewrite (used in /min/.htaccess). Your Minify URIs will contain "?", which 
							 | 
						||
| 
								 | 
							
								<a href="http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/"
							 | 
						||
| 
								 | 
							
								>may reduce the benefit of proxy cache servers</a>.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h1>Minify URI Builder</h1>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<noscript><p class="topNote">Javascript and a browser supported by jQuery 1.2.6 is required
							 | 
						||
| 
								 | 
							
								for this application.</p></noscript>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div id=app class=hide>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Create a list of Javascript or CSS files (or 1 is fine) you'd like to combine
							 | 
						||
| 
								 | 
							
								and click [Update].</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<ol id=sources><li></li></ol>
							 | 
						||
| 
								 | 
							
								<div id=add><button>Add file +</button></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div id=bmUris></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p><button id=update class=hide>Update</button></p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div id=results class=hide>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h2>Minify URI</h2>
							 | 
						||
| 
								 | 
							
								<p>Place this URI in your HTML to serve the files above combined, minified, compressed and
							 | 
						||
| 
								 | 
							
								with cache headers.</p>
							 | 
						||
| 
								 | 
							
								<table id=uriTable>
							 | 
						||
| 
								 | 
							
								    <tr><th>URI</th><td><a id=uriA class=ext>/min</a> <small>(opens in new window)</small></td></tr>
							 | 
						||
| 
								 | 
							
								    <tr><th>HTML</th><td><input id=uriHtml type=text size=100 readonly></td></tr>
							 | 
						||
| 
								 | 
							
								</table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h2>How to serve these files as a group</h2>
							 | 
						||
| 
								 | 
							
								<p>For the best performance you can serve these files as a pre-defined group with a URI
							 | 
						||
| 
								 | 
							
								like: <code><span class=minRoot>/min/?</span>g=keyName</code></p>
							 | 
						||
| 
								 | 
							
								<p>To do this, add a line like this to /min/groupsConfig.php:</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<pre><code>return array(
							 | 
						||
| 
								 | 
							
								    <span style="color:#666">... your existing groups here ...</span>
							 | 
						||
| 
								 | 
							
								<input id=groupConfig size=100 type=text readonly>
							 | 
						||
| 
								 | 
							
								);</code></pre>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p><em>Make sure to replace <code>keyName</code> with a unique key for this group.</em></p>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div id=getBm>
							 | 
						||
| 
								 | 
							
								<h3>Find URIs on a Page</h3>
							 | 
						||
| 
								 | 
							
								<p>You can use the bookmarklet below to fetch all CSS & Javascript URIs from a page
							 | 
						||
| 
								 | 
							
								on your site. When you active it, this page will open in a new window with a list of
							 | 
						||
| 
								 | 
							
								available URIs to add.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p><a id=bm>Create Minify URIs</a> <small>(right-click, add to bookmarks)</small></p>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h3>Combining CSS files that contain <code>@import</code></h3>
							 | 
						||
| 
								 | 
							
								<p>If your CSS files contain <code>@import</code> declarations, Minify will not 
							 | 
						||
| 
								 | 
							
								remove them. Therefore, you will want to remove those that point to files already
							 | 
						||
| 
								 | 
							
								in your list, and move any others to the top of the first file in your list 
							 | 
						||
| 
								 | 
							
								(imports below any styles will be ignored by browsers as invalid).</p>
							 | 
						||
| 
								 | 
							
								<p>If you desire, you can use Minify URIs in imports and they will not be touched
							 | 
						||
| 
								 | 
							
								by Minify. E.g. <code>@import "<span class=minRoot>/min/?</span>g=css2";</code></p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</div><!-- #app -->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<hr>
							 | 
						||
| 
								 | 
							
								<p>Need help? Search or post to the <a class=ext 
							 | 
						||
| 
								 | 
							
								href="http://groups.google.com/group/minify">Minify discussion list</a>.</p>
							 | 
						||
| 
								 | 
							
								<p><small>This app is minified :) <a class=ext 
							 | 
						||
| 
								 | 
							
								href="http://code.google.com/p/minify/source/browse/trunk/min/builder/index.php">view 
							 | 
						||
| 
								 | 
							
								source</a></small></p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script type="text/javascript" 
							 | 
						||
| 
								 | 
							
								src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script type="text/javascript">
							 | 
						||
| 
								 | 
							
								$(function () {
							 | 
						||
| 
								 | 
							
								    // detection of double output encoding
							 | 
						||
| 
								 | 
							
								    var msg = '<\p class=topWarning><\strong>Warning:<\/strong> ';
							 | 
						||
| 
								 | 
							
								    var url = 'ocCheck.php?' + (new Date()).getTime();
							 | 
						||
| 
								 | 
							
								    $.get(url, function (ocStatus) {
							 | 
						||
| 
								 | 
							
								        $.get(url + '&hello=1', function (ocHello) {
							 | 
						||
| 
								 | 
							
								            if (ocHello != 'World!') {
							 | 
						||
| 
								 | 
							
								                msg += 'It appears output is being automatically compressed, interfering ' 
							 | 
						||
| 
								 | 
							
								                     + ' with Minify\'s own compression. ';
							 | 
						||
| 
								 | 
							
								                if (ocStatus == '1')
							 | 
						||
| 
								 | 
							
								                    msg += 'The option "zlib.output_compression" is enabled in your PHP configuration. '
							 | 
						||
| 
								 | 
							
								                         + 'Minify set this to "0", but it had no effect. This option must be disabled ' 
							 | 
						||
| 
								 | 
							
								                         + 'in php.ini or .htaccess.';
							 | 
						||
| 
								 | 
							
								                else
							 | 
						||
| 
								 | 
							
								                    msg += 'The option "zlib.output_compression" is disabled in your PHP configuration '
							 | 
						||
| 
								 | 
							
								                         + 'so this behavior is likely due to a server option.';
							 | 
						||
| 
								 | 
							
								                $(document.body).prepend(msg + '<\/p>');
							 | 
						||
| 
								 | 
							
								            } else
							 | 
						||
| 
								 | 
							
								                if (ocStatus == '1')
							 | 
						||
| 
								 | 
							
								                    $(document.body).prepend('<\p class=topNote><\strong>Note:</\strong> The option '
							 | 
						||
| 
								 | 
							
								                        + '"zlib.output_compression" is enabled in your PHP configuration, but has been '
							 | 
						||
| 
								 | 
							
								                        + 'successfully disabled via ini_set(). If you experience mangled output you '
							 | 
						||
| 
								 | 
							
								                        + 'may want to consider disabling this option in your PHP configuration.<\/p>'
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								<script type="text/javascript">
							 | 
						||
| 
								 | 
							
								    // workaround required to test when /min isn't child of web root
							 | 
						||
| 
								 | 
							
								    var src = location.pathname.replace(/\/[^\/]*$/, '/_index.js').substr(1);
							 | 
						||
| 
								 | 
							
								    document.write('<\script type="text/javascript" src="../?f=' + src + '"><\/script>');
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$serveOpts = array(
							 | 
						||
| 
								 | 
							
								    'content' => ob_get_contents()
							 | 
						||
| 
								 | 
							
								    ,'id' => __FILE__
							 | 
						||
| 
								 | 
							
								    ,'lastModifiedTime' => max(
							 | 
						||
| 
								 | 
							
								        // regenerate cache if either of these change
							 | 
						||
| 
								 | 
							
								        filemtime(__FILE__)
							 | 
						||
| 
								 | 
							
								        ,filemtime(dirname(__FILE__) . '/../config.php')
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    ,'minifyAll' => true
							 | 
						||
| 
								 | 
							
								    ,'encodeOutput' => $encodeOutput
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								ob_end_clean();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set_include_path(dirname(__FILE__) . '/../lib' . PATH_SEPARATOR . get_include_path());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require 'Minify.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (0 === stripos(PHP_OS, 'win')) {
							 | 
						||
| 
								 | 
							
								    Minify::setDocRoot(); // we may be on IIS
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								Minify::setCache(isset($min_cachePath) ? $min_cachePath : null);
							 | 
						||
| 
								 | 
							
								Minify::$uploaderHoursBehind = $min_uploaderHoursBehind;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Minify::serve('Page', $serveOpts);
							 |