class Pman_Core_JsCompile extends Pman
{
+
+ static $cli_desc = "Wrapper around Javascript compression tools";
+
var $cli = false;
function getAuth()
{
}
exit;
}
+ /**
+ * packScript:
+ *
+ * @param {String} basedir absolute path to files
+ * @param {Array} list of files (ontop of basedir)
+ * @param {String} output url (path to basedir basically), or false
+ * to not compile
+ *
+ *
+ */
-
- function packScript($basedir, $files, $output_path, $output_url)
+ function packScript($basedir, $files, $output_url, $compile=true)
{
// this outputs <script tags..>
// either for just the original files,
$arfiles = array();
$ofiles = array();
foreach($files as $f) {
+ if (!file_exists($basedir .'/' .$f)) {
+ continue;
+ }
if (!is_dir($basedir .'/' .$f)) {
+
$arfiles[$basedir .'/' .$f] = filemtime($basedir .'/' .$f);
+ $ofiles[] = $f;
continue;
}
foreach(glob($basedir .'/' .$f.'/*.js') as $fx) {
$arfiles[$fx] = filemtime($fx);
+ $ofiles [] = $f . '/'. basename($fx);
}
}
$output = md5(serialize($arfiles)) .'.js';
- if (!file_exists($output_path.'/_cache_/'.$output)) {
- $this->pack($arfiles,$output_path.'/_cache_/'.$output);
+ if ( $compile && !file_exists($basedir.'/_cache_/'.$output)) {
+ $this->pack($arfiles,$basedir.'/_cache_/'.$output);
}
- if (file_exists($output_path.'/'.$output)) {
+ if ($compile && file_exists($basedir.'/_cache_/'.$output)) {
echo '<script type="text/javascript" src="'.$output_url.'/_cache_/'. $output.'"></script>';
return;
}
- foreach($arfiles as $f=>$t) {
- echo '<script type="text/javascript" src="'.$output_url.'/'.$f.'"></script>';
+ foreach($ofiles as $f) {
+ echo '<script type="text/javascript" src="'.$output_url.'/'.$f.'"></script>'."\n";
}
}
- function packCss($basedir, $files, $output_path, $output_url)
+ function packCss($basedir, $files, $output_url)
{
// this outputs <script tags..>
// either for just the original files,
$arfiles = array();
$ofiles = array();
+ //print_R($files);
foreach($files as $f) {
+ if (!file_exists($basedir .'/' .$f)) {
+ continue;
+ }
if (!is_dir($basedir .'/' .$f)) {
$arfiles[$basedir .'/' .$f] = filemtime($basedir .'/' .$f);
- $ofiles = $f;
+ $ofiles[] = $f;
continue;
}
foreach(glob($basedir .'/' .$f.'/*.css') as $fx) {
$arfiles[$fx] = filemtime($fx);
+ $ofiles [] = $f . '/'. basename($fx);
}
}
$output = md5(serialize($arfiles)) .'.css';
- if (!file_exists($output_path.'/_cache_/'.$output)) {
- $this->packCssCore($arfiles,$output_path.'/_cache_/'.$output);
+ if (!file_exists($basedir.'/_cache_/'.$output)) {
+ $this->packCssCore($arfiles,$basedir.'/_cache_/'.$output);
}
-
- if (file_exists($output_path.'/'.$output)) {
+ //var_dump()$basedir. '/_cache_/'.$output);
+ if (file_exists($basedir. '/_cache_/'.$output)) {
echo '<link type="text/css" rel="stylesheet" media="screen" href="'.$output_url. '/_cache_/'. $output.'" />';
return;
}
- foreach($arfiles as $f=>$t) {
+ foreach($ofiles as $f ) {
echo '<link type="text/css" rel="stylesheet" media="screen" href="'.$output_url.'/'.$f.'" />'."\n";
}
$o = HTML_FlexyFramework::get()->Pman_Core;
if (empty($o['cssminify']) || !file_exists($o['cssminify'])) {
- echo '<!-- jspacker not set -->';
+ echo '<!-- cssminify not set -->';
return false;
}
require_once 'System.php';
}
$eoutput = escapeshellarg($output);
$cmd = "$seed {$o['cssminify']} $eoutput " . implode($ofiles, ' ');
- //echo "<PRE>$cmd\n";
- //echo `$cmd`;
+ //echo "<PRE>$cmd\n"; echo `$cmd`; exit;
`$cmd`;
}
/**
- * wrapper arroudn packer...
+ * wrapper arround packer...
+ * uses the translation module & puts index in __tra
+ *
* @param {Array} map of $files => filemtime the files to pack
* @param {String} $output name fo file to output
*
*/
- function pack($files, $output)
+ function pack($files, $output, $translation_base=false)
{
$o = HTML_FlexyFramework::get()->Pman_Core;
if (empty($o['jspacker']) || !file_exists($o['jspacker'].'/pack.js')) {
- echo '<!-- jspacker not set -->';
+ echo '<!-- JS COMPILE ERROR: option: Pman_Core[jspacker] not set to directory -->';
return false;
}
require_once 'System.php';
$seed= System::which('seed');
if (!$seed) {
- echo '<!-- seed not installed -->';
+ echo '<!-- JS COMPILE ERROR: seed not installed -->';
return false;
}
if (!file_exists(dirname($output))) {
mkdir(dirname($output), 0755, true);
}
- $eoutput = escapeshellarg($output);
- $cmd = "$seed {$o['jspacker']}/pack.js -o $eoutput " . implode($ofiles, ' ');
+ $lsort = create_function('$a,$b','return strlen($a) > strlen($b) ? 1 : -1;');
+ usort($ofiles, $lsort);
+
+ $eoutput = " -o " . escapeshellarg($output) ;
+
+
+ if ( $translation_base) {
+ $toutput = "-t ". escapeshellarg(preg_replace('/\.js$/', '.__translation__.js', $output)) .
+ " -p " . escapeshellarg($translation_base) ;//." -k "; // this kills the compression.
+
+ }
+
+
+ $cmd = "$seed {$o['jspacker']}/pack.js $eoutput $toutput " . implode($ofiles, ' ') . ' 2>&1';
//echo "<PRE>$cmd\n";
//echo `$cmd`;
- `$cmd`;
-
+ echo "<!-- Compile javascript
+
+ " . htmlspecialchars($cmd) . "
+
+ -->";
+
+ // return false;
+
+ $res = `$cmd`;
+ //exit;
+ file_put_contents($output.'.log', $cmd."\n\n". $res);
+ // since this only appears when we change.. it's ok to dump it out..
+ echo "<!-- Compiled javascript
+ " . htmlspecialchars($res) . "
+ -->";
+
// we should do more checking.. return val etc..
if (file_exists($output) && ($max < filemtime($output) ) ) {
+
return true;
}
+ echo "<!-- JS COMPILE ERROR: packed file did not exist -->";
return false;
}