Skip to content
Snippets Groups Projects
Commit a90f50d4 authored by Rico van Endern's avatar Rico van Endern
Browse files
parents ed625218 e8f9e947
Branches
No related tags found
No related merge requests found
.idea/
......@@ -2,3 +2,6 @@
# Enable expirations.
ExpiresActive Off
</IfModule>
RewriteEngine on
RewriteRule ^(.*).less$ less/style.php?name=$1.less
<?php
namespace App\Controller\Component;
use Cake\Controller\Component;
use Cake\Filesystem\File;
class ConfigurationComponent extends Component {
private $session = NULL;
private $folder = null;
public function initialize(array $config) {
$this->session = $this->request->session();
}
public function getConfiguration($session_key, $config_name = '', $config_type = 'panel') {
if (!is_string($session_key)
|| !is_string($config_name)
|| !is_string($config_type)
|| empty($session_key)) {
return FALSE;
}
// load data from session or reload data to session?
/* if ($this->session->check($session_key)) {
// return configuration
return $this->session->read($session_key);
} else {*/
// reload configuration
return $this->getReloadedConfiguration($session_key, $config_name, $config_type);
// }
}
public function getReloadedConfiguration($session_key, $config_name = '', $config_type = 'panel') {
if (!is_string($session_key)
|| !is_string($config_name)
|| !is_string($config_type)
|| (strpos($config_type, ".."))
|| empty($config_name)
|| empty($session_key)) {
return FALSE;
}
// get filename for configuration
$file = new File(ROOT.'/config/'.$config_type.'/'.$config_name.'.json');
// can we get our configuration?
if ($file->exists() && $file->readable()
&& !(($file_content = $file->read()) === false)) {
// decode, save and return configuration
$result = json_decode($file_content,true);
$this->session->write($session_key, $result);
return $result;
} else {
// ERROR!
return FALSE;
}
}
}
<?php
const ROOT_DIR="/infoscreen";
?>
@viewport {
width: device-width;
user-zoom: fixed;
}
body {
margin: 0px;
background: #0a0a0a;
font-family: Arial;
overflow: hidden;
}
[data-container=panel] {
background-color: rgba(8, 8, 8, 0.68);
border: solid 1px #252525;
box-shadow: 0px 2px 1px #000000;
padding: 6px;
/* margin: 5px;*/
float: left;
box-sizing: border-box;
height: 100%;
width: 100%;
overflow: hidden;
}
[data-container=panelContainer] {
float: left;
width: 100%;
height: 100%;
/*padding: 4px;*/
padding: 0.2vw;
box-sizing: border-box;
}
[data-container=split] {
box-sizing: border-box;
/* display: flex;
flex-direction: column;*/
height: 100%;
width: 100%;
float: left;
}
[data-container=main] {
height: 100%;
width: 100%;
position: absolute;
box-sizing: border-box;
padding: 0.2vw;
background: radial-gradient(black 15%, transparent 15%) 0 0, radial-gradient(black 15%, transparent 15%) 12px 12px, radial-gradient(rgba(255, 255, 255, 0.1) 15%, transparent 20%) 0 1px, radial-gradient(rgba(255, 255, 255, 0.1) 15%, transparent 20%) 12px 13px;
background-size: 24px 24px;
background-color: #171717;
}
File moved
......@@ -6,38 +6,24 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="favicon.png" type="image/x-icon" rel="icon">
<link rel="stylesheet" href="css/font.css">
<link rel="stylesheet" href="css/design.css">
<link rel="stylesheet" href="css/marquee.css">
<link rel="stylesheet" href="css/design.less">
<link rel="stylesheet" href="css/marquee.less">
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jcookie.min.js"></script>
<script type="text/javascript" src="js/marquee.js"></script>
<script type="text/javascript" src="js/panelAPI.js"></script>
<script type="text/javascript" src="js/webfontloader.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
window.fontsReady = false;
WebFont.load( {
custom : {
families : ['time-medium', 'time-fat', 'vrr'],
urls : ['css/font.css']
},
active : function() {
window.fontsReady = true;
}
});
var layoutname=$.jCookie("layout");
layoutname=(typeof(layoutname)=="undefined" ? "default" : layoutname);
layout.loadLayout(layoutname);
});
//]]>
</script>
<script type="text/javascript" src="js/starter.js"></script>
</head>
<body>
<div data-container="main">
<noscript>
<div data-container="panel" style="
color: white;
text-shadow: black 10px 0px 0px;
font-size: 40pt;
">Diese Seite benötigt JavaScript!</div>
</noscript>
</div>
</body>
</html>
/** https://github.com/martinkr/jCookie - Copyright (c) 2008-2011 Martin Krause - Dual licensed under the MIT and GPL licenses. */
jQuery.jCookie=function(i,b,l,j){if(!navigator.cookieEnabled){return false}var j=j||{};if(typeof(arguments[0])!=="string"&&arguments.length===1){j=arguments[0];i=j.name;b=j.value;l=j.expires}i=encodeURI(i);if(b&&(typeof(b)!=="number"&&typeof(b)!=="string"&&b!==null)){return false}var e=j.path?"; path="+j.path:"";var f=j.domain?"; domain="+j.domain:"";var d=j.secure?"; secure":"";var g="";if(b||(b===null&&arguments.length==2)){l=(l===null||(b===null&&arguments.length==2))?-1:l;if(typeof(l)==="number"&&l!="session"&&l!==undefined){var k=new Date();k.setTime(k.getTime()+(l*24*60*60*1000));g=["; expires=",k.toGMTString()].join("")}document.cookie=[i,"=",encodeURI(b),g,f,e,d].join("");return true}if(!b&&typeof(arguments[0])==="string"&&arguments.length==1&&document.cookie&&document.cookie.length){var a=document.cookie.split(";");var h=a.length;while(h--){var c=a[h].split("=");if(jQuery.trim(c[0])===i){return decodeURI(c[1])}}return undefined}if(!document.cookie||!document.cookie.length){return undefined}return false};
\ No newline at end of file
......@@ -34,11 +34,10 @@ layout.processLayout = function(json, container) {
}
layout.insertTemplate = function(name, panel) {
var tmp = null;
for (ti in layout.templates) {
if (layout.templates[ti].name == name)
for (var tmp in layout.templates) {
if (layout.templates[tmp].name == name)
{
layout.templates[ti].panels.push(panel);
layout.templates[tmp].panels.push(panel);
return;
}
......@@ -65,10 +64,6 @@ layout.insertTemplate = function(name, panel) {
doStuff = null;
}
if (e.css!=null) {
t.css = $("<style>").attr("type","text/css").attr("data-template",t.name).text(e.css);
$("body").append(t.css);
}
t.template = $.parseHTML(e.template);
for (p in t.panels) {
......@@ -99,14 +94,27 @@ layout.insertTemplate = function(name, panel) {
layout.error("get fail of template " + n );
});
$.get("style.php?style=" + n, function(k) {
console.log("get success of style " + n)
t.css = $("<link>").attr("rel","stylesheet").attr("href", "panels/" + n + "/style.less").attr("data-template",t.name);
t.css.on("load",function() {
console.log("get success of style " + n);
e.css= t.css;
doMore();
});
/*.fail(function() {
layout.error("get fail of style " + n);
});*/
$("head").append(t.css);
/*$.get("panels/" + n + "/style.less", function(k) {
e.css=k;
doMore();
},"text")
.fail(function() {
layout.error("get fail of style " + n);
});
*/
$.get("panels/" + n + "/script.js", function(k){
......
$(document).ready(function(){
window.fontsReady = false;
WebFont.load( {
custom : {
families : ['time-medium', 'time-fat', 'vrr'],
},
active : function() {
window.fontsReady = true;
}
});
var params = location.search.replace('?','').split('&').reduce(function(s,c){var t=c.split('=');s[t[0]]=t[1];return s;},{});
var layoutname = (typeof(params.layout)=="undefined" ? "default" : params.layout);
layout.loadLayout(layoutname);
});/**
* Created by tilman on 30.09.15.
*/
<?php
require_once( dirname(__FILE__).'/Version.php');
/**
* Utility for handling the generation and caching of css files
*
* @package Less
* @subpackage cache
*
*/
class Less_Cache{
// directory less.php can use for storing data
public static $cache_dir = false;
// prefix for the storing data
public static $prefix = 'lessphp_';
// prefix for the storing vars
public static $prefix_vars = 'lessphpvars_';
// specifies the number of seconds after which data created by less.php will be seen as 'garbage' and potentially cleaned up
public static $gc_lifetime = 604800;
/**
* Save and reuse the results of compiled less files.
* The first call to Get() will generate css and save it.
* Subsequent calls to Get() with the same arguments will return the same css filename
*
* @param array $less_files Array of .less files to compile
* @param array $parser_options Array of compiler options
* @param array $modify_vars Array of variables
* @return string Name of the css file
*/
public static function Get( $less_files, $parser_options = array(), $modify_vars = array() ){
//check $cache_dir
if( isset($parser_options['cache_dir']) ){
Less_Cache::$cache_dir = $parser_options['cache_dir'];
}
if( empty(Less_Cache::$cache_dir) ){
throw new Exception('cache_dir not set');
}
if( isset($parser_options['prefix']) ){
Less_Cache::$prefix = $parser_options['prefix'];
}
if( empty(Less_Cache::$prefix) ){
throw new Exception('prefix not set');
}
if( isset($parser_options['prefix_vars']) ){
Less_Cache::$prefix_vars = $parser_options['prefix_vars'];
}
if( empty(Less_Cache::$prefix_vars) ){
throw new Exception('prefix_vars not set');
}
self::CheckCacheDir();
$less_files = (array)$less_files;
//create a file for variables
if( !empty($modify_vars) ){
$lessvars = Less_Parser::serializeVars($modify_vars);
$vars_file = Less_Cache::$cache_dir . Less_Cache::$prefix_vars . sha1($lessvars) . '.less';
if( !file_exists($vars_file) ){
file_put_contents($vars_file, $lessvars);
}
$less_files += array($vars_file => '/');
}
// generate name for compiled css file
$hash = md5(json_encode($less_files));
$list_file = Less_Cache::$cache_dir . Less_Cache::$prefix . $hash . '.list';
// check cached content
if( !isset($parser_options['use_cache']) || $parser_options['use_cache'] === true ){
if( file_exists($list_file) ){
self::ListFiles($list_file, $list, $cached_name);
$compiled_name = self::CompiledName($list);
// if $cached_name is the same as the $compiled name, don't regenerate
if( !$cached_name || $cached_name === $compiled_name ){
$output_file = self::OutputFile($compiled_name, $parser_options );
if( $output_file && file_exists($output_file) ){
@touch($list_file);
return basename($output_file); // for backwards compatibility, we just return the name of the file
}
}
}
}
$compiled = self::Cache( $less_files, $parser_options );
if( !$compiled ){
return false;
}
$compiled_name = self::CompiledName( $less_files );
$output_file = self::OutputFile($compiled_name, $parser_options );
//save the file list
$list = $less_files;
$list[] = $compiled_name;
$cache = implode("\n",$list);
file_put_contents( $list_file, $cache );
//save the css
file_put_contents( $output_file, $compiled );
//clean up
self::CleanCache();
return basename($output_file);
}
/**
* Force the compiler to regenerate the cached css file
*
* @param array $less_files Array of .less files to compile
* @param array $parser_options Array of compiler options
* @param array $modify_vars Array of variables
* @return string Name of the css file
*/
public static function Regen( $less_files, $parser_options = array(), $modify_vars = array() ){
$parser_options['use_cache'] = false;
return self::Get( $less_files, $parser_options, $modify_vars );
}
public static function Cache( &$less_files, $parser_options = array() ){
// get less.php if it exists
$file = dirname(__FILE__) . '/Less.php';
if( file_exists($file) && !class_exists('Less_Parser') ){
require_once($file);
}
$parser_options['cache_dir'] = Less_Cache::$cache_dir;
$parser = new Less_Parser($parser_options);
// combine files
foreach($less_files as $file_path => $uri_or_less ){
//treat as less markup if there are newline characters
if( strpos($uri_or_less,"\n") !== false ){
$parser->Parse( $uri_or_less );
continue;
}
$parser->ParseFile( $file_path, $uri_or_less );
}
$compiled = $parser->getCss();
$less_files = $parser->allParsedFiles();
return $compiled;
}
private static function OutputFile( $compiled_name, $parser_options ){
//custom output file
if( !empty($parser_options['output']) ){
//relative to cache directory?
if( preg_match('#[\\\\/]#',$parser_options['output']) ){
return $parser_options['output'];
}
return Less_Cache::$cache_dir.$parser_options['output'];
}
return Less_Cache::$cache_dir.$compiled_name;
}
private static function CompiledName( $files ){
//save the file list
$temp = array(Less_Version::cache_version);
foreach($files as $file){
$temp[] = filemtime($file)."\t".filesize($file)."\t".$file;
}
return Less_Cache::$prefix.sha1(json_encode($temp)).'.css';
}
public static function SetCacheDir( $dir ){
Less_Cache::$cache_dir = $dir;
}
public static function CheckCacheDir(){
Less_Cache::$cache_dir = str_replace('\\','/',Less_Cache::$cache_dir);
Less_Cache::$cache_dir = rtrim(Less_Cache::$cache_dir,'/').'/';
if( !file_exists(Less_Cache::$cache_dir) ){
if( !mkdir(Less_Cache::$cache_dir) ){
throw new Less_Exception_Parser('Less.php cache directory couldn\'t be created: '.Less_Cache::$cache_dir);
}
}elseif( !is_dir(Less_Cache::$cache_dir) ){
throw new Less_Exception_Parser('Less.php cache directory doesn\'t exist: '.Less_Cache::$cache_dir);
}elseif( !is_writable(Less_Cache::$cache_dir) ){
throw new Less_Exception_Parser('Less.php cache directory isn\'t writable: '.Less_Cache::$cache_dir);
}
}
/**
* Delete unused less.php files
*
*/
public static function CleanCache(){
static $clean = false;
if( $clean ){
return;
}
$files = scandir(Less_Cache::$cache_dir);
if( $files ){
$check_time = time() - self::$gc_lifetime;
foreach($files as $file){
// don't delete if the file wasn't created with less.php
if( strpos($file,Less_Cache::$prefix) !== 0 ){
continue;
}
$full_path = Less_Cache::$cache_dir . $file;
// make sure the file still exists
// css files may have already been deleted
if( !file_exists($full_path) ){
continue;
}
$mtime = filemtime($full_path);
// don't delete if it's a relatively new file
if( $mtime > $check_time ){
continue;
}
$parts = explode('.',$file);
$type = array_pop($parts);
// delete css files based on the list files
if( $type === 'css' ){
continue;
}
// delete the list file and associated css file
if( $type === 'list' ){
self::ListFiles($full_path, $list, $css_file_name);
if( $css_file_name ){
$css_file = Less_Cache::$cache_dir . $css_file_name;
if( file_exists($css_file) ){
unlink($css_file);
}
}
}
unlink($full_path);
}
}
$clean = true;
}
/**
* Get the list of less files and generated css file from a list file
*
*/
static function ListFiles($list_file, &$list, &$css_file_name ){
$list = explode("\n",file_get_contents($list_file));
//pop the cached name that should match $compiled_name
$css_file_name = array_pop($list);
if( !preg_match('/^' . Less_Cache::$prefix . '[a-f0-9]+\.css$/',$css_file_name) ){
$list[] = $css_file_name;
$css_file_name = false;
}
}
}
This diff is collapsed.
<?php
/**
* Release numbers
*
* @package Less
* @subpackage version
*/
class Less_Version{
const version = '1.7.0.9'; // The current build number of less.php
const less_version = '1.7'; // The less.js version that this build should be compatible with
const cache_version = '170'; // The parser cache version
}
<?php
$tmp_dir = "tmp";
chdir("..");
if (!isset($_GET["name"])) {
http_response_code(404);
echo "no valid file given";
return;
}
$less_file = $_GET["name"]; //"panels/departure/style.less";
$debug=isset($_GET["debug"]);
include "config/config.php";
echo ROOT_DIR;
$panel = null;
if ($debug)
header("content-type:text/plain;charset=utf8");
if (!file_exists($less_file)) {
http_response_code(404);
echo $less_file . " not found";
return;
}
if (preg_match_all ('/'.'panels\\/((?:[a-z][a-z]+))\\/style\\.less'.'/is', $less_file, $matches))
{
$panel=$matches[1][0];
}
if ($debug && isset($panel))
echo "panel:" . $panel."\n";
$cache_name = "lesscache_".md5($less_file."_".filemtime($less_file)).".css";
$cache_file = $tmp_dir."/".$cache_name;
if (!file_exists($cache_file)) {
require("less/Less.php");
$options = array( 'compress'=>true );
$parser = new Less_Parser($options);
$parser->parseFile("css/colors.less");
try {
if (!isset($panel)) {
$parser->parseFile($less_file);
} else {
$parser->parse("
[data-template=$panel] {
@import \"$less_file\";
}", "/panels/$panel");
}
$content = $parser->getCss();
}catch(Exception $e) {
http_response_code(500);
header("content-type:text/plain;charset=utf8");
echo $e->getMessage();
return;
}
file_put_contents($cache_file,$content);;
}
if ($debug) {
echo "cache-name: " . $cache_file . "\n";
echo "content:\n";
if (!isset($content))
echo file_get_contents($cache_file)."\n";
else
echo $content;
} else {
header("Location: ".ROOT_DIR."/$cache_file");
}
This diff is collapsed.
This diff is collapsed.
<?php
//header("content-type:text/css;charset=utf8");
require "lessc.php";
$less = new lessc();
$style = $_GET["style"];
echo $style;
$less_file = "panels/$style/style.less";
$css_file = "tmp/$style.css";
if (!file_exists($less_file)) {
http_response_code(404);
echo $less_file." not found";
return;
}
//if ( !file_exists($css_file))
//{
$code =
$less->compile(
"[data-template=$style] {" .
file_get_contents( $less_file ) .
"}"
);
//}
file_put_contents("tmp/" . $style . ".css", $code);
header("Location: tmp/" . $style . ".css" );
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment