Last active
August 29, 2015 14:11
-
-
Save Langmans/77c018056b9ba986659d to your computer and use it in GitHub Desktop.
compress_elfinder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"repositories": [ | |
{ | |
"type": "package", | |
"package": { | |
"name": "studio-42/elfinder", | |
"version": "2", | |
"source": { | |
"url": "https://github.com/Studio-42/elFinder.git", | |
"type": "git", | |
"reference": "2.x" | |
} | |
} | |
} | |
], | |
"require": { | |
"studio-42/elfinder": "*@dev" | |
}, | |
"scripts": { | |
"post-update-cmd": [ | |
"php compress_elfinder.php" | |
] | |
}, | |
"autoload": { | |
"classmap": [ | |
"vendor/studio-42/elfinder/php/elFinder.class.php", | |
"vendor/studio-42/elfinder/php/elFinderConnector.class.php", | |
"vendor/studio-42/elfinder/php/elFinderVolumeDriver.class.php", | |
"vendor/studio-42/elfinder/php/elFinderVolumeLocalFileSystem.class.php", | |
"vendor/studio-42/elfinder/php/elFinderVolumeMySQL.class.php" | |
] | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (PHP_SAPI != 'cli') { | |
echo 'this can only be run on the server.'; | |
return; | |
} | |
$elfinder_dir = __DIR__ . '/vendor/studio-42/elfinder'; | |
$assets_dir = __DIR__ . '/elfinder'; | |
echo 'GENERATING ELFINDER PACKAGE IN ', $elfinder_dir, PHP_EOL; | |
if (!($realpath = realpath($elfinder_dir))) { | |
echo $elfinder_dir, ' does not exist!', PHP_EOL; | |
return; | |
} else { | |
$elfinder_dir = $realpath; | |
} | |
echo PHP_EOL, 'writing JS', PHP_EOL, PHP_EOL; | |
$full_js_handle = fopen2($assets_dir . '/js/elfinder.js', 'w+'); | |
if ($full_js_handle) { | |
$js_files = array( | |
// THIS IS ACCORDING TO elfinder.src.html! | |
// ORDER MATTERS! | |
// core | |
$elfinder_dir . '/js/elFinder.js', | |
$elfinder_dir . '/js/elFinder.version.js', | |
$elfinder_dir . '/js/jquery.elfinder.js', | |
$elfinder_dir . '/js/elFinder.resources.js', | |
$elfinder_dir . '/js/elFinder.options.js', | |
$elfinder_dir . '/js/elFinder.history.js', | |
$elfinder_dir . '/js/elFinder.command.js', | |
// ui | |
$elfinder_dir . '/js/ui/overlay.js', | |
$elfinder_dir . '/js/ui/workzone.js', | |
$elfinder_dir . '/js/ui/navbar.js', | |
$elfinder_dir . '/js/ui/dialog.js', | |
$elfinder_dir . '/js/ui/tree.js', | |
$elfinder_dir . '/js/ui/cwd.js', | |
$elfinder_dir . '/js/ui/toolbar.js', | |
$elfinder_dir . '/js/ui/button.js', | |
$elfinder_dir . '/js/ui/uploadButton.js', | |
$elfinder_dir . '/js/ui/viewbutton.js', | |
$elfinder_dir . '/js/ui/searchbutton.js', | |
$elfinder_dir . '/js/ui/sortbutton.js', | |
$elfinder_dir . '/js/ui/panel.js', | |
$elfinder_dir . '/js/ui/contextmenu.js', | |
$elfinder_dir . '/js/ui/path.js', | |
$elfinder_dir . '/js/ui/stat.js', | |
$elfinder_dir . '/js/ui/places.js', | |
//commands | |
$elfinder_dir . "/js/commands/back.js", | |
$elfinder_dir . "/js/commands/forward.js", | |
$elfinder_dir . "/js/commands/reload.js", | |
$elfinder_dir . "/js/commands/up.js", | |
$elfinder_dir . "/js/commands/home.js", | |
$elfinder_dir . "/js/commands/copy.js", | |
$elfinder_dir . "/js/commands/cut.js", | |
$elfinder_dir . "/js/commands/paste.js", | |
$elfinder_dir . "/js/commands/open.js", | |
$elfinder_dir . "/js/commands/rm.js", | |
$elfinder_dir . "/js/commands/info.js", | |
$elfinder_dir . "/js/commands/duplicate.js", | |
$elfinder_dir . "/js/commands/rename.js", | |
$elfinder_dir . "/js/commands/help.js", | |
$elfinder_dir . "/js/commands/getfile.js", | |
$elfinder_dir . "/js/commands/mkdir.js", | |
$elfinder_dir . "/js/commands/mkfile.js", | |
$elfinder_dir . "/js/commands/upload.js", | |
$elfinder_dir . "/js/commands/download.js", | |
$elfinder_dir . "/js/commands/edit.js", | |
$elfinder_dir . "/js/commands/quicklook.js", | |
$elfinder_dir . "/js/commands/quicklook.plugins.js", | |
$elfinder_dir . "/js/commands/extract.js", | |
$elfinder_dir . "/js/commands/archive.js", | |
$elfinder_dir . "/js/commands/search.js", | |
$elfinder_dir . "/js/commands/view.js", | |
$elfinder_dir . "/js/commands/resize.js", | |
$elfinder_dir . "/js/commands/sort.js", | |
$elfinder_dir . "/js/commands/netmount.js", | |
// base translation, always include dmg languages! | |
$elfinder_dir . '/js/i18n/elfinder.en.js', | |
$elfinder_dir . '/js/i18n/elfinder.nl.js', | |
$elfinder_dir . '/js/i18n/elfinder.fr.js', | |
$elfinder_dir . '/js/i18n/elfinder.de.js', | |
// jquery plugin | |
$elfinder_dir . '/js/jquery.dialogelfinder.js', | |
); | |
fputs($full_js_handle, comment('elfinder.js')); | |
foreach ($js_files as $file) { | |
if (file_exists($file)) { | |
echo 'Adding ', realpath($file), PHP_EOL; | |
} else { | |
echo 'Missing ', $file, PHP_EOL; | |
continue; | |
} | |
$file = realpath($file); | |
fputs($full_js_handle, comment_short(str_replace($elfinder_dir, '', $file))); | |
fputs($full_js_handle, 'try {(function(){'); | |
fputs($full_js_handle, file_get_contents($file)); | |
$json_encoded = json_encode($file); | |
fputs( | |
$full_js_handle, | |
"})()} catch(e) { console && console.log && console.log('ELFINDER ERROR', $json_encoded, e);}" | |
); | |
} | |
fclose($full_js_handle); | |
} | |
echo PHP_EOL, 'writing CSS', PHP_EOL, PHP_EOL; | |
$full_css_handle = fopen2($assets_dir . '/css/elfinder.css', 'w'); | |
if ($full_css_handle) { | |
$css_files = (array)glob($elfinder_dir . '/css/*.css'); | |
fputs($full_css_handle, comment('elfinder.css')); | |
foreach ($css_files as $file) { | |
if (file_exists($file)) { | |
echo 'Adding ', realpath($file), PHP_EOL; | |
} else { | |
echo 'Missing ', $file, PHP_EOL; | |
continue; | |
} | |
$file = realpath($file); | |
fputs($full_css_handle, comment_short(str_replace($elfinder_dir, '', $file))); | |
fputs($full_css_handle, file_get_contents($file)); | |
} | |
fclose($full_css_handle); | |
} | |
echo PHP_EOL, 'COPYING IMAGES', PHP_EOL, PHP_EOL; | |
writable_dir($assets_dir . '/img'); | |
foreach ((array)glob($elfinder_dir . '/img/*.*') as $file) { | |
copy($file, $assets_dir . '/img/' . basename($file)); | |
} | |
echo PHP_EOL, 'COPYING i18n', PHP_EOL, PHP_EOL; | |
writable_dir($assets_dir . '/js/i18n'); | |
foreach ((array)glob($elfinder_dir . '/js/i18n/*.*') as $file) { | |
copy($file, $assets_dir . '/js/i18n/' . basename($file)); | |
} | |
echo PHP_EOL, 'COPYING SOUNDS', PHP_EOL, PHP_EOL; | |
writable_dir($assets_dir . '/sounds'); | |
foreach ((array)glob($elfinder_dir . '/sounds/*.*') as $file) { | |
copy($file, $assets_dir . '/sounds/' . basename($file)); | |
} | |
/** | |
* @param $file | |
* @return resource|false | |
*/ | |
function fopen2($file) | |
{ | |
writable_dir(dirname($file)); | |
return call_user_func_array('fopen', func_get_args()); | |
} | |
function writable_dir($dir) | |
{ | |
if (!is_dir($dir)) { | |
echo 'Creating ', $dir, '.', PHP_EOL; | |
mkdir($dir, 0777, true); | |
} elseif (!is_writable($dir)) { | |
echo 'Making ', $dir, ' writable.', PHP_EOL; | |
chmod($dir, 0777); | |
} | |
} | |
function comment($filename) | |
{ | |
$filename = str_replace('\\', '/', trim($filename, '\\/')); | |
$datetime = new \DateTime(); | |
$datetime = $datetime->format(\DateTime::W3C); | |
return <<<CSS | |
/**! | |
* @package DMG\\elfinder | |
* @generated | |
* @file $filename | |
* @generated_by Dragon Media Group B.V. <[email protected]> | |
* @generated_on $datetime | |
*/ | |
CSS; | |
} | |
function comment_short($filename) | |
{ | |
$filename = str_replace('\\', '/', trim($filename, '\\/')); | |
return <<<CSS | |
/*! $filename */ | |
CSS; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment