commit 69c52b57261ee5bced96cb105cf74034a7b4762e
parent 86bff981e9a38be53a47b3d9b2ddeb08121a18a1
Author: Jan Dankert <devnull@localhost>
Date: Wed, 15 Nov 2017 00:55:04 +0100
Für JS und CSS eine combined-Datei erstellen. Im HTML-Kopf wird im Production-Mode ein Link auf diese Dateien erzeugt. Das Theme-CSS wird inline ausgegeben, da sich diese CSS-Styles aus der Konfiguration ergeben, die variabel ist.
Diffstat:
3 files changed, 270 insertions(+), 414 deletions(-)
diff --git a/action/IndexAction.class.php b/action/IndexAction.class.php
@@ -96,314 +96,281 @@ class IndexAction extends Action
else
$style = config('interface','style','default');
+ $jsFiles = $this->getJSFiles();
+ $cssFiles = $this->getCSSFiles();
+ $themeCss = $this->getThemeCSS();
+
// HTML-Datei direkt einbinden.
require('themes/default/layout/index.php');
exit;
}
+
-
- public function stylesheetView()
+ private function getCSSFiles()
{
- if ( DEVELOPMENT )
- $this->lastModified( config('config','last_modification') );
- else
- $this->lastModified( strtotime(config('version','date')) );
-
-
- header('Content-Type: text/css');
- $css = array();
- // $css[] = link id="userstyle" rel="stylesheet" type="text/css" href="<?php echo css_link($style) "
-// $cssParam = css_link($style);
-
-// $css['userstyle'] = OR_THEMES_EXT_DIR.'default/css/openrat-theme.css.php';
- $css[] = OR_THEMES_EXT_DIR.'default/css/openrat-ui';
- $css[] = OR_THEMES_EXT_DIR.'default/css/openrat-workbench';
-
- // $css[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/skins/markitup/style.css';
- // $css[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/sets/default/style.css';
-
- // Komponentenbasiertes CSS
- $elements = parse_ini_file( OR_THEMES_DIR.config('interface','theme').'/include/elements.ini.'.PHP_EXT);
-
- foreach( array_keys($elements) as $c )
- {
- $componentCssFile = OR_THEMES_DIR.config('interface','theme').'/include/html/'.$c.'/'.$c;
- if ( is_file($componentCssFile.'.less') )
- $css[] = $componentCssFile;
-
- }
-
- if ( DEVELOPMENT ) {
-
- foreach( $css as $id=>$cssF )
- {
- $lessFile = $cssF.'.less';
- $cssFile = $cssF.'.css';
- $cssMinFile = $cssF.'.min.css';
-
-
-
- if ( !is_file($lessFile))
- {
- echo "\n/* File $lessFile is missing! */";
- Logger::warn("Stylesheet not found: $lessFile");
- }
- elseif ( !is_file($cssFile) || !is_file($cssMinFile))
- {
- echo "\n/* File $cssMinFile is missing! */";
- Logger::warn("Stylesheet output file not found $cssMinFile");
- }
- else
- {
- if( filemtime($lessFile) > filemtime($cssMinFile) )
- {
- // LESS-Source wurde geändert, CSS-Version muss aktualisiert werden.
- if ( !is_writable($cssFile) || !is_writable($cssMinFile))
- {
- echo "/* File $jsFileMin is not writable! */";
- Logger::warn("Style-Output file is not writable: $cssMinFile");
- }
- else
- {
- echo "/* LESS Source file: $lessFile */\n";
- $parser = new Less_Parser(
- array('sourceMap' => true,
- 'indentation' => ' ',
- 'outputSourceFiles' => true)
- );
-
-
- $parser->parse( file_get_contents($lessFile),$lessFile );
- $source = $parser->getCss();
-
- file_put_contents( $cssFile, "/* DO NOT CHANGE THIS FILE! CHANGE .LESS INSTEAD! */\n\n".$source );
-
-
- file_put_contents( $cssMinFile, $this->minifyCSS($source) );
- }
- }
- echo "\n/* CSS file: $cssFile */\n";
- readfile($cssFile);
- }
- }
- }
- else
- {
- // Production mode: Inline minified CSS
- foreach( $css as $id=>$cssF )
- {
- $cssMinFile = $cssF.'.min.css';
-
- if ( !is_file($cssMinFile))
- {
- echo "\n/* File $cssMinFile is missing! */\n";
- Logger::warn("Stylesheet output file not found $cssMinFile");
- }
- else
- {
- readfile($cssMinFile);
- }
- }
- }
-
-
- // Je Theme die Theme-CSS-Datei ausgeben.
- $cssF = OR_THEMES_EXT_DIR.'default/css/openrat-theme';
- $lessFile = $cssF.'.less';
- $cssFile = $cssF.'.css';
- $cssMinFile = $cssF.'.min.css';
-
- if ( DEVELOPMENT )
- {
- if (filemtime($lessFile) > filemtime($cssMinFile))
+ $productionCSSFile = OR_THEMES_DIR . 'default/production/combined.min.css';
+
+ if (PRODUCTION)
+ {
+ return array(
+ $productionCSSFile
+ );
+ }
+
+ $outFiles = array();
+
+ $css = array();
+ $css[] = OR_THEMES_EXT_DIR . 'default/css/openrat-ui';
+ $css[] = OR_THEMES_EXT_DIR . 'default/css/openrat-workbench';
+
+ // Komponentenbasiertes CSS
+ $elements = parse_ini_file(OR_THEMES_DIR . config('interface', 'theme') . '/include/elements.ini.' . PHP_EXT);
+
+ foreach (array_keys($elements) as $c)
+ {
+ $componentCssFile = OR_THEMES_DIR . config('interface', 'theme') . '/include/html/' . $c . '/' . $c;
+ if (is_file($componentCssFile . '.less'))
+ $css[] = $componentCssFile;
+ }
+
+ $modified = false;
+ foreach ($css as $cssF)
+ {
+ $lessFile = $cssF . '.less';
+ $cssFile = $cssF . '.css';
+ $cssMinFile = $cssF . '.min.css';
+
+ if (! is_file($lessFile))
{
- try
+ Logger::warn("Stylesheet not found: $lessFile");
+ continue;
+ }
+ elseif (! is_file($cssFile) || ! is_writable($cssFile))
+ {
+ Logger::warn("Stylesheet output file not found or not writable: $cssFile");
+ continue;
+ }
+ elseif (! is_file($cssMinFile) || ! is_writable($cssMinFile))
+ {
+ Logger::warn("Stylesheet output file not found or not writable: $cssMinFile");
+ continue;
+ }
+ else
+ {
+ if (filemtime($lessFile) > filemtime($cssMinFile))
{
- file_put_contents($cssFile, "/* DO NOT CHANGE THIS FILE! CHANGE .LESS INSTEAD! */\n\n");
- file_put_contents($cssMinFile, '');
+ // LESS-Source wurde geändert, CSS-Version muss aktualisiert werden.
+ $modified = true;
- $lessSource = file_get_contents($lessFile);
+ // Den absoluten Pfad zur LESS-Datei ermitteln. Dieser wird vom LESS-Parser für den korrekten Link
+ // auf die LESS-Datei in der Sourcemap benötigt.
+ $pfx = substr(realpath($lessFile),0,0-strlen(basename($lessFile)));
- foreach (array_keys(config('style')) as $styleId)
- {
- $parser = new Less_Parser( array('sourceMap' => true,
- 'indentation' => ' ',
- 'outputSourceFiles' => true)
- );
-
- $parser->parse($lessSource,$lessFile);
-
- $styleConfig = config('style', $styleId);
- $lessVars = array(
- 'cms-theme-id' => strtolower($styleId),
- 'cms-image-path' => 'themes/default/images/'
- );
-
- foreach ($styleConfig as $styleSetting => $value)
- $lessVars['cms-' . strtolower(strtr($styleSetting, '_', '-'))] = $value;
- $parser->modifyVars($lessVars);
- $css = $parser->getCss();
-
- file_put_contents($cssFile , "\n/* Style $styleId */\n" . $css, FILE_APPEND);
- file_put_contents($cssMinFile, $this->minifyCSS($css), FILE_APPEND);
- }
- }
- catch (Exception $e)
- {
- file_put_contents($cssFile, "\n\n/* WARNING!\n LESS Parser failed on file '$lessFile'. Reason: " . $e->__toString() . " */\n\n");
+ $parser = new Less_Parser(array(
+ 'sourceMap' => true,
+ 'indentation' => ' ',
+ 'outputSourceFiles' => false,
+ 'sourceMapBasepath' => $pfx
+ ));
+
+
+ $parser->parseFile( ltrim($lessFile,'./') );
+ $source = $parser->getCss();
- throw new LogicException("LESS Parser failed on file '$lessFile'", 0, $e);
+ file_put_contents($cssFile, $source);
+
+ $parser = new Less_Parser(array(
+ 'compress' => true,
+ 'sourceMap' => false,
+ 'indentation' => ''
+ ));
+ $parser->parseFile($lessFile);
+ $source = $parser->getCss();
+
+
+ file_put_contents($cssMinFile, $source);
}
+
+ $outFiles[] = $cssFile;
}
-
- echo "\n/* Theme-CSS: $cssFile */\n";
- readfile( $cssFile );
- }
- else
+ }
+
+ if ($modified)
{
- // Production.
- readfile($cssMinFile);
+ if ( !is_writable($productionCSSFile))
+ {
+ Logger::warn('not writable: '.$productionCSSFile);
+ }
+ else
+ {
+ file_put_contents($productionCSSFile,'');
+ foreach ($css as $cssF)
+ {
+ $cssMinFile = $cssF . '.min.css';
+ if ( is_file($cssMinFile))
+ file_put_contents($productionCSSFile,file_get_contents($cssMinFile),FILE_APPEND);
+ }
+ }
}
-
- exit;
+
+ return $outFiles;
}
+
- private function minifyCSS( $css )
+ private function getThemeCSS()
{
- // Remove comments
- $css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css);
- // Remove space after colons
- $css = str_replace(': ', ':', $css);
- // Remove whitespace
- $css = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $css);
-
- return $css;
- }
-
-
+ // Je Theme die Theme-CSS-Datei ausgeben.
+ $lessFile = OR_THEMES_EXT_DIR . 'default/css/openrat-theme.less';
+ $css = '';
+
+
+ foreach (array_keys(config('style')) as $styleId)
+ {
+ try
+ {
+ $parser = new Less_Parser(array(
+ 'sourceMap' => DEVELOPMENT,
+ 'indentation' => ' ',
+ 'outputSourceFiles' => false
+ ));
+ $parser->parseFile($lessFile,basename($lessFile));
+
+ $styleConfig = config('style', $styleId);
+ $lessVars = array(
+ 'cms-theme-id' => strtolower($styleId),
+ 'cms-image-path' => 'themes/default/images/'
+ );
+
+ foreach ($styleConfig as $styleSetting => $value)
+ $lessVars['cms-' . strtolower(strtr($styleSetting, '_', '-'))] = $value;
+ $parser->modifyVars($lessVars);
+ $css .= $parser->getCss();
+ }
+ catch (Exception $e)
+ {
+ $css .= "\n\n/* WARNING!\n LESS Parser failed on file '$lessFile'. Reason: " . $e->__toString() . " */\n\n";
+ }
+ }
+
+ if (PRODUCTION)
+ {
+ return $this->minifyCSS($css);
+ }
+ else
+ {
+ return $css;
+ }
+ }
- public function javascriptView()
- {
- if ( DEVELOPMENT )
- $this->lastModified( config('config','last_modification') );
- else
- $this->lastModified( strtotime(config('version','date')) );
-
- header('Content-Type: text/javascript');
-
- $js = array();
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-1.12.4';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-ui/js/jquery-ui-1.8.16.custom';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery.scrollTo';
- //$js[] = OR_THEMES_EXT_DIR default/js/jquery.mjs.nestedSortable.js"></script>
-
- //<!-- OpenRat internal JS -->
- $js[] = OR_THEMES_EXT_DIR.'default/js/openrat';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orHint';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orSearch';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orLinkify';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orTree';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orLoadView';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orAutoheight';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-qrcode';
- // $js[] = OR_THEMES_EXT_DIR.'../editor/wymeditor/wymeditor/jquery.wymeditor.min.js"></script> -->
- $js[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/jquery.markitup';
- $js[] = OR_THEMES_EXT_DIR.'../editor/editor/ckeditor';
- $js[] = OR_THEMES_EXT_DIR.'../editor/ace/src-min-noconflict/ace';
- $js[] = OR_THEMES_EXT_DIR.'../editor/editor/adapters/jquery';
-
- // Komponentenbasiertes Javascript
- $elements = parse_ini_file( OR_THEMES_DIR.config('interface','theme').'/include/elements.ini.'.PHP_EXT);
-
- foreach( array_keys($elements) as $c )
- {
- $componentJsFile = OR_THEMES_DIR.config('interface','theme').'/include/html/'.$c.'/'.$c;
- if ( is_file($componentJsFile.'.js') )
- $js[] = $componentJsFile;
-
- }
-
- if ( DEVELOPMENT )
- {
-
- foreach( $js as $jsFile )
- {
- $jsFileMin = $jsFile.'.min.js';
- $jsFileNormal = $jsFile.'.js';
-
- if ( !is_file($jsFileNormal) && is_file($jsFileMin))
- {
- // Es gibt nur eine minifizierte JS. Das ist ok, z.B. bei externen Bibliotheken.
- echo "\n// JS-Source: $jsFileMin\n";
- readfile($jsFileMin);
- }
- elseif ( !is_file($jsFileNormal))
- {
- echo "\n// File $jsFileNormal is missing!";
- Logger::warn("No Javascript file found for $jsFileNormal");
- }
- elseif ( !is_file($jsFileMin))
- {
- echo "\n// File $jsFileMin is missing!";
- Logger::warn("No Javascript file found for $jsFileMin");
- echo "\n// JS-Source: $jsFileNormal\n";
- readfile($jsFileNormal);
- }
- else
- {
- if( filemtime($jsFileNormal) > filemtime($jsFileMin) )
- {
- // Java-Source wurde geändert, minifizierte Version muss aktualisiert werden.
- if ( !is_writable($jsFileMin))
- {
- echo "// File $jsFileMin is not writable!";
- Logger::warn("No Javascript file found for $jsFileMin");
- }
- else
- {
- $jz = new JSqueeze();
-
- file_put_contents( $jsFileMin, $this->minifyJS(file_get_contents($jsFileNormal)));
- }
- }
- echo "\n// JS-Source: $jsFileNormal\n";
- readfile($jsFileNormal);
- }
- }
- }
- else
- { // PRODUCTION
- foreach( $js as $jsFile )
- {
- $jsFileMin = $jsFile.'.min.js';
- $jsFileNormal = $jsFile.'.js';
- if ( is_file($jsFileMin))
- readfile($jsFileMin);
- elseif( is_file($jsFileNormal))
- readfile($jsFileNormal);
- else
- Logger::warn("No Javascript file found for $jsFile(.js|.min.js)");
- }
+
+ private function getJSFiles()
+ {
+ $productionJSFile = OR_THEMES_DIR . 'default/production/combined.min.js';
+
+ if (PRODUCTION)
+ {
+ return array(
+ $productionJSFile
+ );
+ }
+ else
+ {
+ $js = array();
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/jquery-1.12.4';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/jquery-ui/js/jquery-ui-1.8.16.custom';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/jquery.scrollTo';
+ // $js[] = OR_THEMES_EXT_DIR default/js/jquery.mjs.nestedSortable.js"></script>
+
+ // <!-- OpenRat internal JS -->
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/openrat';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orHint';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orSearch';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orLinkify';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orTree';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orLoadView';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/plugin/jquery-plugin-orAutoheight';
+ $js[] = OR_THEMES_EXT_DIR . 'default/js/jquery-qrcode';
+ $js[] = OR_THEMES_EXT_DIR . '../editor/markitup/markitup/jquery.markitup';
+ $js[] = OR_THEMES_EXT_DIR . '../editor/editor/ckeditor';
+ $js[] = OR_THEMES_EXT_DIR . '../editor/ace/src-min-noconflict/ace';
+ $js[] = OR_THEMES_EXT_DIR . '../editor/editor/adapters/jquery';
+
+ // Komponentenbasiertes Javascript
+ $elements = parse_ini_file(OR_THEMES_DIR . config('interface', 'theme') . '/include/elements.ini.' . PHP_EXT);
+
+ foreach (array_keys($elements) as $c)
+ {
+ $componentJsFile = OR_THEMES_DIR . config('interface', 'theme') . '/include/html/' . $c . '/' . $c;
+ if (is_file($componentJsFile . '.js'))
+ $js[] = $componentJsFile;
+ }
+
+ $outDevJsFiles = array();
+ $outProJsFiles = array();
+ $lastModTime = 0;
+
+ foreach ($js as $jsFile)
+ {
+ $jsFileMin = $jsFile . '.min.js';
+ $jsFileNormal = $jsFile . '.js';
+
+ if (!is_file($jsFileNormal) && !is_file($jsFileMin))
+ {
+ Logger::warn("No Javascript file found for $jsFile");
+ continue;
+ }
+ elseif (is_file($jsFileNormal) && !is_file($jsFileMin))
+ {
+ Logger::warn("No Min-Javascript file found for $jsFile");
+ continue;
+ }
+ elseif (!is_file($jsFileNormal) && is_file($jsFileMin))
+ {
+ // Nur eine Min-Version existiert. Das ist ok.
+ $outDevJsFiles[] = $jsFileMin;
+ $outProJsFiles[] = $jsFileMin;
+ $modTime = filemtime($jsFileMin);
+ }
+ else
+ {
+ if ( filemtime($jsFileNormal) > filemtime($jsFileMin) )
+ {
+ if ( is_writable( $jsFileMin))
+ $jz = new JSqueeze();
+ file_put_contents( $jsFileMin, $jz->squeeze(file_get_contents($jsFileNormal)));
+ $modTime = time();
+ }
+ else
+ {
+ $modTime = filemtime($jsFileMin);
+ }
+ $outDevJsFiles[] = $jsFileNormal;
+ $outProJsFiles[] = $jsFileMin;
+ }
+ $lastModTime = max($lastModTime, $modTime);
+ }
+
+ if ($lastModTime > filemtime($productionJSFile))
+ {
+ if (! is_writable($productionJSFile))
+ {
+ Logger::warn("Not writable: " . $productionJSFile);
+ }
+ else
+ {
+ file_put_contents($productionJSFile, '');
+ foreach ($outProJsFiles as $srcFile)
+ file_put_contents($productionJSFile, file_get_contents($srcFile), FILE_APPEND);
+ }
+ }
}
- exit;
-
+ return $outDevJsFiles;
}
- private function minifyJS( $js )
- {
- $jz = new JSqueeze();
-
- return $jz->squeeze(
- $js,
- true, // $singleLine
- true, // $keepImportantComments
- false // $specialVarRx
- );
-
- }
+
}
?>
\ No newline at end of file
diff --git a/script/create-output-files.sh b/script/create-output-files.sh
@@ -38,4 +38,10 @@ for lessfile in `find themes -name "*.less"`; do
if [ ! -f $lessfile.min.css ]; then touch -d '2000-01-01' $lessfile.min.css;
fi
chmod a+rw -v $lessfile.min.css
-done-
\ No newline at end of file
+done
+
+touch themes/default/production/combined.min.css
+chmod a+w themes/default/production/combined.min.css
+
+touch themes/default/production/combined.min.js
+chmod a+w themes/default/production/combined.min.js
diff --git a/themes/default/layout/index.php b/themes/default/layout/index.php
@@ -24,134 +24,14 @@
?>
<link rel="<?php echo $meta['name'] ?>" href="<?php echo $meta['url'] ?>" title="<?php echo $meta['title'] ?>" ><?php
} ?>
-
- <?php
-
- $css = array();
-// $css[] = link id="userstyle" rel="stylesheet" type="text/css" href="<?php echo css_link($style) "
- $cssParam = css_link($style);
-
- $css['userstyle'] = OR_THEMES_EXT_DIR.'default/css/openrat-theme.css.php';
- $css[] = OR_THEMES_EXT_DIR.'default/css/openrat-ui.css.php';
- $css[] = OR_THEMES_EXT_DIR.'default/css/openrat-workbench.css.php';
-
-// $css[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/skins/markitup/style.css';
-// $css[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/sets/default/style.css';
-
- // Komponentenbasiertes CSS
- $elements = parse_ini_file( OR_THEMES_DIR.config('interface','theme').'/include/elements.ini.'.PHP_EXT);
-
- foreach( array_keys($elements) as $c )
- {
- $componentCssFile = OR_THEMES_DIR.config('interface','theme').'/include/html/'.$c.'/'.$c.'.css';
- if ( is_file($componentCssFile) )
- $css[] = $componentCssFile;
-
- }
-
- /*
-if ( DEVELOPMENT ) {
-
- foreach( $css as $id=>$cssFile )
- {
- ?><link <?php if ( !is_numeric($id)) {?>id="<?php echo $id ?>" <?php } ?>rel="stylesheet" type="text/css" href="<?php echo $cssFile ?>" />
- <?php
- }
-}else {
- // Production mode: Inline minified CSS
- ?><style><?php
- ob_start('minifyCSS');
- foreach( $css as $id=>$cssFile )
- {
- foreach( array_keys(config('style')) as $styleId )
- {
- extract( config('style',$styleId) );
- include( $cssFile );
- }
-
- }
- ob_end_flush();
- ?></style><?php
-}
-
- $js = array();
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-1.12.4.min.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-ui/js/jquery-ui-1.8.16.custom.min.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery.scrollTo.js';
- //$js[] = OR_THEMES_EXT_DIR default/js/jquery.mjs.nestedSortable.js"></script>
-
- //<!-- OpenRat internal JS -->
- $js[] = OR_THEMES_EXT_DIR.'default/js/openrat.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orHint.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orSearch.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orLinkify.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orTree.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orLoadView.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/plugin/jquery-plugin-orAutoheight.js';
- $js[] = OR_THEMES_EXT_DIR.'default/js/jquery-qrcode.min.js';
- // $js[] = OR_THEMES_EXT_DIR.'../editor/wymeditor/wymeditor/jquery.wymeditor.min.js"></script> -->
- $js[] = OR_THEMES_EXT_DIR.'../editor/markitup/markitup/jquery.markitup.js';
- //$js[] = OR_THEMES_EXT_DIR.'../editor/editor/ckeditor.js';
- $js[] = OR_THEMES_EXT_DIR.'../editor/ace/src-min-noconflict/ace.js';
- $js[] = OR_THEMES_EXT_DIR.'../editor/editor/adapters/jquery.js';
-
- function minifyJS( $source ) {
-// return $source;
- $jz = new JSqueeze();
-
- return $jz->squeeze(
- $source,
- true, // $singleLine
- true, // $keepImportantComments
- false // $specialVarRx
- );
- }
- function minifyCSS( $source ) {
-
-// return $source;
- // Remove comments
- //$source = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)* /!', '', $source);
- // Remove space after colons
- $source = str_replace(': ', ':', $source);
- // Remove whitespace
- $source = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $source);
-
- return $source;
- }
-
- // Komponentenbasiertes Javascript
-
- foreach( array_keys($elements) as $c )
- {
- $componentJsFile = OR_THEMES_DIR.config('interface','theme').'/include/html/'.$c.'/'.$c.'.js';
- if ( is_file($componentJsFile) )
- $js[] = $componentJsFile;
-
- }
-
- if ( DEVELOPMENT )
- {
-
- foreach( $js as $jsFile )
- {
- ?><script src="<?php echo $jsFile ?>" defer></script><?php
- }
- }
- else
- {
- ?><script type="text/javascript">
- document.addEventListener("DOMContentLoaded", function(event) {<?php
- ob_start('minifyJS');
- foreach( $js as $jsFile )
- include(''.$jsFile);
- ob_end_flush();
- ?>});</script><?php
-
- }*/
-?>
-
-<script src="dispatcher.php?action=index&subaction=javascript" defer></script>
-<link rel="stylesheet" type="text/css" href="dispatcher.php?action=index&subaction=stylesheet" />
+
+<?php foreach( $jsFiles as $jsFile ) { ?> <script src="<?php echo $jsFile ?>" defer></script>
+<?php } ?>
+<?php foreach( $cssFiles as $cssFile) { ?> <link rel="stylesheet" type="text/css" href="<?php echo $cssFile ?>" />
+<?php } ?>
+ <style type="text/css">
+ <?php echo $themeCss ?>
+ </style>
</head>
<?php
@@ -167,7 +47,11 @@ $ping_timeout = @$viewCache['header']['ping_timeout'];
}
//window.setTimeout("ping()", <?php echo $ping_timeout*1000 ?>);
- window.setTimeout("ping()", 5000);
+
+ window.addEventListener('DOMContentLoaded', function ()
+ {
+ window.setTimeout("ping()", 5000);
+ }, false);
// -->
</script>