|
@ -0,0 +1,24 @@
|
|||
<div id='content'>
|
||||
<?php
|
||||
require "msqur.php";
|
||||
|
||||
if (isset($_GET['p'])) {
|
||||
$page = $_GET['p']; //TODO processing
|
||||
}
|
||||
|
||||
$msqur->browse($page);
|
||||
//$results = browseAll();
|
||||
//$numResults = count($results);
|
||||
|
||||
//echo '<div class="debug">'; var_export($results); echo '</div>';
|
||||
|
||||
echo '<div class="info">' . $numResults . ' results.</div>';
|
||||
echo '<table>';
|
||||
echo '<tr><th>ID</th><th>Cylinders</th><th>Liters</th><th>Compression</th><th>Turbo</th><th>Firmware/Version</th><th>Upload Date</th><th>Views</th></th>';
|
||||
for ($c = 0; $c < $numResults; $c++)
|
||||
{
|
||||
echo '<tr><td><a href="index.php?msq=' . $results[$c]['mid'] . '">' . $results[$c]['mid'] . '</a></td><td>' . $results[$c]['numCylinders'] . '</td><td>' . $results[$c]['displacement'] . '</td><td>' . $results[$c]['compression'] . ':1</td><td>' . $results[$c]['induction'] . '</td><td>' . $results[$c]['firmware'] . '/' . $results[$c]['signature'] . '</td><td>' . $results[$c]['uploadDate'] . '</td><td></td></tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
?>
|
||||
</div>
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
define('CONFIG_VERSION', "4");
|
||||
define('DB_HOST', "localhost");
|
||||
define('DB_USERNAME', "msqur");
|
||||
define('DB_PASSWORD', "d4jQTeCRRxuJeypD");
|
||||
define('DB_NAME', "msqur");
|
||||
|
||||
define('DEBUG', TRUE);
|
||||
define('DISABLE_MSQ_CACHE', TRUE);
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', true);
|
||||
ini_set('html_errors', true);
|
||||
|
||||
//Default in case it's not set in php.ini
|
||||
//MSQUR-1
|
||||
date_default_timezone_set('UTC');
|
||||
?>
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
define('CONFIG_VERSION', "4");
|
||||
define('DB_HOST', "localhost");
|
||||
define('DB_USERNAME', "msqur");
|
||||
define('DB_PASSWORD', "");
|
||||
define('DB_NAME', "msqur");
|
||||
|
||||
define('DEBUG', FALSE);
|
||||
define('DISABLE_MSQ_CACHE', FALSE);
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
ini_set('display_errors', DEBUG ? 'On' : 'Off');
|
||||
//ini_set('log_errors', DEBUG ? 'Off' : 'On');
|
||||
|
||||
//Default in case it's not set in php.ini
|
||||
//MSQUR-1
|
||||
date_default_timezone_set('UTC');
|
||||
?>
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
require "msqur.php";
|
||||
|
||||
//Msq $msq = msqur.upload("blah");
|
||||
$msqur->splash();
|
||||
|
||||
//browse
|
||||
//list<Msq> msqs = browse()//browse(START_NUMBER)
|
||||
//have to check with angular how data pagination/ordering can work best
|
||||
|
||||
//search
|
||||
?>
|
143
src/ini.php
|
@ -1,20 +1,151 @@
|
|||
<?php
|
||||
/*
|
||||
* @brief INI Stuff
|
||||
*
|
||||
* INI.getConfig
|
||||
*/
|
||||
class INI
|
||||
{
|
||||
private static $fileScheme = "msq/whatever";
|
||||
|
||||
function __construct()
|
||||
/**
|
||||
* @brief Given a signature string, finds and parses the respective INI file.
|
||||
*
|
||||
* Returns an array of the config file contents.
|
||||
* @param $signature The signature string which will be modified into a firmware/version array.
|
||||
*/
|
||||
public static function getConfig(&$signature)
|
||||
{
|
||||
//sig is 19 bytes + \0
|
||||
//"MS3 Format 0262.09 "
|
||||
//"MS3 Format 0435.14P"
|
||||
//"MS2Extra comms332m2"
|
||||
//"MS2Extra comms333e2"
|
||||
//"MS2Extra Serial321 "
|
||||
//"MS2Extra Serial310 "
|
||||
//"MSII Rev 3.83000 "
|
||||
|
||||
//Get the signature from the MSQ
|
||||
$sig = explode(' ', $signature); //, 3); limit 3 buckets
|
||||
$msVersion = $sig[0];
|
||||
if ($msVersion == "MS2Extra") $fwVersion = $sig[1];
|
||||
else $fwVersion = $sig[2];
|
||||
|
||||
if (DEBUG) echo "<div class=\"debug\">$msVersion/$fwVersion</div>";
|
||||
|
||||
//Parse msVersion
|
||||
switch ($msVersion)
|
||||
{
|
||||
case "MS1":
|
||||
$msDir = "ms1/";
|
||||
break;
|
||||
case "MSII":
|
||||
$msDir = "ms2/";
|
||||
break;
|
||||
case "MS2Extra":
|
||||
$msDir = "ms2extra/";
|
||||
break;
|
||||
case "MS3":
|
||||
$msDir = "ms3/";
|
||||
break;
|
||||
}
|
||||
|
||||
//Setup firmware version for matching.
|
||||
//(explode() already trimmed the string of spaces) -- this isn't true a couple inis
|
||||
//If there's a decimal, remove any trailing zeros.
|
||||
if (strrpos($fwVersion, '.') !== FALSE)
|
||||
$fwVersion = rtrim($fwVersion, '0');
|
||||
|
||||
//store all our hardwork for use in the calling function
|
||||
$signature = array($msVersion, $fwVersion);
|
||||
|
||||
$iniFile = "ini/" . $msDir . $fwVersion . ".ini";
|
||||
$msqMap = parse($iniFile, TRUE);
|
||||
|
||||
return $msqMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Parse a MS INI file into sections.
|
||||
*
|
||||
* Based on code from: goulven.ch@gmail.com (php.net comments) http://php.net/manual/en/function.parse-ini-file.php#78815
|
||||
*
|
||||
* @param $file The path to the INI file that will be loaded and parsed.
|
||||
* @param $something Unused
|
||||
* @returns A huge array of arrays, starting with sections.
|
||||
*/
|
||||
public static function parse($file, $something)
|
||||
{
|
||||
if (DEBUG) echo "<div class=\"debug\">Attempting to open: $file</div>";
|
||||
try
|
||||
{
|
||||
$ini = file($file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
echo "<div class=\"error\">Could not open: $file</div>";
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($ini == FALSE || count($ini) == 0) return null;
|
||||
else if (DEBUG) echo "<div class=\"debug\">File opened.</div>";
|
||||
|
||||
$globals = array();
|
||||
$sections = array();
|
||||
$currentSection = NULL;
|
||||
$values = array();
|
||||
$i = 0;
|
||||
|
||||
foreach ($ini as $line)
|
||||
{
|
||||
$line = trim($line);
|
||||
if ($line == '' || $line[0] == ';') continue;
|
||||
if ($line[0] == '#')
|
||||
{//TODO Parse directives, each needs to be a checkbox (combobox?) on the FE
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($line[0] == '[')
|
||||
{
|
||||
$sections[] = $currentSection = substr($line, 1, -1); //TODO until before ] not end of line
|
||||
$i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
//We don't handle formulas yet
|
||||
if (strpos($line, '{') !== FALSE) continue;
|
||||
|
||||
// Key-value pair
|
||||
list($key, $value) = explode('=', $line, 2);
|
||||
$key = trim($key);
|
||||
|
||||
//Remove any line end comment
|
||||
$hasComment = strpos($value, ';');
|
||||
if ($hasComment !== FALSE)
|
||||
$value = substr($value, 0, $hasComment);
|
||||
|
||||
$value = trim($value);
|
||||
if ($i == 0)
|
||||
{// Global values (see section version for comments)
|
||||
if (strpos($value, ',') !== FALSE)
|
||||
$globals[$key] = array_map('trim', explode(',', $value));
|
||||
else $globals[$key] = $value;
|
||||
}
|
||||
else
|
||||
{// Section array values
|
||||
if (strpos($value, ',') !== FALSE)
|
||||
{
|
||||
//Use trim() as a callback on elements returned from explode()
|
||||
$values[$i - 1][$key] = array_map('trim', explode(',', $value));
|
||||
}
|
||||
else $values[$i - 1][$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
for ($j = 0; $j < $i; $j++)
|
||||
{
|
||||
$result[$sections[$j]] = $values[$j];
|
||||
}
|
||||
return $result + $globals;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
*/
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
<?php
|
||||
|
||||
require "config.php";
|
||||
require "db.php";
|
||||
require "ini.php";
|
||||
require "msq.php";
|
||||
|
||||
/*
|
||||
* @brief Public API here?
|
||||
*
|
||||
|
@ -12,11 +18,12 @@
|
|||
*/
|
||||
class Msqur
|
||||
{
|
||||
private MsqurDB db;
|
||||
private $db;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
MsqurDB db = new MsqurDB(); //TODO check reuse
|
||||
|
||||
$db = new MsqurDB(); //TODO check reuse
|
||||
}
|
||||
|
||||
public function getMSQ()
|
||||
|
@ -27,16 +34,55 @@ class Msqur
|
|||
{
|
||||
}
|
||||
|
||||
public function splash()
|
||||
{
|
||||
include "view/header.php";
|
||||
include "view/splash.php";
|
||||
include "view/footer.php";
|
||||
}
|
||||
|
||||
public function browse($page = 0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* get html from md id
|
||||
* if msq xml not cached,
|
||||
* parse xml and update engine
|
||||
* else if cached just return html
|
||||
*/
|
||||
public function view($id)
|
||||
{
|
||||
//Get cached HTML and display it, or reparse and display (in order)
|
||||
$id = $_GET['msq'];
|
||||
$html = getMSQ($id);
|
||||
if ($html == null)
|
||||
{
|
||||
//$html = array(); //array of strings with group keys
|
||||
$engine = array();
|
||||
$metadata = array();
|
||||
$xml = getXML($id);
|
||||
$groupedHtml = parseMSQ($xml, $engine, $metadata);
|
||||
updateMetadata($id, $metadata);
|
||||
updateEngine($id, $engine);
|
||||
|
||||
$html = "";
|
||||
foreach($groupedHtml as $group => $v)
|
||||
{
|
||||
//TODO Group name as fieldset legend or sth
|
||||
$html .= "<div class=\"group-$group\">";
|
||||
$html .= $v;
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
updateCache($id, $html);
|
||||
}
|
||||
|
||||
echo $html;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Msqur msqur = new msqur();
|
||||
Msq msq = msqur.upload("blah");
|
||||
$msqur = new Msqur();
|
||||
|
||||
//browse
|
||||
list<Msq> msqs = browse()/browse(START_NUMBER) //have to check with angular how data pagination/ordering can work best
|
||||
|
||||
//search
|
||||
*/
|
||||
?>
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
require "msqur.php";
|
||||
|
||||
/**
|
||||
* @brief Restructure file upload array
|
||||
*
|
||||
* Extended description goes here.
|
||||
* @param $file_post array
|
||||
*/
|
||||
function fixFileArray(&$file_post)
|
||||
{//From php.net anonymous comment
|
||||
$file_ary = array();
|
||||
$file_count = count($file_post['name']);
|
||||
$file_keys = array_keys($file_post);
|
||||
|
||||
for ($i=0; $i<$file_count; $i++)
|
||||
{
|
||||
foreach ($file_keys as $key)
|
||||
{
|
||||
$file_ary[$i][$key] = $file_post[$key][$i];
|
||||
}
|
||||
}
|
||||
|
||||
return $file_ary;
|
||||
}
|
||||
/**
|
||||
* @brief Sanity check for uploaded files.
|
||||
* @param $files array
|
||||
* @returns $files array with bad apples removed.
|
||||
*/
|
||||
function checkUploads($files)
|
||||
{//Expects fixed array instead of $_FILES array
|
||||
foreach ($files as $index => $file)
|
||||
{
|
||||
//Discard any with errors
|
||||
if ($file['error'] != UPLOAD_ERR_OK)
|
||||
{
|
||||
unset($files[$index]);
|
||||
continue;
|
||||
}
|
||||
|
||||
//Check sizes against 1MiB
|
||||
if ($file['size'] > 1048576)
|
||||
{
|
||||
unset($files[$index]);
|
||||
continue;
|
||||
}
|
||||
|
||||
//Get and check mime types (ignoring provided ones)
|
||||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||||
if ($finfo->file($file['tmp_name']) != "application/xml")
|
||||
{
|
||||
unset($files[$index]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return $files;
|
||||
}
|
||||
|
||||
if (isset($_POST['upload']) && isset($_FILES))
|
||||
{
|
||||
//var_dump($_POST);
|
||||
//var_dump($_FILES);
|
||||
|
||||
$files = checkUploads(fixFileArray($_FILES['files']));
|
||||
if (count($files) == 0)
|
||||
{
|
||||
//No files made it past the check
|
||||
echo '<div class="error">Your file(s) have asploded.</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (count($files) == 1)
|
||||
echo '<div class="info">' . count($files) . ' file was uploaded.</div>';
|
||||
else
|
||||
echo '<div class="info">' . count($files) . ' files were uploaded.</div>';
|
||||
//$motor = $validate($_POST['cylinders'])
|
||||
$engineid = $msqur->addEngine($_POST['displacement'], $_POST['compression'], $_POST['aspiration']);
|
||||
$fileList = $msqur->addFiles($files, $engineid);
|
||||
|
||||
if ($fileList != null)
|
||||
{
|
||||
echo '<div class="info">Upload successful.</div>';
|
||||
echo '<div class="info"><ul id="fileList">';
|
||||
foreach ($fileList as $f)
|
||||
{
|
||||
echo '<li><a href="' . $_SERVER['REQUEST_URI'] . '?msq=' . $f . '">' . $f . '</a></li>';
|
||||
}
|
||||
echo '</div></ul>';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<div class="error">Unable to store uploaded file.</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else include "index.php";
|
||||
?>
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
require "msqur.php";
|
||||
|
||||
if (isset($_GET['msq'])) {
|
||||
$msqur->view($_GET['msq']);
|
||||
}
|
||||
else include "index.php";
|
||||
|
||||
?>
|
|
@ -0,0 +1,18 @@
|
|||
<div>
|
||||
<form id="filter">
|
||||
<fieldset>
|
||||
<legend>Engine Filter</legend>
|
||||
<div>Cylinders: <input type="number" min="0" value="6" max="99" style="width:3em;"/></div>
|
||||
<div>Displacement (liters): <input type="number" min="0" step="0.01" value="3.0" style="width:4em;"/> +/- <span id="literMargin">0%<input type="number" min="0" step="1"></span></div>
|
||||
<div>Compression (X:1) <input name="compression" type="number" min="0" step="0.1" value="9.0" style="width:4em;"/> +/- <span id="literMargin">0%<input type="number" min="0" step="1"></span></div>
|
||||
<div>Aspiration:
|
||||
<select>
|
||||
<option value="na" title="AKA: Slow">Naturally Aspirated</option>
|
||||
<option value="fi" title="The way God intended">Forced Induction</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>Firmware: X</div>
|
||||
<div><button>Refresh</button></div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
|
@ -0,0 +1,20 @@
|
|||
<div class="footer">
|
||||
<?php include "../VERSION"; ?> <a href="http://httpd.apache.org/">Apache</a> <a href="http://php.net/">PHP</a> <a href="https://angularjs.org/">AngularJS</a> <a href="http://jquery.com/">jQuery</a>
|
||||
</div>
|
||||
<?php
|
||||
IF (!DEBUG)
|
||||
{
|
||||
?>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-5743113-10', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>MSQur</title>
|
||||
<meta name="description" content="Megasquirt tune file sharing site">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="view/msqur.css" />
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
|
||||
<script src="view/lib/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script src="view/msqur.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="navigation"><span><button id="btnUpload">Upload</button></span><span><a href="browse.php">Browse</a></span><span><a>Search</a></span><span><a>Stats</a></span><span id="aboutLink">About</span></div>
|
||||
<div id="upload" style="display:none;">
|
||||
<form action="upload.php" method="post" enctype="multipart/form-data">
|
||||
<div id="fileDropZone">Drop files here
|
||||
<input type="file" id="fileSelect" accept=".msq" name="files[]" multiple />
|
||||
</div>
|
||||
<output id="fileList"></output>
|
||||
<div id="engineForm">
|
||||
<fieldset>
|
||||
<legend>Engine Information</legend>
|
||||
<div>Engine Make/Manufacturer: <input name="make" type="text" placeholder="e.g. GM" maxlength="32" style="width:4em;"/></div>
|
||||
<div>Engine Code: <input name="code" type="text" placeholder="LS3" maxlength="32" style="width:4em;"/></div>
|
||||
<div>Displacement (liters): <input name="displacement" type="number" min="0" step="0.01" value="3.0" style="width:4em;"/></div>
|
||||
<div>Compression (X:1) <input name="compression" type="number" min="0" step="0.1" value="9.0" style="width:4em;"/></div>
|
||||
<div>Aspiration:
|
||||
<select name="aspiration">
|
||||
<option value="na" title="AKA: Slow">Naturally Aspirated</option>
|
||||
<option value="fi" title="The way God intended">Forced Induction</option>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<input type="hidden" name="upload" value="upload" style="display:none;">
|
||||
</form>
|
||||
</div>
|
||||
<div id="settings">
|
||||
<img id="settingsIcon" src="img/settings3.png"/>
|
||||
<div id="settingsPanel" style="display:none;">
|
||||
<label><input id="colorizeData" type="checkbox" />Colorize</label>
|
||||
<label><input id="normalizeData" type="checkbox" title="Recalculate VE table values to a 5-250 unit scale"/>Normalize Data</label>
|
||||
<label><input id="normalizeAxis" type="checkbox" disabled />Normalize Axis</label>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,5 @@
|
|||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 28
|
||||
/svn/!svn/ver/3/trunk/themes
|
||||
END
|
|
@ -0,0 +1,34 @@
|
|||
10
|
||||
|
||||
dir
|
||||
5
|
||||
https://tablesorter.googlecode.com/svn/trunk/themes
|
||||
https://tablesorter.googlecode.com/svn
|
||||
|
||||
|
||||
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
|
||||
|
||||
svn:special svn:externals svn:needs-lock
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
dbe5111a-81cf-11de-b558-27974e103503
|
||||
|
||||
blue
|
||||
dir
|
||||
|
||||
green
|
||||
dir
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 33
|
||||
/svn/!svn/ver/3/trunk/themes/blue
|
||||
END
|
||||
style.css
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 43
|
||||
/svn/!svn/ver/3/trunk/themes/blue/style.css
|
||||
END
|
||||
desc.gif
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 42
|
||||
/svn/!svn/ver/3/trunk/themes/blue/desc.gif
|
||||
END
|
||||
asc.gif
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 41
|
||||
/svn/!svn/ver/3/trunk/themes/blue/asc.gif
|
||||
END
|
||||
bg.gif
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 40
|
||||
/svn/!svn/ver/3/trunk/themes/blue/bg.gif
|
||||
END
|
||||
blue.zip
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 42
|
||||
/svn/!svn/ver/3/trunk/themes/blue/blue.zip
|
||||
END
|
|
@ -0,0 +1,198 @@
|
|||
10
|
||||
|
||||
dir
|
||||
5
|
||||
https://tablesorter.googlecode.com/svn/trunk/themes/blue
|
||||
https://tablesorter.googlecode.com/svn
|
||||
|
||||
|
||||
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
|
||||
|
||||
svn:special svn:externals svn:needs-lock
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
dbe5111a-81cf-11de-b558-27974e103503
|
||||
|
||||
asc.gif
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
f8a1940c9cf44ab8870319169f3a14ff
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
54
|
||||
|
||||
bg.gif
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
c01ad2e7c59d1a20a433cb873c21bd88
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
64
|
||||
|
||||
blue.zip
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
898afbfe9f54e586eb483bc9e91fd01d
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
885
|
||||
|
||||
desc.gif
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
a54846803de3cc786eec3d69f9ac2d38
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
54
|
||||
|
||||
style.css
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
5b98d0810fb7dbb9fcbc2362655f0dd7
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
912
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
After Width: | Height: | Size: 54 B |
After Width: | Height: | Size: 64 B |
After Width: | Height: | Size: 54 B |
|
@ -0,0 +1,39 @@
|
|||
/* tables */
|
||||
table.tablesorter {
|
||||
font-family:arial;
|
||||
background-color: #CDCDCD;
|
||||
margin:10px 0pt 15px;
|
||||
font-size: 8pt;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
|
||||
background-color: #e6EEEE;
|
||||
border: 1px solid #FFF;
|
||||
font-size: 8pt;
|
||||
padding: 4px;
|
||||
}
|
||||
table.tablesorter thead tr .header {
|
||||
background-image: url(bg.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.tablesorter tbody td {
|
||||
color: #3D3D3D;
|
||||
padding: 4px;
|
||||
background-color: #FFF;
|
||||
vertical-align: top;
|
||||
}
|
||||
table.tablesorter tbody tr.odd td {
|
||||
background-color:#F0F0F6;
|
||||
}
|
||||
table.tablesorter thead tr .headerSortUp {
|
||||
background-image: url(asc.gif);
|
||||
}
|
||||
table.tablesorter thead tr .headerSortDown {
|
||||
background-image: url(desc.gif);
|
||||
}
|
||||
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
|
||||
background-color: #8dbdd8;
|
||||
}
|
After Width: | Height: | Size: 54 B |
After Width: | Height: | Size: 64 B |
After Width: | Height: | Size: 54 B |
|
@ -0,0 +1,39 @@
|
|||
/* tables */
|
||||
table.tablesorter {
|
||||
font-family:arial;
|
||||
background-color: #CDCDCD;
|
||||
margin:10px 0pt 15px;
|
||||
font-size: 8pt;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
|
||||
background-color: #e6EEEE;
|
||||
border: 1px solid #FFF;
|
||||
font-size: 8pt;
|
||||
padding: 4px;
|
||||
}
|
||||
table.tablesorter thead tr .header {
|
||||
background-image: url(bg.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.tablesorter tbody td {
|
||||
color: #3D3D3D;
|
||||
padding: 4px;
|
||||
background-color: #FFF;
|
||||
vertical-align: top;
|
||||
}
|
||||
table.tablesorter tbody tr.odd td {
|
||||
background-color:#F0F0F6;
|
||||
}
|
||||
table.tablesorter thead tr .headerSortUp {
|
||||
background-image: url(asc.gif);
|
||||
}
|
||||
table.tablesorter thead tr .headerSortDown {
|
||||
background-image: url(desc.gif);
|
||||
}
|
||||
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
|
||||
background-color: #8dbdd8;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 34
|
||||
/svn/!svn/ver/3/trunk/themes/green
|
||||
END
|
||||
bg.png
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 41
|
||||
/svn/!svn/ver/3/trunk/themes/green/bg.png
|
||||
END
|
||||
green.zip
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 44
|
||||
/svn/!svn/ver/3/trunk/themes/green/green.zip
|
||||
END
|
||||
style.css
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 44
|
||||
/svn/!svn/ver/3/trunk/themes/green/style.css
|
||||
END
|
||||
desc.png
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 43
|
||||
/svn/!svn/ver/3/trunk/themes/green/desc.png
|
||||
END
|
||||
asc.png
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 42
|
||||
/svn/!svn/ver/3/trunk/themes/green/asc.png
|
||||
END
|
|
@ -0,0 +1,198 @@
|
|||
10
|
||||
|
||||
dir
|
||||
5
|
||||
https://tablesorter.googlecode.com/svn/trunk/themes/green
|
||||
https://tablesorter.googlecode.com/svn
|
||||
|
||||
|
||||
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
|
||||
|
||||
svn:special svn:externals svn:needs-lock
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
dbe5111a-81cf-11de-b558-27974e103503
|
||||
|
||||
asc.png
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
47d431b1524d523eae100b66b09babdc
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2665
|
||||
|
||||
bg.png
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
7b0a5fe32e94b1595e48810a3df45648
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2655
|
||||
|
||||
desc.png
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
0f7f4fd46fe145ed6ed4c81c3b26a93f
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2662
|
||||
|
||||
green.zip
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
9c8b5235a0a9864b292b97e783541c08
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8464
|
||||
|
||||
style.css
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-10-15T09:18:19.000000Z
|
||||
8c047013d96b74708da195dac43980b7
|
||||
2009-10-02T08:54:38.707056Z
|
||||
3
|
||||
christian.bach
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
801
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
|
@ -0,0 +1,5 @@
|
|||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,39 @@
|
|||
table.tablesorter {
|
||||
font-size: 12px;
|
||||
background-color: #4D4D4D;
|
||||
width: 1024px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
table.tablesorter th {
|
||||
text-align: left;
|
||||
padding: 5px;
|
||||
background-color: #6E6E6E;
|
||||
}
|
||||
table.tablesorter td {
|
||||
color: #FFF;
|
||||
padding: 5px;
|
||||
}
|
||||
table.tablesorter .even {
|
||||
background-color: #3D3D3D;
|
||||
}
|
||||
table.tablesorter .odd {
|
||||
background-color: #6E6E6E;
|
||||
}
|
||||
table.tablesorter .header {
|
||||
background-image: url(bg.png);
|
||||
background-repeat: no-repeat;
|
||||
border-left: 1px solid #FFF;
|
||||
border-right: 1px solid #000;
|
||||
border-top: 1px solid #FFF;
|
||||
padding-left: 30px;
|
||||
padding-top: 8px;
|
||||
height: auto;
|
||||
}
|
||||
table.tablesorter .headerSortUp {
|
||||
background-image: url(asc.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
table.tablesorter .headerSortDown {
|
||||
background-image: url(desc.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,39 @@
|
|||
table.tablesorter {
|
||||
font-size: 12px;
|
||||
background-color: #4D4D4D;
|
||||
width: 1024px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
table.tablesorter th {
|
||||
text-align: left;
|
||||
padding: 5px;
|
||||
background-color: #6E6E6E;
|
||||
}
|
||||
table.tablesorter td {
|
||||
color: #FFF;
|
||||
padding: 5px;
|
||||
}
|
||||
table.tablesorter .even {
|
||||
background-color: #3D3D3D;
|
||||
}
|
||||
table.tablesorter .odd {
|
||||
background-color: #6E6E6E;
|
||||
}
|
||||
table.tablesorter .header {
|
||||
background-image: url(bg.png);
|
||||
background-repeat: no-repeat;
|
||||
border-left: 1px solid #FFF;
|
||||
border-right: 1px solid #000;
|
||||
border-top: 1px solid #FFF;
|
||||
padding-left: 30px;
|
||||
padding-top: 8px;
|
||||
height: auto;
|
||||
}
|
||||
table.tablesorter .headerSortUp {
|
||||
background-image: url(asc.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
table.tablesorter .headerSortDown {
|
||||
background-image: url(desc.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
<div class="info">Upload your .msq files to view and share them.</div>
|
||||
<div class="warn">This website is in beta. It only officially supports TunerStudio tune files, and currently is known working with MS2 and MS2-Extra firmware.</div>
|