/** * Function to simplify replacements of absolute vs. relative paths when using magicmin * * @access public * @param string $output_filename * @param array $files * @param string $output_directory (just the 'css', 'js' etc... bit) * @param string $type (js, css) * @return string */ function magic_min_merge($output_filename, $files = array(), $output_directory = 'css') { if (empty($files)) { return ''; } require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'class.magic-min.php'; $output_type = strtolower(pathinfo(basename($output_filename), PATHINFO_EXTENSION)); $minified = new Minifier(array('closure' => true, 'echo' => false, 'timer' => false, 'hashed_filenames' => true, 'remove_comments' => true)); switch ($output_type) { case 'css': return '<link rel="stylesheet" href="' . $minified->merge($output_directory . '/' . $output_filename, $output_directory, $files, $output_type) . '" />' . PHP_EOL; break; case 'js': default: return '<script src="' . $minified->merge($output_directory . '/' . $output_filename, $output_directory, $files, $output_type) . '"></script>' . PHP_EOL; break; } }
public static function renderCss($position = 'header', $app = 'front') { $_css = self::sortCssByPriority(); $compress_array = array(); $stylesheet = ''; if (is_array($_css)) { foreach ($_css as $p => $__css) { if (is_array($__css)) { foreach ($__css as $css) { if ($position == 'header' && $css['options'] && $css['options']['position'] == 'footer') { continue; } else { if ($position != 'header' && (!$css['options'] || $css['options']['position'] != 'footer')) { continue; } } if ($css['options'] && $css['options']['condition']) { $stylesheet .= "\t<!--[" . $css['options']['condition'] . "]>\n\t"; } switch ($css['type']) { case 'source': $stylesheet .= "\t" . '<style id="' . $css['id'] . '"' . ($css['options'] && $css['options']['class'] ? ' class="' . $css['options']['class'] . '"' : '') . ' type="text/css">' . "\n\t\t" . $css['css'] . "\n\t</style>\n"; break; case 'src': default: if (DEBUG_MODE == false && $css['options']['compress'] == true) { $compress_path_str .= $css['css']; if (ROOT == '.') { $compress_array[] = ltrim($css['css'], CADB_URI); } else { $compress_array[] = ltrim($css['css'], '/'); } } else { $stylesheet .= "\t" . '<link id="' . $css['id'] . '"' . ($css['options'] && $css['options']['class'] ? ' class="' . $css['options']['class'] . '"' : '') . ' rel="stylesheet" href="' . $css['css'] . '">' . "\n"; } break; } if ($css['options'] && $css['options']['condition']) { $stylesheet .= "\t<![endif]-->\n"; } } } } } if (@count($compress_array) > 0) { $compress_file = CADB_CACHE_PATH . "/compress/" . hash('md5', $compress_path_str) . ".css"; $compress_uri = CADB_DATA_URI . "/cache/compress/" . hash('md5', $compress_path_str) . ".css.php"; if (!file_exists(CADB_CACHE_PATH)) { mkdir(CADB_CACHE_PATH, 0707); chmod(CADB_CACHE_PATH, 0707); } if (!file_exists(CADB_CACHE_PATH . "/compress")) { mkdir(CADB_CACHE_PATH . "/compress", 0707); chmod(CADB_CACHE_PATH . "/compress", 0707); } $vars = array('encode' => true, 'timer' => true, 'gzip' => true, 'closure' => true, 'echo' => false, 'remove_comments' => true); $minified = new \Minifier($vars); $stylesheet .= "\t" . '<link id="cadb_css_' . self::getUniqueID($compress_uri) . '" rel="stylesheet" href="' . CADB_URI . ltrim($minified->merge($compress_file, 'css', $compress_array), CADB_PATH) . '">' . "\n"; } return $stylesheet; }
if (!is_dir('../dist/images')) { mkdir('../dist/images'); } if (!is_dir('../dist/src')) { mkdir('../dist/src'); } copy('../LICENSE.txt', '../dist/LICENSE.txt'); copy('../proxy.php', '../dist/proxy.php'); copy('../github.com/Dominique92/Leaflet.MapMultiCRS/swiss.html', '../dist/src/swiss.html'); // Script de test des couches SwissTopo file_put_contents('../dist/src/leaflet.css', '@import url("../leaflet.css");'); file_put_contents('../dist/READ.ME', "For production, include:\n<link type=\"text/css\" rel=\"stylesheet\" href=\"leaflet.css\" />\n<script type=\"text/javascript\" src=\"leaflet.js\"></script>\n\nFor debug, include:\n<link type=\"text/css\" rel=\"stylesheet\" href=\"leaflet.css\" />\n<script type=\"text/javascript\" src=\"src/leaflet.js\"></script>\n\nDo not modify the files of this directory:\nthe source of this software is available at : https://github.com/Dominique92/MyLeaflet\n"); // On compresse les librairies $minified = new Minifier(array('encode' => false, 'timer' => false, 'gzip' => false, 'closure' => false, 'remove_comments' => true, 'echo' => false, 'create_new' => true)); preg_match_all('/\\("\\.\\.\\/([a-zA-Z0-9\\-\\/\\.]+)"\\)/', file_get_contents('../src/leaflet.css'), $css_list); $minified->merge('../dist/leaflet.css', '', $css_list[1]); preg_match_all('/\'\\.\\.\\/([a-zA-Z0-9\\-\\/\\.]+)\',/', file_get_contents('../src/leaflet.js'), $js_list); $minified->merge('../dist/leaflet.js', '', $js_list[1]); // Mise à jour pluggins Dominique92 foreach (glob('../github.com/Dominique92/*/*') as $f) { $fs = explode('/', $f); if (is_dir('../../' . $fs[3])) { copy($f, '../../' . $fs[3] . '/' . $fs[4]); echo '<br/>copy ' . $f . ' to ../../' . $fs[3] . '/' . $fs[4]; } } ?> <p>FIN</p> <p><a href=".">RELANCER BUILD</a></p> <p><a href="..">RETOUR DEMO</a></p>
private function minify($assets, $dir) { $css_to_minify = array(); $js_to_minify = array(); foreach ($assets as $asset) { // Don't minify direct assets if (isset($asset['direct']) && $asset['direct']) { continue; } // Only minify public assets if (!isset($asset['public']) || !$asset['public']) { continue; } switch (strtolower($asset['type'])) { case 'css': $css_to_minify[] = $asset['dir']; break; case 'js': $js_to_minify[] = $asset; break; } } $minify_files = array(); /** * CSS minification */ // CSS without base $minify_files[] = array('name' => 'wpurp-public-without-base.css', 'files' => array_unique($css_to_minify)); // CSS with normal base array_unshift($css_to_minify, WPUltimateRecipe::get()->coreDir . '/css/layout_base.css'); $minify_files[] = array('name' => 'wpurp-public.css', 'files' => array_unique($css_to_minify)); // CSS with forced base $css_to_minify[0] = WPUltimateRecipe::get()->coreDir . '/css/layout_base_forced.css'; $minify_files[] = array('name' => 'wpurp-public-forced.css', 'files' => array_unique($css_to_minify)); /** * JS minification */ // Get all the named JS files $js_names = array(); foreach ($js_to_minify as $js) { if (isset($js['name'])) { $js_names[] = $js['name']; } } // Order JS files (max 20 loops) $js_minify_order = array(); $js_ordered_names = array(); for ($i = 0; $i < 20; $i++) { foreach ($js_to_minify as $index => $js) { // Check which dependencies we need to actually resolve right now $actual_deps = array(); if (isset($js['deps'])) { foreach ($js['deps'] as $dep) { if (in_array($dep, $js_names) && !in_array($dep, $js_ordered_names)) { $actual_deps[] = $dep; } } } if (count($actual_deps) == 0) { $js_minify_order[] = $js['dir']; if (isset($js['name'])) { $js_ordered_names[] = $js['name']; } unset($js_to_minify[$index]); } } } if (count($js_to_minify) > 0) { var_dump('WP Ultimate Recipe: JS minification problem'); } $minify_files[] = array('name' => 'wpurp-public.js', 'files' => array_unique($js_minify_order)); /** * Performing the minification */ require_once WPUltimateRecipe::get()->coreDir . '/vendor/magic-min/class.magic-min.php'; $minified = new Minifier(array('echo' => false, 'gzip' => false)); foreach ($minify_files as $minify_file) { // Remove current file (easier while developing) if (is_file($dir . $minify_file['name'])) { unlink($dir . $minify_file['name']); } // Minify $minified->merge($dir . $minify_file['name'], '', $minify_file['files']); } }