Init
1722
backend/install/public_html/css/style.css.php
Normal file
1
backend/install/public_html/img/arrow-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#CCC"><path d="M11 1l2.8 2.8L7.6 10H24v4H7.6l6.2 6.2L11 23 0 12z"/></svg>
|
||||
|
After Width: | Height: | Size: 162 B |
1
backend/install/public_html/img/cross-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#CCC"><path d="M24 20.2L15.7 12 24 3.7 20 0 12 8.3 3.7 0 0 4 8.3 12 0 20.3 4 24l8.2-8.3 8.3 8.2z"/></svg>
|
||||
|
After Width: | Height: | Size: 194 B |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
BIN
backend/install/public_html/img/favicon/android-chrome-36x36.png
Normal file
|
After Width: | Height: | Size: 883 B |
BIN
backend/install/public_html/img/favicon/android-chrome-48x48.png
Normal file
|
After Width: | Height: | Size: 993 B |
BIN
backend/install/public_html/img/favicon/android-chrome-72x72.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
backend/install/public_html/img/favicon/android-chrome-96x96.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 911 B |
BIN
backend/install/public_html/img/favicon/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
backend/install/public_html/img/favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
41
backend/install/public_html/img/favicon/manifest.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "Pi Control",
|
||||
"icons": [
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": 0.75
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": 1
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": 1.5
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": 2
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": 3
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="260.000000pt" height="260.000000pt" viewBox="0 0 260.000000 260.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,260.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M1076 2574 c-471 -85 -865 -432 -1009 -889 -77 -244 -75 -537 4 -785
|
||||
111 -348 390 -654 726 -795 632 -264 1355 3 1664 615 388 771 -87 1708 -940
|
||||
1854 -116 20 -335 20 -445 0z m503 -617 c59 -23 132 -79 165 -125 51 -74 69
|
||||
-137 69 -247 0 -127 -23 -192 -94 -270 -98 -106 -196 -134 -471 -135 l-148 0
|
||||
0 -240 0 -240 -135 0 -135 0 0 641 0 641 353 -4 c300 -4 358 -7 396 -21z"/>
|
||||
<path d="M1100 1580 l0 -180 63 0 c34 1 108 5 165 9 84 7 110 13 141 34 96 64
|
||||
96 208 0 279 -32 24 -128 37 -266 38 l-103 0 0 -180z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
1
backend/install/public_html/img/help-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2zm0-2C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm1.3 17a1.3 1.3 0 1 1-2.6 0 1.3 1.3 0 0 1 2.6 0zm1.3-10C14 6.4 13 6 12 6c-2 0-3.5 1.6-3.5 4h2c0-1.5.8-2 1.6-2 .7 0 1.4.4 1.4 1.2 0 1-.4 1.3-1 1.8-1.4 1.4-1.4 2-1.4 3.5h2c0-.7 0-1.2 1-2.2.6-.7 1.5-1.6 1.5-3 0-1-.3-1.7-1-2.3z"/></svg>
|
||||
|
After Width: | Height: | Size: 446 B |
1
backend/install/public_html/img/info-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="rgba(0,0,0,0.2)"><path d="M12 24c6.63 0 12-5.37 12-12S18.63 0 12 0 0 5.37 0 12s5.37 12 12 12zm1-6h-2v-8h2v8zM12 5.75a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 259 B |
1
backend/install/public_html/img/loader.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#000"><g fill="none" fill-rule="evenodd" stroke-width="2"><circle cx="22" cy="22" r="1"><animate attributeName="r" begin="0s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"/><animate attributeName="stroke-opacity" begin="0s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"/></circle><circle cx="22" cy="22" r="1"><animate attributeName="r" begin="-0.9s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"/><animate attributeName="stroke-opacity" begin="-0.9s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"/></circle></g></svg>
|
||||
|
After Width: | Height: | Size: 897 B |
1
backend/install/public_html/img/logo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="94" height="24" viewBox="0 0 94 24" fill="#FFF"><path d="M5.087 0c-.12 0-.252.05-.4.166-.363-.14-.715-.188-1.03.096C3.17.2 3.013.33 2.893.482c-.107 0-.8-.11-1.116.363-.797-.094-1.05.47-.764.994-.163.25-.332.5.05.98-.135.27-.052.56.265.91-.083.377.08.643.377.85-.056.515.472.814.63.92.06.3.186.584.788.74.1.448.462.525.813.62-1.16.672-2.153 1.56-2.146 3.733l-.17.303c-1.33.808-2.525 3.406-.655 5.517.122.66.327 1.136.51 1.66.272 2.118 2.052 3.11 2.52 3.226.69.524 1.422 1.02 2.414 1.37.933.963 1.946 1.33 2.964 1.33h.045c1.017 0 2.03-.367 2.965-1.33.99-.35 1.724-.846 2.412-1.37.47-.118 2.25-1.11 2.522-3.226.18-.525.386-1 .508-1.66 1.87-2.112.674-4.71-.655-5.518l-.17-.303c.007-2.174-.986-3.06-2.145-3.734.35-.095.712-.172.812-.62.602-.156.728-.44.79-.74.156-.106.684-.405.63-.92.294-.207.458-.473.375-.85.317-.35.4-.64.266-.91.382-.48.213-.73.05-.98.286-.526.034-1.09-.764-.995C16.7.372 16.006.48 15.9.48c-.12-.15-.278-.28-.764-.218-.315-.285-.667-.236-1.03-.096-.43-.34-.716-.067-1.042.036-.523-.17-.642.063-.898.158-.57-.12-.743.142-1.016.42l-.317-.01c-.86.505-1.286 1.535-1.437 2.065-.15-.53-.577-1.56-1.436-2.066l-.317.01C7.37.5 7.197.24 6.628.36 6.37.265 6.252.032 5.73.202c-.214-.068-.41-.208-.643-.2zm.03.61c.437.16.66.37.898.574.08-.108.203-.187.054-.448.31.178.542.39.715.624.19-.122.114-.29.115-.442.322.262.526.54.776.812.05-.037.094-.16.133-.358.767.745 1.852 2.62.278 3.365C6.75 3.632 5.15 2.83 3.378 2.227 5.656 3.402 6.98 4.352 7.706 5.16c-.37 1.49-2.31 1.56-3.02 1.517.146-.068.267-.148.31-.273-.178-.126-.808-.013-1.25-.26.17-.035.25-.07.33-.194-.417-.133-.865-.247-1.13-.467.143 0 .276.032.462-.097-.373-.2-.77-.36-1.08-.667.194 0 .4 0 .462-.074-.34-.21-.63-.446-.867-.703.27.033.383 0 .448-.042-.256-.263-.583-.486-.738-.812.2.07.383.095.515-.01-.088-.197-.463-.314-.68-.776.212.02.435.046.48 0-.098-.398-.266-.622-.43-.855.45-.01 1.134 0 1.103-.036l-.28-.283c.442-.12.892.02 1.22.12.146-.115-.003-.262-.182-.41.374.05.712.135 1.018.253C4.56.943 4.29.795 4.16.648c.578.11.823.264 1.067.418.176-.17.01-.313-.11-.46zm8.61 0c-.12.146-.286.29-.11.46.245-.155.49-.31 1.068-.42-.13.15-.4.296-.236.444.304-.12.643-.205 1.017-.255-.18.15-.33.295-.182.41.327-.1.778-.24 1.22-.12l-.28.285c-.03.038.652.03 1.103.036-.164.233-.332.457-.43.856.044.046.268.02.48 0-.217.46-.593.578-.68.776.132.1.315.075.515.01-.156.325-.482.548-.74.812.066.047.18.075.45.042-.24.257-.527.492-.868.703.06.07.268.067.46.072-.308.307-.706.466-1.078.667.186.128.318.098.46.096-.263.22-.71.334-1.127.467.08.125.158.16.327.194-.44.247-1.07.134-1.25.26.044.125.165.206.31.273-.708.042-2.647-.026-3.018-1.515.724-.81 2.05-1.76 4.327-2.934-1.772.603-3.372 1.406-4.71 2.51-1.574-.743-.49-2.62.278-3.364.04.197.083.32.134.358.25-.273.453-.55.775-.813 0 .155-.077.322.115.444.172-.236.406-.446.715-.625-.15.26-.025.34.055.448.236-.206.46-.415.897-.576zM9.27 6.743h.118c1.115-.012 2.497.833 2.49 1.63-.003.7-.97 1.27-2.482 1.26-1.482-.02-2.48-.715-2.476-1.396.003-.543 1.136-1.467 2.35-1.494zm-3.586.473c.22 0 .446.02.677.06.777.13-3.72 4.057-3.79 3.18-.06-2.034 1.322-3.25 3.114-3.24zm7.175.067c1.79-.01 3.175 1.206 3.112 3.24-.07.877-4.566-3.05-3.79-3.18.23-.04.457-.06.677-.06zm-.65 2.44a2.888 2.448 55.966 0 1 1.9 5.166 2.888 2.448 55.966 0 1-3.184-4.82 2.888 2.448 55.966 0 1 1.283-.346zm-5.62.134a2.448 2.888 34.034 0 1 1.283.347 2.448 2.888 34.034 0 1-3.184 4.82 2.448 2.888 34.034 0 1 1.9-5.167zm9.632 1.477c.034 0 .07 0 .11.014 2.024 1.155 1.673 3.73.58 4.61-.962.426-1.752-4.608-.69-4.626zm-13.892.067c1.062.018.272 5.05-.69 4.624-1.093-.88-1.444-3.453.58-4.61.04-.01.076-.015.11-.014zm7.202 3.476a2.73 2.517 0 0 1 2.65 2.516 2.73 2.517 0 0 1-5.46 0 2.73 2.517 0 0 1 2.81-2.516zm5.953.936c.213-.01.412.054.592.194.485.482.77 2.3-.08 3.39-1.167 1.62-2.75 1.683-3.338 1.232-.617-.582-.147-2.386.698-3.375.725-.82 1.487-1.424 2.127-1.44zM3.148 16.2c.703-.015 1.567.54 2.267 1.353.78.94 1.136 2.593.485 3.08-.617.37-2.113.218-3.177-1.31-.718-1.282-.625-2.587-.12-2.97.163-.1.348-.15.545-.154zM9.674 20.7c1.065.01 2.358.39 2.36.888.02.517-1.333 1.684-2.642 1.662-1.356.058-2.685-1.11-2.668-1.516-.02-.594 1.65-1.058 2.74-1.03h.21z"/><text style="line-height:125%" x="23.406" y="1046.165" font-size="2.594" font-family="sans-serif" letter-spacing="0" word-spacing="0" transform="translate(0 -1028.362)"><tspan x="23.406" y="1046.165"><tspan x="23.406" y="1046.165" style="-inkscape-font-specification:Arial" font-size="16.211" font-family="Arial">Pi Control</tspan></tspan></text></svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
1
backend/install/public_html/img/update-loader.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="42" height="42" viewBox="0 0 42 42" fill="#FFA000"><defs><g id="gear"><path id="gear" d="M24 13.616v-3.232c-1.65-.587-2.694-.752-3.22-2.02-.526-1.27.1-2.134.848-3.707l-2.285-2.285c-1.56.742-2.433 1.375-3.707.847-1.27-.527-1.436-1.577-2.02-3.22h-3.232c-.582 1.635-.75 2.692-2.02 3.22-1.27.527-2.132-.1-3.707-.848L2.372 4.657c.745 1.568 1.375 2.434.847 3.707-.528 1.27-1.585 1.438-3.22 2.02v3.232c1.632.58 2.692.75 3.22 2.02.53 1.28-.115 2.165-.848 3.706l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847 1.27.527 1.437 1.58 2.02 3.22h3.232c.582-1.636.75-2.69 2.027-3.222 1.263-.524 2.12.1 3.7.85l2.284-2.285c-.744-1.563-1.375-2.433-.848-3.706.526-1.27 1.587-1.44 3.22-2.02zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"></path></g></defs><use xlink:href="#gear" x="1" y="1"><animateTransform attributeName="transform" type="rotate" from="0 13 13" to="90 13 13" dur="1s" repeatCount="indefinite"></animateTransform></use><use xlink:href="#gear" x="17" y="17"><animateTransform attributeName="transform" type="rotate" from="22.5 29 29" to="-67.5 29 29" dur="1s" repeatCount="indefinite"></animateTransform></use></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
82
backend/install/public_html/js/feedback.js
Normal file
@@ -0,0 +1,82 @@
|
||||
var ajaxFeedback;
|
||||
var formFeedback;
|
||||
var feedbackError = false;
|
||||
|
||||
function showFeedbackError()
|
||||
{
|
||||
feedbackError = true;
|
||||
|
||||
jQuery('.feedback div.box .inner:eq(0)').html(_t('Leider ist ein unerwarteter Fehler aufgetreten. Bitte schließe das Feedback-Fenster und versuche es erneut. Andernfalls, schreibe mir unter <a href="%%s" target="_blank">Kontakt</a>.', 'https://willy-tech.de/kontakt/'));
|
||||
jQuery('.feedback div.box img').remove();
|
||||
jQuery('.feedback div.box .inner:eq(1)').html('<strong class="red">:(</strong>');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
jQuery(document).on('mousedown', 'a[href="https://willy-tech.de/kontakt/"]', function(e)
|
||||
{
|
||||
if (e.which == 3)
|
||||
return false;
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var _this = this;
|
||||
|
||||
if (feedbackError == true)
|
||||
{
|
||||
feedbackError = false;
|
||||
jQuery('.feedback').remove();
|
||||
}
|
||||
|
||||
if (jQuery('.feedback').length == 0 )
|
||||
{
|
||||
jQuery('body').append('<div class="feedback"><a href="#close">' + _t('Schließen') + '</a><span class="feedback-inner"><div class="box"><div class="inner-header"><span>' + _t('Feedback') + '</span></div><div class="inner text-justify">' + _t('Für das Feedback müssen noch einige Daten gesammelt werden.') + '</div><div class="inner"><img src="public_html/img/loader.svg" /></div><div class="inner-end"><a href="#close" class="button">' + _t('Schließen') + '</a></div></div></span></div>');
|
||||
|
||||
ajaxFeedback = jQuery.ajax({
|
||||
url: 'api/v1/feedback.php',
|
||||
method: 'POST',
|
||||
data: { url: window.location.href },
|
||||
dataType: 'text',
|
||||
async: true
|
||||
}).done(function(data)
|
||||
{
|
||||
if (data == '')
|
||||
return showFeedbackError();
|
||||
|
||||
var langParam = '';
|
||||
if (jQuery(_this).data('lang') != 'de')
|
||||
langParam = '&lang=' + jQuery(_this).data('lang');
|
||||
|
||||
formFeedback = jQuery('<form action="https://pi-control.de/?service=feedback' + langParam + '" method="post" target="_blank"><input type="hidden" name="data" value="'+data+'" /><input type="hidden" name="error-handler" value="'+errorHandler+'" /></form>');
|
||||
|
||||
jQuery('.feedback div.box .inner:eq(0)').html(_t('Diagnosedaten wurden gesammelt. Beim Klick auf den folgenden Button wird ein neues Fenster geöffnet.'));
|
||||
jQuery('.feedback div.box img').remove();
|
||||
jQuery('.feedback div.box .inner:eq(1)').addClass('text-align-center').html('<a href="#open" class="button">' + _t('Feedback öffnen') + '</a>');
|
||||
}).fail(function()
|
||||
{
|
||||
return showFeedbackError();
|
||||
});
|
||||
}
|
||||
|
||||
jQuery('.feedback').fadeIn('fast');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery(document).on('click', 'a[href="#close"], .feedback', function(e)
|
||||
{
|
||||
if (jQuery(e.target).has('.box').length || jQuery(e.target).is('a[href="#close"]'))
|
||||
{
|
||||
ajaxFeedback.abort();
|
||||
jQuery('.feedback').fadeOut('fast');
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery(document).on('click', 'a[href="#open"]', function(e)
|
||||
{
|
||||
formFeedback.appendTo('body').submit();
|
||||
|
||||
return false;
|
||||
});
|
||||
39
backend/install/public_html/js/install.language.js
Normal file
@@ -0,0 +1,39 @@
|
||||
function htmlEscape(str)
|
||||
{
|
||||
return String(str)
|
||||
.replace(/ä/g, 'ä')
|
||||
.replace(/ö/g, 'ö')
|
||||
.replace(/ü/g, 'ü')
|
||||
.replace(/Ä/g, 'Ä')
|
||||
.replace(/Ö/g, 'Ö')
|
||||
.replace(/Ü/g, 'Ü')
|
||||
.replace(/&/g, '&');
|
||||
}
|
||||
|
||||
jQuery(document).on('change', 'input[name=language]', function(e)
|
||||
{
|
||||
var lang = jQuery(this).attr('value');
|
||||
|
||||
jQuery('title').html(languageArray[3][lang] + jQuery('title').html().substr(-13));
|
||||
|
||||
jQuery('.container-600 > .box:eq(0) > .inner-header > span').html(languageArray[0][lang]);
|
||||
jQuery('.sidebar > .box > .inner-header > span').html(languageArray[1][lang]);
|
||||
jQuery('.container-600 > .box:eq(0) > .inner').html(languageArray[2][lang]);
|
||||
jQuery('.container-600 > .box:eq(1) > .inner-header > span').html(languageArray[3][lang]);
|
||||
jQuery('.container-600 > .box:eq(1) > form > .inner-end > input').val(htmlEscape(languageArray[4][lang]));
|
||||
jQuery('.box.error > div > .inner-single').html(languageArray[5][lang]);
|
||||
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(0) > th:eq(1)').html(languageArray[6][lang]);
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(0) > th:eq(2)').html(languageArray[7][lang]);
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(2) > td strong').html(languageArray[8][lang]);
|
||||
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(1) > td:eq(0) a:eq(0)').html(languageArray[9][lang]);
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(1) > td:eq(0) a:eq(1)').html(languageArray[10][lang]);
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(1) > td:eq(0) a:eq(2)').html(languageArray[11][lang]);
|
||||
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(1) > td:eq(1) a:eq(0)').html(languageArray[12][lang]);
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(1) > td:eq(1) a:eq(3)').html(languageArray[13][lang]);
|
||||
|
||||
jQuery('#footer > #footer-inner > #footer-table tr:eq(2) > td span').html(languageArray[14][lang].replace(/%s/, jQuery('#footer > #footer-inner > #footer-table tr:eq(2) > td span a')[0].outerHTML));
|
||||
jQuery('#footer > #footer-inner > #footer-copyright').html(languageArray[15][lang].replace(/%s/, jQuery('#footer > #footer-inner > #footer-copyright span')[0].outerHTML).replace(/%s/, jQuery('#footer > #footer-inner > #footer-copyright a')[0].outerHTML) + jQuery('#footer > #footer-inner > #footer-copyright').html().substr(-10));
|
||||
});
|
||||
4
backend/install/public_html/js/jquery.min.js
vendored
Normal file
6
backend/install/public_html/js/main.js
Normal file
@@ -0,0 +1,6 @@
|
||||
jQuery(document).on('click', '.error > div span.cancel, .success > div span.cancel, .info > div span.cancel', function(e) {
|
||||
jQuery(this).parents('.box').css("position", "relative").css("z-index", "-500").animate({marginTop: -jQuery(this).parents('.box').height()-20, opacity: 0}, 300, function(e)
|
||||
{
|
||||
jQuery(this).hide();
|
||||
});
|
||||
});
|
||||
12
backend/install/public_html/js/translation.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var jsTranslations = {};
|
||||
|
||||
function _t(format)
|
||||
{
|
||||
if (format in jsTranslations)
|
||||
format = jsTranslations[format];
|
||||
|
||||
for (var i = 1; i < arguments.length; i++)
|
||||
format = format.replace(/%s/, arguments[i]);
|
||||
|
||||
return format;
|
||||
}
|
||||
14
backend/install/public_html/templates/error.tpl.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!-- Error -->
|
||||
<div>
|
||||
<div class="box error">
|
||||
<div>
|
||||
<?php if ($data['title'] != '') { ?><div class="inner-header">
|
||||
<span><?php echo $data['title']; ?></span>
|
||||
</div><?php } ?>
|
||||
<div class="inner">
|
||||
<?php echo $data['msg']; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
31
backend/install/public_html/templates/html_footer.tpl.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
</div>
|
||||
<!-- Footer -->
|
||||
<div id="footer">
|
||||
<div id="footer-inner">
|
||||
<table id="footer-table">
|
||||
<tr>
|
||||
<th><?php _e('PI CONTROL'); ?></th>
|
||||
<th><?php _e('ÜBER MICH'); ?></th>
|
||||
<th><?php _e('VERSION'); ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2"><a href="https://willy-tech.de/kontakt/" target="_blank" data-lang="<?php echo $data['language']; ?>"><?php _e('Feedback'); ?></a><br />
|
||||
<a href="<?php echo $data['helpLink']; ?>" target="_blank"><?php _e('Hilfe'); ?></a><br />
|
||||
<a href="https://play.google.com/store/apps/details?id=de.willytech.picontrol" target="_blank" title="<?php _e('Öffne Play Store'); ?>"><?php _e('App im Play Store'); ?></a><br />
|
||||
<a href="https://gitlab.com/pi-control" target="_blank"><?php _e('GitLab'); ?></a></td>
|
||||
<td rowspan="2"><a href="http://willy-tech.de/" target="_blank"><?php _e('Mein Blog'); ?></a><br />
|
||||
<a href="https://twitter.com/Willys_TechBlog" target="_blank"><?php _e('Twitter'); ?></a><br />
|
||||
<a href="https://www.paypal.me/fritzsche" target="_blank"><?php _e('Spenden'); ?></a></td>
|
||||
<td><?php echo $data['version']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('LIZENZ'); ?></strong><span><?php _e('Raspberry Pi ist ein Markenzeichen<br />der %s.', '<a href="https://www.raspberrypi.org/" target="_blank">Raspberry Pi Foundation</a>'); ?></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="footer-copyright"><?php _e('Mit %s entwickelt von %s.', '<span style="color: #F44336;">❤</span>', '<a href="https://willy-tech.de/" target="_blank">Willy Fritzsche</a>'); ?> 2013-2017</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">var errorHandler = '<?php echo $data['errorHandler']; ?>';</script>
|
||||
</body>
|
||||
</html>
|
||||
81
backend/install/public_html/templates/html_header.tpl.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
|
||||
<meta name="apple-mobile-web-app-title" content="Pi Control" />
|
||||
<meta name="application-name" content="Pi Control" />
|
||||
<meta name="theme-color" content="#1565C0" />
|
||||
<link type="text/css" rel="stylesheet" href="public_html/css/style.css.php" />
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/public_html/img/favicon/apple-touch-icon-57x57.png" />
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/public_html/img/favicon/apple-touch-icon-120x120.png" />
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/public_html/img/favicon/apple-touch-icon-152x152.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/public_html/img/favicon/apple-touch-icon-180x180.png" />
|
||||
<link rel="icon" type="image/png" href="public_html/img/favicon/android-chrome-192x192.png" sizes="192x192" />
|
||||
<link rel="icon" type="image/png" href="public_html/img/favicon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="manifest" href="public_html/img/favicon/manifest.json" />
|
||||
<link rel="mask-icon" href="public_html/img/favicon/safari-pinned-tab.svg" color="#1975d0" />
|
||||
<link rel="shortcut icon" href="public_html/img/favicon/favicon.ico" />
|
||||
<script type="text/javascript" src="public_html/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="public_html/js/translation.js"></script>
|
||||
<?php if (!empty($data['jsTranslations'])) { ?>
|
||||
<script type="text/javascript">
|
||||
<?php foreach ($data['jsTranslations'] as $key => $value) { ?>
|
||||
jsTranslations['<?php echo $key; ?>'] = '<?php echo $value; ?>';
|
||||
<?php } ?>
|
||||
</script>
|
||||
<?php } ?>
|
||||
<script type="text/javascript" src="public_html/js/main.js"></script>
|
||||
<script type="text/javascript" src="public_html/js/feedback.js"></script>
|
||||
<title><?php echo $data['title']; ?></title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
<div id="header">
|
||||
<div id="header-top">
|
||||
<div id="header-top-inner">
|
||||
<div id="header-top-inner-row">
|
||||
<div class="header-top-inner-cell header-top-inner-username">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="checkbox" id="header-mobile" />
|
||||
<div id="inner-header">
|
||||
<label for="header-mobile"></label>
|
||||
<a href="?s=install<?php echo $data['langUrl']; ?>" id="header-logo"><img src="public_html/img/logo.svg" /></a>
|
||||
<div id="header-navi">
|
||||
<a href="?s=install<?php echo $data['langUrl']; ?>"><?php _e('Installation'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Content -->
|
||||
<div id="content">
|
||||
<!--[if lte IE 9]>
|
||||
<div class="box info">
|
||||
<div>
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Nicht unterstützte Browserversion'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Deine aktuelle Browserversion wird von Pi Control nicht unterstützt. Bitte aktualisiere deinen Browser oder verwende einen anderen!'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<![endif]-->
|
||||
<?php if (is_array($data['updatePicontrol'])) { ?>
|
||||
<!-- Update -->
|
||||
<div class="box info info-update pulse-update">
|
||||
<div>
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Pi Control %s ist verfügbar', $data['updatePicontrol']['version']); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Es steht ein Update zur Verfügung. Bitte aktualisiere auf die neuste Version, bevor du die Installation startest: <a href="%s" target="_blank">Download</a>', 'https://pi-control.de/install/'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
27
backend/install/public_html/templates/install.tpl.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 0%;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>0%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Vorwort'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Willkommen zur Installation des Pi Control für deinen Raspberry Pi!<br /><br />Vielen Dank, dass du dich für das Pi Control entschieden hast.<br />Die Installation führt dich durch eine Reihe von Schritten und dauert etwa drei Minuten. Rechts findest du einen Fortschrittsbalken, der dich über den Stand der Installation informiert.<br /><br />Nun kann es losgehen. Klicke dazu auf den folgenden Button.'); ?>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<a href="?s=install_language<?php echo $data['langUrl']; ?>" class="button"><?php _e('Installation starten'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
103
backend/install/public_html/templates/install_cron.tpl.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<style>
|
||||
@-webkit-keyframes move {
|
||||
0% {
|
||||
width: 60%;
|
||||
}
|
||||
30% {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 80%; -webkit-animation: move 1.5s linear forwards;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>80%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('4. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Um das Pi Control zu automatisieren und regelmäßig Aufgaben im Hintergrund ausführen zu können, wird ein Cron benötigt. Nachfolgend kann dieser automatisch erstellt werden oder aber du <a href="%s">überspringst diesen Schritt</a> und legst den Cron später von Hand ein.', '?s=install_finish'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear-both"></div>
|
||||
<div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('SSH-Login'); ?></span>
|
||||
</div>
|
||||
<div class="inner-info">
|
||||
<div><?php _e('Deine Daten werden für diese Funktion nicht gespeichert und nur zum einmaligen Eintragen eines Crons in /etc/crontab benötigt.'); ?></div>
|
||||
</div>
|
||||
<form action="?s=install_cron" method="post">
|
||||
<input type="radio" id="ssh-login-passwd" name="ssh-login" value="password" checked="checked" />
|
||||
<label for="ssh-login-passwd">
|
||||
<div class="inner-table">
|
||||
<div class="ssh-login-table-clickable-area"></div>
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th colspan="2"><strong><?php _e('Anmeldung über ein Passwort'); ?></strong><span> [<?php _e('Klicken zum aktivieren'); ?>]</span></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 30%;"><strong><?php _e('SSH-Port'); ?></strong></td>
|
||||
<td><input type="text" name="port" style="width: 50px;" value="<?php echo $data['port']; ?>" maxlength="5" /> <span class="small-info"><?php _e('Standard: %d', 22); ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('SSH-Benutzername'); ?></strong></td>
|
||||
<td><input type="text" name="username" style="width: 40%;" value="<?php echo $data['username']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('SSH-Passwort'); ?></strong></td>
|
||||
<td><input type="password" name="password" style="width: 40%;" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</label>
|
||||
<div class="inner">
|
||||
<div class="divider"><div></div><div><?php _e('ODER'); ?></div></div>
|
||||
</div>
|
||||
<input type="radio" id="ssh-login-pubkey" name="ssh-login" value="publickey" />
|
||||
<label for="ssh-login-pubkey">
|
||||
<div class="inner-table">
|
||||
<div class="ssh-login-table-clickable-area"></div>
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th colspan="2"><strong><?php _e('Anmeldung über einen Publickey'); ?></strong><span> [<?php _e('Klicken zum aktivieren'); ?>]</span></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 30%;"><strong><?php _e('SSH-Port'); ?></strong></td>
|
||||
<td><input type="text" name="port_" style="width: 50px;" value="<?php echo $data['port']; ?>" maxlength="5" /> <span class="small-info"><?php _e('Standard: 22'); ?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('SSH-Benutzername'); ?></strong></td>
|
||||
<td><input type="text" name="username_" style="width: 40%;" value="<?php echo $data['username']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('SSH-Privatekey'); ?></strong></td>
|
||||
<td><textarea name="privatekey_" style="width: 80%; height: 100px;"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php _e('Privatekey-Passwort (falls nötig)'); ?></strong></td>
|
||||
<td><input type="password" name="password_" style="width: 40%;" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</label>
|
||||
<div class="inner-end">
|
||||
<input type="submit" name="submit" value="<?php _e('Anmelden und Cron anlegen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 80%;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>80%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('4. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<strong class="green"><?php _e('Der Cron für das Pi Control wurde erfolgreich angelegt.'); ?></strong>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<a href="?s=install_finish" class="button"><?php _e('Nächster Schritt'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
47
backend/install/public_html/templates/install_finish.tpl.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<style>
|
||||
@-webkit-keyframes move {
|
||||
0% {
|
||||
width: 80%;
|
||||
}
|
||||
30% {
|
||||
width: 95%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 95%; -webkit-animation: move 1.5s linear forwards;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>95%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('5. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Juhu, nun bist du fast mit der Installation des Pi Control fertig. Im letzten Schritt wird alles fertig konfiguriert und erstellt. Anschließend wirst du zum Pi Control weitergeleitet.<br /><br />Viel Spaß!'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Aktualisierungsbenachrichtigung'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Wenn du zukünftig eine E-Mail bei einer neuen Version des Pi Control erhalten möchtest, dann kannst du dich <a href="%s" target="_blank">hier in die Liste eintragen</a>.', $data['configUpdateNotification']); ?>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<form action="?s=install_finish" method="post">
|
||||
<input type="submit" name="submit" value="<?php _e('Abschließen'); ?>" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<script type="text/javascript">var languageArray = <?php echo $data['languageArray']; ?></script>
|
||||
<script type="text/javascript" src="public_html/js/install.language.js"></script>
|
||||
<style>
|
||||
@-webkit-keyframes move {
|
||||
0% {
|
||||
width: 0%;
|
||||
}
|
||||
30% {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 20%; -webkit-animation: move 1.5s linear forwards;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>20%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('1. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Bitte wähle nachfolgend aus den vorhandenen Sprachen, deine bevorzugte Sprache aus. Die Sprache kann nachträglich geändert werden.'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Sprachauswahl'); ?></span>
|
||||
</div>
|
||||
<form action="?s=install_language" method="post">
|
||||
<div class="inner install-language-flex-container">
|
||||
<input type="radio" name="language" value="de" id="rb-de"<?php if ($data['language'] == 'de') echo ' checked="checked"'; ?> />
|
||||
<label for="rb-de">Deutsch</label>
|
||||
<input type="radio" name="language" value="en" id="rb-en"<?php if ($data['language'] == 'en') echo ' checked="checked"'; ?> />
|
||||
<label for="rb-en">English</label>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<input type="submit" name="submit" value="<?php _e('Nächster Schritt'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<style>
|
||||
@-webkit-keyframes move {
|
||||
0% {
|
||||
width: 20%;
|
||||
}
|
||||
30% {
|
||||
width: 40%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 40%; -webkit-animation: move 1.5s linear forwards;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>40%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('2. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Um das bestmögliche aus dem Pi Control herausholen zu können, müssen bestimmte Anforderungen erfüllt sein. Nachfolgend findest du eine Liste dieser.'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Anforderungen'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<span class="subtitle"><?php _e('PHP'); ?></span>
|
||||
</div>
|
||||
<div class="inner-table">
|
||||
<table class="table table-borderless table-form">
|
||||
<tr>
|
||||
<td style="width: 50%;"><?php _e('Version %s', '>= 7.0'); ?></td>
|
||||
<td class="<?php echo ($data['phpVersion']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpVersion']['status'] == true) ? '✔' : '✖'; echo ' '.$data['phpVersion']['version']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('SSH2-Erweiterung installiert'); ?></td>
|
||||
<td class="<?php echo ($data['phpSSH']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpSSH']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="'.$data['configHelp'].'#phpssh'.getURLLangParam().'" target="_blank">'._t('Anleitung zur Installation').'</a>'; ?></td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td><?php _e('Mcrypt-Erweiterung installiert'); ?></td>
|
||||
<td class="<?php echo ($data['phpMcrypt']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpMcrypt']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="'.$data['configHelp'].'?s=view&i=12'.getURLLangParam().'" target="_blank">'._t('Anleitung zur Installation').'</a>'; ?></td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
<td><?php _e('CLI-Erweiterung installiert'); ?></td>
|
||||
<td class="<?php echo ($data['phpCLI']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpCLI']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="'.$data['configHelp'].'?s=view&i=13'.getURLLangParam().'" target="_blank">'._t('Anleitung zur Installation').'</a>'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('cURL-Erweiterung installiert'); ?></td>
|
||||
<td class="<?php echo ($data['phpCURL']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpCURL']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="'.$data['configHelp'].'#phpcurl'.getURLLangParam().'" target="_blank">'._t('Anleitung zur Installation').'</a>'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('ZipArchive-Erweiterung installiert'); ?></td>
|
||||
<td class="<?php echo ($data['phpZipArchive']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpZipArchive']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="'.$data['configHelp'].'?s=view&i=15'.getURLLangParam().'" target="_blank">'._t('Anleitung zur Installation').'</a>'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Laden externer Inhalte aktiviert'); ?></td>
|
||||
<td class="<?php echo ($data['phpAllowUrlFopen']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['phpAllowUrlFopen']['status'] == true) ? '✔' : '✖ '.$data['phpAllowUrlFopen']['info']; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<span class="subtitle"><?php _e('Dateien und Ordner'); ?></span>
|
||||
</div>
|
||||
<div class="inner-table">
|
||||
<table class="table table-borderless table-form">
|
||||
<tr>
|
||||
<td style="width: 50%;"><?php _e('Vorhanden'); ?></td>
|
||||
<td class="<?php echo ($data['filesFoldersExist']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['filesFoldersExist']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline;" href="?s=install_troubleshooting'. $data['langUrl'].'" target="_blank">'._t('Mindestens %d Fehler', $data['filesFoldersExist']['count']).'</a>'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Berechtigungen'); ?></td>
|
||||
<td class="<?php echo ($data['filesFoldersPermission']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['filesFoldersPermission']['status'] == true) ? '✔' : '✖ <a style="color: inherit; text-decoration: underline" href="?s=install_troubleshooting'.$data['langUrl'].'" target="_blank">'._t('Mindestens %d Fehler', $data['filesFoldersPermission']['count']).'</a>'; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<span class="subtitle"><?php _e('Sonstiges'); ?></span>
|
||||
</div>
|
||||
<div class="inner-table">
|
||||
<table class="table table-borderless table-form">
|
||||
<tr>
|
||||
<td style="width: 50%;"><?php _e('Distribution'); ?></td>
|
||||
<td class="<?php echo ($data['otherDistribution']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['otherDistribution']['status'] == true) ? '✔' : '✖'; echo ' '.$data['otherDistribution']['version'] ; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Cookies aktiviert'); ?></td>
|
||||
<td class="<?php echo ($data['otherCookie']['status'] == true) ? 'green' : 'red'; ?>"><?php echo ($data['otherCookie']['status'] == true) ? '✔' : '✖'; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<?php if ($data['error'] === false) { ?>
|
||||
<a href="?s=install_user" class="button"><?php _e('Nächster Schritt'); ?></a>
|
||||
<?php } else { ?>
|
||||
<strong class="red"><?php _e('Probleme beheben, um fortzufahren!'); ?></strong> <a href="?s=install_requirement<?php echo $data['langUrl']; ?>" class="button"><?php _e('Seite aktualisieren'); ?></a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Problembehandlung'); ?></span>
|
||||
</div>
|
||||
<div class="inner-table overflow-auto">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th><?php _e('Datei / Ordner'); ?></th>
|
||||
<th class="table-center"><?php _e('Existiert'); ?></th>
|
||||
<th class="table-center"><?php _e('Berechtigung'); ?></th>
|
||||
<th class="table-center"><?php _e('Benutzer:Gruppe'); ?></th>
|
||||
<th class="table-center"><?php _e('Größe'); ?></th>
|
||||
</tr>
|
||||
<?php foreach ($data['filesFolders'] as $name => $fileFolder) { ?>
|
||||
<tr>
|
||||
<td class="<?php echo ($fileFolder['error'] === true) ? 'red' : 'green'; ?>"><?php echo $name; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['existsBool'] === true) ? 'green' : 'red'; ?>"><?php echo ($fileFolder['exists'] === true) ? '✔' : '✖'; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['permissionBool'] === true) ? 'green' : 'red'; ?>"><?php echo $fileFolder['permission']; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['userGroupBool'] === true) ? 'green' : 'red'; ?>"><?php echo $fileFolder['userGroup']; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['filesizeBool'] === true) ? 'green' : 'red'; ?>"><?php echo sizeUnit($fileFolder['filesize']); ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
||||
<?php if ($data['filesFoldersError'] === true) { ?>
|
||||
<div class="inner-end">
|
||||
<a href="<?php echo $data['configHelp']; ?>" target="_blank" class="button"><?php _e('Anleitung zur Problembehebung'); ?></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
60
backend/install/public_html/templates/install_user.tpl.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<style>
|
||||
@-webkit-keyframes move {
|
||||
0% {
|
||||
width: 40%;
|
||||
}
|
||||
30% {
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 60%; -webkit-animation: move 1.5s linear forwards;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>60%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('3. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('In diesem Schritt kannst du einen Benutzer für das Pi Control erstellen. Dieser Benutzer hat nichts mit dem SSH-Login zu tun und wird nur zur Anmeldung an das Pi Control genutzt.'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Benutzer erstellen'); ?></span>
|
||||
</div>
|
||||
<form action="?s=install_user" method="post">
|
||||
<div class="inner-table">
|
||||
<table class="table table-borderless table-form">
|
||||
<tr>
|
||||
<td style="width: 40%;"><?php _e('Benutzername'); ?></td>
|
||||
<td><input type="text" name="username" maxlength="32" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Passwort'); ?></td>
|
||||
<td><input type="password" name="password" maxlength="64" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Passwort wiederholen'); ?></td>
|
||||
<td><input type="password" name="password2" maxlength="64" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<input type="submit" name="submit" value="<?php _e('Nächster Schritt'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div class="sidebar">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Fortschritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="progressbar"><div style="width: 60%;"> </div></div>
|
||||
</div>
|
||||
<div class="inner text-center">
|
||||
<strong>60%</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-600">
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('3. Schritt'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<strong class="green"><?php _e('Der Benutzer für das Pi Control wurde erfolgreich angelegt.'); ?></strong>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<a href="?s=install_cron" class="button"><?php _e('Nächster Schritt'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
16
backend/install/public_html/templates/msg.tpl.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!-- Msg -->
|
||||
<div id="message_box_<?php echo $data['id']; ?>">
|
||||
<div class="box <?php echo $data['type']; ?>">
|
||||
<div>
|
||||
<?php if ($data['title'] != '') { ?><div class="inner-header">
|
||||
<span><?php echo $data['title']; ?></span>
|
||||
<?php if ($data['cancelable'] === true) { ?><div><span class="cancel"></span></div><?php } ?>
|
||||
</div><?php } ?>
|
||||
<div class="inner<?php if ($data['title'] == '') { echo '-single'; } ?>">
|
||||
<?php echo $data['msg']; ?>
|
||||
</div>
|
||||
<?php if ($data['title'] == '' && $data['cancelable'] === true) { ?><div><span class="cancel"></span></div><?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
47
backend/install/public_html/templates/single_box.tpl.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
|
||||
<meta name="apple-mobile-web-app-title" content="Pi Control" />
|
||||
<meta name="application-name" content="Pi Control" />
|
||||
<meta name="theme-color" content="#1565C0" />
|
||||
<link type="text/css" rel="stylesheet" href="public_html/css/style.css.php" />
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/public_html/img/favicon/apple-touch-icon-57x57.png" />
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/public_html/img/favicon/apple-touch-icon-120x120.png" />
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/public_html/img/favicon/apple-touch-icon-152x152.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/public_html/img/favicon/apple-touch-icon-180x180.png" />
|
||||
<link rel="icon" type="image/png" href="public_html/img/favicon/android-chrome-192x192.png" sizes="192x192" />
|
||||
<link rel="icon" type="image/png" href="public_html/img/favicon/favicon-96x96.png" sizes="96x96" />
|
||||
<link rel="manifest" href="public_html/img/favicon/manifest.json" />
|
||||
<link rel="mask-icon" href="public_html/img/favicon/safari-pinned-tab.svg" color="#1975d0" />
|
||||
<link rel="shortcut icon" href="public_html/img/favicon/favicon.ico" />
|
||||
<script type="text/javascript" src="public_html/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="public_html/js/main.js"></script>
|
||||
<script type="text/javascript" src="public_html/js/feedback.js"></script>
|
||||
<title>Pi Control</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
<div id="header">
|
||||
<div id="inner-header" style="min-height: 45px;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Content -->
|
||||
<div id="content" style="min-height: auto;">
|
||||
<div>
|
||||
<div class="box" style="margin: 0;">
|
||||
<?php echo $data['content']; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Footer -->
|
||||
<div id="footer" style="background: none; border: none; min-height: auto;">
|
||||
<div id="footer-inner">
|
||||
<div id="footer-copyright"><?php _e('Mit %s entwickelt von %s.', '<span style="color: #F44336;">❤</span>', '<a href="https://willy-tech.de/" target="_blank">Willy Fritzsche</a>'); ?> 2013-2017</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||