Skip to content

Instantly share code, notes, and snippets.

@Langmans
Last active August 29, 2015 14:11
Show Gist options
  • Save Langmans/77c018056b9ba986659d to your computer and use it in GitHub Desktop.
Save Langmans/77c018056b9ba986659d to your computer and use it in GitHub Desktop.
compress_elfinder
{
"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"
]
}
}
<?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. <info@dragonmediagroup.nl>
* @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