Version alpha
This commit is contained in:
parent
54c24457e9
commit
c4b001c253
40 changed files with 9954 additions and 1317 deletions
309
index.php
309
index.php
|
@ -1,236 +1,85 @@
|
|||
<?php
|
||||
$data = new DomDocument();
|
||||
$data->load('data.xml');
|
||||
$dataNode = $data->getElementsByTagName('data')->item(0);
|
||||
$mcupdatesNode = $dataNode->getElementsByTagName('mcupdates')->item(0);
|
||||
$releaseS = $mcupdatesNode->getElementsByTagName('release');
|
||||
$text = '';
|
||||
for ($i = $releaseS->length; $i > 1; $i--) {
|
||||
$release = $releaseS->item($i-1);
|
||||
$releaseInfos = $release->getElementsByTagName('infos')->item(0);
|
||||
$text .= '<h3>Minecraft '.$release->getAttribute('name').' ';
|
||||
if (isset($prevRelease)) {
|
||||
if ($release->getAttribute('name') == $prevRelease->getAttribute('name')) {
|
||||
$text .= '(version enterrée) ';
|
||||
|
||||
$lang = false;
|
||||
|
||||
if (isset($_GET['lang'])) {
|
||||
if (is_file('lang/'.$_GET['lang'].'.lang')) {
|
||||
$lang = $_GET['lang'];
|
||||
setcookie('lang', $lang, time()+32140800);
|
||||
}
|
||||
}
|
||||
if (!$lang AND isset($_COOKIE['lang'])) {
|
||||
if (is_file('lang/'.$_COOKIE['lang'].'.lang')) {
|
||||
$lang = $_COOKIE['lang'];
|
||||
}
|
||||
}
|
||||
if (!$lang) {
|
||||
$lang = 'fr_FR'; #TODO Function wich detct the language
|
||||
setcookie('lang', $lang, time()+32140800);
|
||||
}
|
||||
$langCacheLink = 'cache/index/'.$lang.'.html';
|
||||
|
||||
if (is_file($langCacheLink)) { // If there is a cache file
|
||||
echo file_get_contents($langCacheLink); // Send it
|
||||
end;
|
||||
} else { // Else, construct it
|
||||
$langData = fopen('lang/'.$lang.'.lang', 'r');
|
||||
$langParsed = array();
|
||||
while($langDataLine = fgets($langData)) {
|
||||
$langDataLineUncommented = explode("#", $langDataLine);
|
||||
$langDataLineUncommentedExploded = explode('=', $langDataLineUncommented[0]);
|
||||
if (count($langDataLineUncommentedExploded) == 2) {
|
||||
$langParsed[ltrim(rtrim($langDataLineUncommentedExploded[0]))] = ltrim(rtrim($langDataLineUncommentedExploded[1]));
|
||||
}
|
||||
}
|
||||
$shortDescription = $releaseInfos->getAttribute('shortDescription');
|
||||
if ($shortDescription == 'false') {
|
||||
$shortDescription = 'Pas de description.';
|
||||
}
|
||||
$text .= '</h3><div class="release" id="R'.$release->getAttribute('id').'"><div class="shortDescription">'.$shortDescription.' <input type="button" value="+" class="more" /></div><div class="content"></div></div>';
|
||||
$prevRelease = $release;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
$langIndexText = '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Minecraft Checker</title>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" media="screen" type="text/css" title="design" href="design.css">
|
||||
<script type="text/javascript">
|
||||
var checkIntervalForm;
|
||||
var checkState;
|
||||
var checkTimeout;
|
||||
var addXhr;
|
||||
var allReleases;
|
||||
var checkXhr;
|
||||
var lastId = <?php echo $mcupdatesNode->getAttribute('total'); ?>;
|
||||
|
||||
window.onload = function () {
|
||||
checkIntervalForm = document.getElementById('checkActivate');
|
||||
checkState = document.getElementById('checkState');
|
||||
checkIntervalForm.addEventListener('change', function(e) {
|
||||
if (e.target.checked) {
|
||||
checkState.innerHTML = 'activé';
|
||||
checkTimeout = true;
|
||||
check();
|
||||
console.log('Checking activated');
|
||||
} else {
|
||||
checkState.innerHTML = 'désactivé';
|
||||
clearTimeout(checkTimeout); // TODO Annulation de checkXhr
|
||||
checkTimeout = false;
|
||||
checkXhr.abort();
|
||||
console.log('Checking stopped');
|
||||
}
|
||||
}, false);
|
||||
|
||||
allReleases = document.getElementById('allreleases');
|
||||
allReleaseS = allReleases.getElementsByClassName('more');
|
||||
for (var allReleaseI = 0; allReleaseI < allReleaseS.length; allReleaseI++) {
|
||||
allReleaseS[allReleaseI].addEventListener('click', releaseOpen, false);
|
||||
}
|
||||
console.log('System initialised');
|
||||
}
|
||||
function releaseOpen(e) {
|
||||
e.target.value = '...';
|
||||
var releaseXhr = new XMLHttpRequest();
|
||||
releaseXhr.onreadystatechange = function() {
|
||||
if (releaseXhr.readyState == 4 && (releaseXhr.status == 200 || releaseXhr.status == 0)) {
|
||||
e.target.removeEventListener('click', releaseOpen, false);
|
||||
console.log(' Infos recevied');
|
||||
var content = e.target.parentNode.parentNode.getElementsByClassName('content')[0];
|
||||
content.innerHTML = releaseXhr.responseText;
|
||||
if (content.getElementsByClassName('releaseFiles')[0]) {
|
||||
content.getElementsByClassName('releaseFilesButton')[0].addEventListener('click', releaseFilesOpen, false);
|
||||
filesDirExpandS = content.getElementsByClassName('dir');
|
||||
for (var filesDirExpandI = 0; filesDirExpandI < filesDirExpandS.length; filesDirExpandI++) {
|
||||
filesDirExpandS[filesDirExpandI].addEventListener('click', releaseFilesDirOpen, false);
|
||||
}
|
||||
var releaseFilesSelectionS = content.getElementsByClassName('releaseFiles')[0].getElementsByTagName('input');
|
||||
for (var releaseFilesSelectionI = 0; releaseFilesSelectionI < releaseFilesSelectionS.length; releaseFilesSelectionI++) {
|
||||
if (releaseFilesSelectionS[releaseFilesSelectionI].name == 'filesSelectionChangement' || releaseFilesSelectionS[releaseFilesSelectionI].name == 'filesSelectionClass') {
|
||||
releaseFilesSelectionS[releaseFilesSelectionI].addEventListener('click', releaseFilesOrderEvent, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
e.target.value = '-';
|
||||
e.target.addEventListener('click', releaseClose, false);
|
||||
}
|
||||
};
|
||||
var releaseId = e.target.parentNode.parentNode.id.split('R')[1];
|
||||
console.log('Searching details for release ID = '+releaseId+'.');
|
||||
releaseXhr.open('GET', 'moreinfos.php?i='+releaseId, true);
|
||||
releaseXhr.send(null);
|
||||
}
|
||||
function releaseFilesDirOpen(e) {
|
||||
e.target.parentNode.getElementsByClassName('dirUl')[0].style.display = '';
|
||||
e.target.className = 'dir opened';
|
||||
e.target.removeEventListener('click', releaseFilesDirOpen, false);
|
||||
e.target.addEventListener('click', releaseFilesDirClose, false);
|
||||
}
|
||||
function releaseFilesDirClose(e) {
|
||||
e.target.parentNode.getElementsByClassName('dirUl')[0].style.display = 'none';
|
||||
e.target.className = 'dir closed';
|
||||
e.target.removeEventListener('click', releaseFilesDirClose, false);
|
||||
e.target.addEventListener('click', releaseFilesDirOpen, false);
|
||||
}
|
||||
function releaseClose(e) {
|
||||
e.target.value = '...';
|
||||
e.target.parentNode.parentNode.getElementsByClassName('content')[0].innerHTML = '';
|
||||
e.target.removeEventListener('click', releaseClose, false);
|
||||
e.target.addEventListener('click', releaseOpen, false);
|
||||
e.target.value = '+';
|
||||
}
|
||||
function releaseFilesOpen(e) {
|
||||
e.target.value = '...';
|
||||
var releaseFiles = e.target.parentNode.parentNode.getElementsByClassName('releaseFiles')[0];
|
||||
releaseFiles.style.display = '';
|
||||
releaseFilesOrder(releaseFiles);
|
||||
e.target.removeEventListener('click', releaseFilesOpen, false);
|
||||
e.target.addEventListener('click', releaseFilesClose, false);
|
||||
e.target.value = '-';
|
||||
}
|
||||
function releaseFilesOrder(releaseFiles) {
|
||||
var releaseFilesFileS = releaseFiles.getElementsByClassName('file');
|
||||
var releaseFilesSelectionClassAll = releaseFiles.getElementsByClassName('fileSelectionClassAll')[0].checked;
|
||||
var releaseFilesSelectionClassNonTechnic = releaseFiles.getElementsByClassName('fileSelectionClassNontechnic')[0].checked;
|
||||
var releaseFilesSelectionClassNone = releaseFiles.getElementsByClassName('fileSelectionClassNone')[0].checked;
|
||||
var releaseFilesSelectionChangementAll = releaseFiles.getElementsByClassName('fileSelectionChangementAll')[0].checked;
|
||||
var releaseFilesSelectionChangementChanged = releaseFiles.getElementsByClassName('fileSelectionChangementChanged')[0].checked;
|
||||
var releaseFilesSelectionChangementAdded = releaseFiles.getElementsByClassName('fileSelectionChangementAdded')[0].checked;
|
||||
for (var releaseFilesFileI = 0; releaseFilesFileI < releaseFilesFileS.length; releaseFilesFileI++) {
|
||||
var releaseFilesFileClassE = releaseFilesFileS[releaseFilesFileI].className.split(' ');
|
||||
var releaseFilesFileTechnic = in_array('technic', releaseFilesFileClassE);
|
||||
var releaseFilesFileClass = in_array('class', releaseFilesFileClassE);
|
||||
var releaseFilesFileChanged = in_array('change', releaseFilesFileClassE);
|
||||
var releaseFilesFileAdded = in_array('added', releaseFilesFileClassE);
|
||||
if ((releaseFilesSelectionClassAll || (releaseFilesSelectionClassNonTechnic && (!releaseFilesFileTechnic)) || (releaseFilesSelectionClassNone && (!releaseFilesFileClass))) && (releaseFilesSelectionChangementAll || (releaseFilesSelectionChangementChanged && (releaseFilesFileChanged || releaseFilesFileAdded)) || (releaseFilesSelectionChangementAdded && releaseFilesFileAdded))) {
|
||||
releaseFilesFileS[releaseFilesFileI].parentNode.style.display = '';
|
||||
} else {
|
||||
releaseFilesFileS[releaseFilesFileI].parentNode.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
function releaseFilesOrderEvent(e) {
|
||||
releaseFilesOrder(e.target.parentNode.parentNode);
|
||||
}
|
||||
function releaseFilesClose(e) {
|
||||
e.target.value = '+';
|
||||
e.target.parentNode.parentNode.getElementsByClassName('releaseFiles')[0].style.display = 'none';
|
||||
e.target.removeEventListener('click', releaseFilesClose, false);
|
||||
e.target.addEventListener('click', releaseFilesOpen, false);
|
||||
}
|
||||
function check() {
|
||||
checkXhr = new XMLHttpRequest();
|
||||
checkXhr.onreadystatechange = function() {
|
||||
if (checkXhr.readyState == 4 && (checkXhr.status == 200 || checkXhr.status == 0)) {
|
||||
console.log('Check finished, with information : '+checkXhr.responseText);
|
||||
var newReleaseE = checkXhr.responseText.split('|');
|
||||
if (newReleaseE.length == 8 && checkTimeout) {
|
||||
if (newReleaseE[5] == lastId) {
|
||||
console.log(' Information analysed : no new release (date: '+newReleaseE[0]+').');
|
||||
checkState.innerHTML = 'attente';
|
||||
} else if (newReleaseE[5] > lastId) {
|
||||
console.log(' Information analysed : new release.');
|
||||
checkState.innerHTML = 'nouvelle version';
|
||||
// TODO Vérifier si (newReleaseE[5] == lastId+1)
|
||||
lastRelease = newReleaseE[6];
|
||||
if (newReleaseE[7] == 'r' && newReleaseE[5] == lastId+1) {
|
||||
var newReleaseAlertType = 'La release complète';
|
||||
} else if (newReleaseE[7] == 'apr' && newReleaseE[5] == lastId+1) {
|
||||
var newReleaseAlertType = 'La pre-release automatique';
|
||||
} else if (newReleaseE[7] == 'pr' && newReleaseE[5] == lastId+1) {
|
||||
var newReleaseAlertType = 'La pre-release';
|
||||
} else {
|
||||
console.error(' Bad informations on the new release. Reloading page.');
|
||||
checkState.innerHTML = 'erreur';
|
||||
location.reload();
|
||||
return false;
|
||||
}
|
||||
lastId = newReleaseE[5];
|
||||
console.info('New release: name: '+lastRelease+' id:'+newReleaseE[5]+' type: '+newReleaseE[7]+'.');
|
||||
checkState.innerHTML = 'nouvelle version';
|
||||
document.title='Version '+lastRelease+' sortie !';
|
||||
alert(newReleaseAlertType+' '+lastRelease+' est sortie !');
|
||||
location.reload();
|
||||
} else {
|
||||
console.error('Database upset. Reloading page.');
|
||||
checkState.innerHTML = 'erreur';
|
||||
location.reload();
|
||||
}
|
||||
checkTimeout = setTimeout('check()', 5000);
|
||||
} else if (!checkTimeout) {
|
||||
return false;
|
||||
} else {
|
||||
console.error('Error comited server-side.');
|
||||
checkState.innerHTML = 'erreur';
|
||||
}
|
||||
}
|
||||
};
|
||||
checkXhr.open('GET', 'test.php', true);
|
||||
checkState.innerHTML = 'recherche';
|
||||
checkXhr.send(null);
|
||||
}
|
||||
|
||||
function in_array(needle, haystack) {
|
||||
for (key in haystack) {
|
||||
if (haystack[key] == needle) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
<meta charset="utf-8">
|
||||
<title>'.$langParsed['general.title'].'</title>
|
||||
<link rel="stylesheet" media="screen" type="text/css" title="design" href="stye/style.css">
|
||||
<script type="text/javascript" src="script/jQuery.js"></script>
|
||||
<script type="text/javascript" src="script/releases.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Minecraft Checker</h1>
|
||||
<div id="body">
|
||||
<h2>Rechercher des versions</h2>
|
||||
<p class="RL_search"><input type="checkbox" id="checkActivate" name="checkActivate"/><label for="checkActivate"> Rechercher les nouvelles releases (<span id="checkState">désactivé</span>)</label></p>
|
||||
|
||||
<h2>Versions référencées</h2>
|
||||
<div id="allreleases">
|
||||
<?php echo $text; ?>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<p id="copyright">Copyright © <a href="https://twitter.com/#!/WebFrogeye">WebFrogeye</a> 2012</p>
|
||||
<p>Créé par <a href="https://twitter.com/#!/WebFrogeye">@WebFrogeye</a>.<br/>
|
||||
Avec l'aide d'<a href="https://twitter.com/#!/EphysPotato">@EphysPotato</a>.<br/>
|
||||
Sur un design de <a href="http://dlp.host56.com/">DLProduction</a>.<br/>
|
||||
D'après un script de <a href="https://twitter.com/#!/shellgratuit">@shellgratuit</a>.</p>
|
||||
</footer>
|
||||
<div id="cache" style="display: none;"></div>
|
||||
<body lang="'.$langParsed['language.codeHTML'].'">
|
||||
<h1>'.$langParsed['general.title'];
|
||||
if ($langParsed['general.version.state'] != '0') {
|
||||
$langIndexText .= ' '.$langParsed['general.version.state'];
|
||||
}
|
||||
$langIndexText .= '</h1>
|
||||
<div id="body">
|
||||
<p>'.$langParsed['general.description'].'</p>
|
||||
<h2>'.$langParsed['allReleases.title'].' <span id="state">'.$langParsed['allReleases.noConnexion'].'</span></h2>
|
||||
<div id="allReleases">
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<p id="copyright">Copyright © <a href="https://twitter.com/#!/WebFrogeye">WebFrogeye</a> 2012</p>
|
||||
<p>'.str_replace('%1', '<a href="https://twitter.com/#!/WebFrogeye">@WebFrogeye</a>', $langParsed['footer.script']).'<br/>
|
||||
'.str_replace('%1', '<a href="https://twitter.com/#!/EphysPotato">@EphysPotato</a>', $langParsed['footer.help']).'<br/>
|
||||
'.str_replace('%1', '<a href="http://dlp.host56.com/">DLProduction</a>', $langParsed['footer.design']).'<br/>';
|
||||
if ($langParsed['footer.translation.author'] != '0') {
|
||||
$langIndexText .= str_replace('%1', '<a href="'.$langParsed['footer.translation.author.link'].'">'.$langParsed['footer.translation.author'].'</a>', $langParsed['footer.translation']).'<br/>';
|
||||
}
|
||||
$langIndexText .='<p id="version">'.$langParsed['footer.version'].' '.$langParsed['general.version'];
|
||||
if ($langParsed['general.version.state'] != '0') {
|
||||
$langIndexText .= ' '.$langParsed['general.version.state'];
|
||||
}
|
||||
$langIndexText .= '.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
</html>';
|
||||
echo $langIndexText;
|
||||
if (!is_dir('cache')) {
|
||||
mkdir('cache');
|
||||
}
|
||||
if (!is_dir('cache/index')) {
|
||||
mkdir('cache/index');
|
||||
}
|
||||
if ($langCacheData = fopen($langCacheLink, 'w')) {
|
||||
fwrite($langCacheData, $langIndexText);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
Reference in a new issue