Init Repo

This commit is contained in:
Gregor Schulte
2021-06-15 11:08:34 +02:00
parent d0b72a118d
commit b303dd00d6
330 changed files with 93268 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View 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

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="72" height="24" viewBox="0 0 72 24"><path d="M7 22.6L0 24l1.4-7L7 22.5zM8.6 21l11.3-11L14 4 3 15.5 8.6 21zm9.8-21l-2.8 2.8 5.7 5.7L24 5.7 18.3 0zM48 20.2L39.7 12 48 3.7 44 0 36 8.3 27.7 0 24 4l8.3 8.2-8.2 8.3L28 24l8.2-8.3 8.3 8.2zM72 9h-9V0h-6v9h-9v6h9v9h6v-9h9z"/></svg>

After

Width:  |  Height:  |  Size: 319 B

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View 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
}
]
}

View File

@@ -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

View 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 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"/></svg>

After

Width:  |  Height:  |  Size: 727 B

View 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

View 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

View File

@@ -0,0 +1 @@
<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#000"><style>svg{animation:rotate .8s linear infinite;transform-origin:center center;}@keyframes rotate{100%{transform:rotate(360deg);}}</style><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><circle cx="22" cy="22" r="20" style="stroke-dasharray:50,200;"><animate attributeName="opacity" from="0" to="0" /></circle></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

1
public_html/img/logo.svg Normal file
View 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

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="166.5" height="24" viewBox="0 0 166.5 24" shape-rendering="crispEdges"><g transform="translate(0 -1028.362)"><path opacity=".3" fill="none" d="M9.8 1036h7.5v8.2H9.8zM0 1043.4h4.5v7.5H0z"/><path opacity=".3" fill="none" d="M6 1040.4h6v10.5H6z"/><rect width="4.5" height="7.5" y="1043.4" ry="0" opacity=".3" fill="#333"/><path opacity=".3" fill="#333" d="M6 1039h4.5v12H6zM12 1034.4h4.5v16.5H12zM18 1030h4.5v21H18z"/><path fill="#333" d="M24 1043.4h4.5v7.5H24z"/><path opacity=".3" fill="#333" d="M30 1039h4.5v12H30zM36 1034.4h4.5v16.5H36zM42 1030h4.5v21H42zM60 1034.4h4.5v16.5H60zM66 1030h4.5v21H66z"/><path fill="#333" d="M48 1043.4h4.5v7.5H48zM54 1039h4.5v12H54zM72 1043.4h4.5v7.5H72zM78 1039h4.5v12H78zM84 1034.4h4.5v16.5H84z"/><path opacity=".3" fill="#333" d="M90 1030h4.5v21H90z"/><path fill="#333" d="M96 1043.4h4.5v7.5H96zM102 1039h4.5v12H102zM108 1034.4h4.5v16.5H108zM114 1030h4.5v21H114z"/><path opacity=".3" fill="#333" d="M120 1043.4h4.5v7.5H120zM126 1039h4.5v12H126zM132 1034.4h4.5v16.5H132zM138 1030h4.5v21H138z"/><text style="line-height:125%" x="122.4" y="1048.3" font-size="30" font-family="sans-serif" letter-spacing="0" word-spacing="0" fill="#f44336"><tspan x="122.4" y="1048.3" style="-inkscape-font-specification:Arial" font-family="Arial">×</tspan></text><path d="M144 1051v-21h7.6v4.4H147v16.5z" fill="none"/><path d="M144 1052.4V1033h6v-4.6h10.5v4.5h6v19.4h-3v-6H162v6h-1.5v-6H159v6h-1.5v-6H156v6h-1.5v-6H153v6h-1.5v-6H150v6h-1.5v-6H147v6z" fill="#333" fill-rule="evenodd"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M9 12l-4.5 5L0 12h3a9 9 0 0 1 9-9c2.4 0 4.6 1 6.2 2.5l-2 2.2A6 6 0 0 0 12 6c-3.3 0-6 2.7-6 6h3zm10.5-5L15 12h3c0 3.3-2.7 6-6 6a6 6 0 0 1-4.2-1.7l-2 2.2A9 9 0 0 0 12 21a9 9 0 0 0 9-9h3l-4.5-5z"/></svg>

After

Width:  |  Height:  |  Size: 292 B

View 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

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.069 13h-4.069v-2h4.069c-.041.328-.069.661-.069 1s.028.672.069 1zm3.034-7.312l-2.881-2.881-1.414 1.414 2.881 2.881c.411-.529.885-1.003 1.414-1.414zm11.209 1.414l2.881-2.881-1.414-1.414-2.881 2.881c.528.411 1.002.886 1.414 1.414zm-6.312-3.102c.339 0 .672.028 1 .069v-4.069h-2v4.069c.328-.041.661-.069 1-.069zm0 16c-.339 0-.672-.028-1-.069v4.069h2v-4.069c-.328.041-.661.069-1 .069zm7.931-9c.041.328.069.661.069 1s-.028.672-.069 1h4.069v-2h-4.069zm-3.033 7.312l2.88 2.88 1.415-1.414-2.88-2.88c-.412.528-.886 1.002-1.415 1.414zm-11.21-1.415l-2.88 2.88 1.414 1.414 2.88-2.88c-.528-.411-1.003-.885-1.414-1.414zm2.312-4.897c0 2.206 1.794 4 4 4s4-1.794 4-4-1.794-4-4-4-4 1.794-4 4zm10 0c0 3.314-2.686 6-6 6s-6-2.686-6-6 2.686-6 6-6 6 2.686 6 6z"/></svg>

After

Width:  |  Height:  |  Size: 839 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22 12c0 5.514-4.486 10-10 10-4.826 0-8.864-3.436-9.797-7.99 3.573.142 6.903-1.818 8.644-5.013 1.202-2.206 1.473-4.679.83-6.992 5.608-.194 10.323 4.338 10.323 9.995zm-10-12c-1.109 0-2.178.162-3.197.444 3.826 5.933-2.026 13.496-8.781 11.128l-.022.428c0 6.627 5.373 12 12 12s12-5.373 12-12-5.373-12-12-12z"/></svg>

After

Width:  |  Height:  |  Size: 404 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2.396 12h-2.396v-2h2.396v2zm7.604-6.458v-3.542h-2v3.542h2zm-4.793.876l-2.156-2.156-1.414 1.414 2.156 2.156 1.414-1.414zm9.461-2.396l-2.115 2.114 1.414 1.414 2.115-2.114-1.414-1.414zm-11.7 10.907l-2.198 1.919 1.303 1.517 2.198-1.919-1.303-1.517zm21.032 2.793c0 2.362-1.95 4.278-4.354 4.278h-10.292c-2.404 0-4.354-1.916-4.354-4.278 0-.77.211-1.49.574-2.113-.964-.907-1.574-2.18-1.574-3.609 0-2.762 2.238-5 5-5 1.329 0 2.523.528 3.414 1.376.649-.24 1.35-.376 2.086-.376 3.171 0 5.753 2.443 5.921 5.516 2.034.359 3.579 2.105 3.579 4.206zm-18-5.722c0 .86.37 1.628.955 2.172.485-.316 1.029-.551 1.624-.656.088-1.61.843-3.042 1.994-4.046-.46-.288-.991-.47-1.573-.47-1.654 0-3 1.346-3 3zm16 5.722c0-2.076-1.979-2.618-3.489-2.512.218-1.439-.24-5.21-4.011-5.21-3.875 0-4.062 3.854-4.011 5.209-1.385-.084-3.489.395-3.489 2.513 0 1.256 1.056 2.278 2.354 2.278h10.291c1.299 0 2.355-1.022 2.355-2.278z"/></svg>

After

Width:  |  Height:  |  Size: 989 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.422 11.516c-.169-3.073-2.75-5.516-5.922-5.516-1.229 0-2.368.37-3.313.999-1.041-1.79-2.974-2.999-5.19-2.999-.468 0-.947.054-1.434.167 1.347 3.833-.383 6.416-4.563 5.812-.006 3.027 2.197 5.468 5.02 5.935.104 2.271 1.996 4.086 4.334 4.086h10.291c2.406 0 4.355-1.916 4.355-4.278 0-2.101-1.545-3.847-3.578-4.206zm-15.016 2.439c-1.285-.192-2.384-.997-2.964-2.125 2.916-.119 5.063-2.846 4.451-5.729 1.259.29 2.282 1.18 2.778 2.346-.635.875-1.031 1.928-1.094 3.069-1.419.251-2.588 1.186-3.171 2.439zm14.24 4.045h-10.292c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21 3.771 0 4.229 3.771 4.012 5.209 1.509-.105 3.488.437 3.488 2.513 0 1.256-1.057 2.278-2.354 2.278z"/></svg>

After

Width:  |  Height:  |  Size: 809 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 5c3.453 0 5.891 2.797 5.567 6.78 1.745-.046 4.433.751 4.433 3.72 0 1.93-1.57 3.5-3.5 3.5h-13c-1.93 0-3.5-1.57-3.5-3.5 0-2.797 2.479-3.833 4.433-3.72-.167-4.218 2.208-6.78 5.567-6.78zm0-2c-4.006 0-7.267 3.141-7.479 7.092-2.57.463-4.521 2.706-4.521 5.408 0 3.037 2.463 5.5 5.5 5.5h13c3.037 0 5.5-2.463 5.5-5.5 0-2.702-1.951-4.945-4.521-5.408-.212-3.951-3.473-7.092-7.479-7.092z"/></svg>

After

Width:  |  Height:  |  Size: 480 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.422 11.516c-.178-3.233-3.031-5.778-6.432-5.492-1.087-1.239-2.693-2.024-4.49-2.024-3.172 0-5.754 2.443-5.922 5.516-2.033.359-3.578 2.105-3.578 4.206 0 2.362 1.949 4.278 4.354 4.278h1.326c.771 1.198 2.124 2 3.674 2h10.291c2.406 0 4.355-1.916 4.355-4.278 0-2.101-1.545-3.847-3.578-4.206zm-15.395 4.484h-.673c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21.967 0 1.714.25 2.29.644-1.823.922-3.096 2.746-3.212 4.872-2.022.358-3.697 2.127-3.551 4.484zm14.618 2h-10.291c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21 3.771 0 4.229 3.771 4.012 5.209 1.509-.105 3.488.437 3.488 2.513 0 1.256-1.057 2.278-2.355 2.278z"/></svg>

After

Width:  |  Height:  |  Size: 807 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.422 8.516c-.178-3.233-3.031-5.778-6.432-5.492-1.087-1.239-2.693-2.024-4.49-2.024-3.172 0-5.754 2.443-5.922 5.516-2.033.359-3.578 2.105-3.578 4.206 0 2.362 1.949 4.278 4.354 4.278h1.326c.771 1.198 2.124 2 3.674 2h10.291c2.406 0 4.355-1.916 4.355-4.278 0-2.101-1.545-3.847-3.578-4.206zm-15.395 4.484h-.673c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21.967 0 1.714.25 2.29.644-1.823.922-3.096 2.746-3.212 4.872-2.022.358-3.697 2.127-3.551 4.484zm14.618 2h-10.291c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21 3.771 0 4.229 3.771 4.012 5.209 1.509-.105 3.488.437 3.488 2.513 0 1.256-1.057 2.278-2.355 2.278zm-14.063 8l-1.41-1.41 3.59-3.59 1.41 1.41-3.59 3.59zm8.543-3.59l-1.41-1.41-3.59 3.59 1.41 1.41 3.59-3.59zm4.875 0l-1.41-1.41-3.59 3.59 1.41 1.41 3.59-3.59z"/></svg>

After

Width:  |  Height:  |  Size: 961 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M2.396 9h-2.396v-2h2.396v2zm7.604-6.458v-2.542h-2v2.542h2zm-4.793.876l-1.859-1.859-1.414 1.414 1.859 1.859 1.414-1.414zm9.222-2.156l-1.875 1.875 1.414 1.414 1.875-1.875-1.414-1.414zm-11.46 10.667l-2.053 1.773 1.303 1.517 2.053-1.773-1.303-1.517zm21.031 2.793c0 2.362-1.949 4.278-4.354 4.278h-10.292c-2.405 0-4.354-1.916-4.354-4.278 0-.77.211-1.49.574-2.113-.965-.907-1.574-2.18-1.574-3.609 0-2.762 2.238-5 5-5 1.328 0 2.523.528 3.414 1.376.648-.24 1.35-.376 2.086-.376 3.172 0 5.753 2.443 5.922 5.516 2.033.359 3.578 2.105 3.578 4.206zm-18-5.722c0 .86.37 1.628.955 2.172.484-.316 1.029-.551 1.623-.656.089-1.61.844-3.042 1.994-4.046-.459-.288-.99-.47-1.572-.47-1.654 0-3 1.346-3 3zm16 5.722c0-2.076-1.979-2.618-3.488-2.512.217-1.439-.241-5.21-4.012-5.21-3.875 0-4.062 3.854-4.012 5.209-1.384-.084-3.488.395-3.488 2.513 0 1.256 1.057 2.278 2.354 2.278h10.291c1.298 0 2.355-1.022 2.355-2.278zm-15.58 9.278l-1.41-1.41 2.59-2.59 1.41 1.41-2.59 2.59zm7.543-2.59l-1.41-1.41-2.59 2.59 1.41 1.41 2.59-2.59zm4.875 0l-1.41-1.41-2.59 2.59 1.41 1.41 2.59-2.59z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.422 9.516c-.169-3.073-2.75-5.516-5.922-5.516-1.229 0-2.368.37-3.313.999-1.041-1.79-2.974-2.999-5.19-2.999-.468 0-.947.054-1.434.167 1.347 3.833-.383 6.416-4.563 5.812-.006 3.027 2.197 5.468 5.02 5.935.104 2.271 1.996 4.086 4.334 4.086h10.291c2.406 0 4.355-1.916 4.355-4.278 0-2.101-1.545-3.847-3.578-4.206zm-15.016 2.439c-1.285-.192-2.384-.997-2.964-2.125 2.916-.12 5.064-2.846 4.452-5.729 1.259.29 2.282 1.18 2.778 2.346-.635.875-1.031 1.928-1.094 3.069-1.42.251-2.589 1.186-3.172 2.439zm14.24 4.045h-10.292c-1.297 0-2.354-1.022-2.354-2.278 0-2.118 2.104-2.597 3.488-2.512-.05-1.356.137-5.21 4.012-5.21 3.771 0 4.229 3.771 4.012 5.209 1.509-.105 3.488.437 3.488 2.513 0 1.256-1.057 2.278-2.354 2.278zm-13.226 7l-1.41-1.41 2.59-2.59 1.41 1.41-2.59 2.59zm7.543-2.59l-1.41-1.41-2.59 2.59 1.41 1.41 2.59-2.59zm4.875 0l-1.41-1.41-2.59 2.59 1.41 1.41 2.59-2.59z"/></svg>

After

Width:  |  Height:  |  Size: 961 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13.802 13h3.042l-1.844 4h3l-6 7 2-5h-3l2.802-6zm6.62-5.484c-.178-3.232-3.031-5.777-6.432-5.491-1.087-1.24-2.693-2.025-4.49-2.025-3.172 0-5.754 2.443-5.922 5.516-2.033.359-3.578 2.105-3.578 4.206 0 2.362 1.949 4.278 4.354 4.278h1.326c.771 1.198 2.124 2 3.674 2h1.381l.935-2h-2.316c-1.297 0-2.354-1.021-2.354-2.278 0-2.118 2.104-2.597 3.488-2.513-.05-1.355.137-5.209 4.012-5.209 3.771 0 4.229 3.771 4.012 5.209 1.509-.105 3.488.437 3.488 2.513 0 1.257-1.057 2.278-2.355 2.278h-1.598l-.922 2h2.52c2.406 0 4.355-1.916 4.355-4.278 0-2.101-1.545-3.847-3.578-4.206zm-11.844 0c-2.022.357-3.697 2.127-3.551 4.484h-.673c-1.297 0-2.354-1.021-2.354-2.278 0-2.118 2.104-2.597 3.488-2.513-.05-1.355.137-5.209 4.012-5.209.967 0 1.714.25 2.29.645-1.823.921-3.096 2.745-3.212 4.871z"/></svg>

After

Width:  |  Height:  |  Size: 867 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M14 19.25c0 .689-.559 1.25-1.25 1.25s-1.25-.561-1.25-1.25.559-1.25 1.25-1.25 1.25.561 1.25 1.25zm-3.75 1.25c-.691 0-1.25.561-1.25 1.25s.559 1.25 1.25 1.25 1.25-.561 1.25-1.25-.559-1.25-1.25-1.25zm8.75-1.25c0 .689-.559 1.25-1.25 1.25s-1.25-.561-1.25-1.25.559-1.25 1.25-1.25 1.25.561 1.25 1.25zm-3.75 1.25c-.691 0-1.25.561-1.25 1.25s.559 1.25 1.25 1.25 1.25-.561 1.25-1.25-.559-1.25-1.25-1.25zm-6.25-1.25c0 .689-.559 1.25-1.25 1.25s-1.25-.561-1.25-1.25.559-1.25 1.25-1.25 1.25.561 1.25 1.25zm-3.75 1.25c-.691 0-1.25.561-1.25 1.25s.559 1.25 1.25 1.25 1.25-.561 1.25-1.25-.559-1.25-1.25-1.25zm18.75-7.778c0 2.362-1.949 4.278-4.355 4.278h-10.291c-1.55 0-2.902-.802-3.674-2h-1.326c-2.405 0-4.354-1.916-4.354-4.278 0-2.101 1.545-3.847 3.578-4.206.168-3.073 2.75-5.516 5.922-5.516 1.797 0 3.403.785 4.49 2.024 3.4-.286 6.254 2.259 6.432 5.491 2.033.36 3.578 2.106 3.578 4.207zm-15.422-4.206c.116-2.126 1.389-3.95 3.212-4.871-.576-.395-1.323-.645-2.29-.645-3.875 0-4.062 3.854-4.012 5.209-1.384-.084-3.488.395-3.488 2.513 0 1.257 1.057 2.278 2.354 2.278h.674c-.147-2.357 1.528-4.127 3.55-4.484zm13.422 4.206c0-2.075-1.979-2.618-3.488-2.513.217-1.438-.241-5.209-4.012-5.209-3.875 0-4.062 3.854-4.012 5.209-1.384-.084-3.488.395-3.488 2.513 0 1.257 1.057 2.278 2.354 2.278h10.291c1.298 0 2.355-1.021 2.355-2.278zm-5.521-3.97l-1.479.881v-1.633h-1v1.633l-1.494-.896-.506.867 1.499.896-1.499.865.537.867 1.463-.865v1.633h1v-1.633l1.467.869.533-.867-1.499-.869 1.499-.881-.521-.867z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20 14v2h-16v-2h16zm-20-3v2h24v-2h-24zm0 8h24v-2h-24v2zm20-11h-16v2h16v-2zm-20-3v2h24v-2h-24z"/></svg>

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View 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&uuml;r das Feedback m&uuml;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 = '&amp;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&ouml;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 &ouml;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;
});

4
public_html/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
public_html/js/main.js Normal file
View 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();
});
});

View File

@@ -0,0 +1,43 @@
function show_error(msg)
{
jQuery('div.dummy-1').html('<strong class="red">' + msg + '</strong>');
}
jQuery(document).on('click', 'a[href=#refresh]', function(e)
{
if (jQuery('a[href=#refresh]').css('opacity') == 1)
{
var _this = this;
var _interface = jQuery(this).attr('name');
jQuery('a[href=#refresh]').not(this).animate({opacity: 0.2}, 300);
jQuery(this).find('span').addClass('rotate-icon');
jQuery('div.dummy-1 .inner-header span').text('Status (' + _interface + ')');
jQuery('div.dummy-1 .inner').html('<strong>' + _t('Das Interface wird neu gestartet...') + '</strong>');
jQuery('div.dummy-1').slideDown('fast');
jQuery.post('api/v1/network_configuration_interface.php', { interface: _interface }, function(data)
{
if (data.status == 200)
{
jQuery('div.dummy-1 .inner').html('<strong class="green">' + _t('Das Interface wurde neu gestartet.') + '</strong>');
jQuery('a[href=#refresh]').not(_this).animate({opacity: 1}, 300);
jQuery(_this).find('span').removeClass('rotate-icon');
}
else
{
show_error(_t('Es ist ein unerwarteter Fehler aufgetreten!'));
return false;
}
}).fail(function(e)
{
show_error(_t('Es ist ein Fehler aufgetreten! Vermutlich wurde die Verbindung getrennt.'));
return false;
});
}
else
alert(_t('Es kann nur ein Interface zeitgleich neu gestartet werden.'));
return false;
});

View File

@@ -0,0 +1,7 @@
jQuery(document).on('change', 'select[name=method]', function()
{
if (jQuery('select[name=method] option:selected').index() == 1)
jQuery('.hidden-method').show('fast');
else
jQuery('.hidden-method').hide('fast');
});

View File

@@ -0,0 +1,97 @@
var dummy2Msg = '';
function showError(msg)
{
if (msg != undefined)
{
console.log(msg);
jQuery('div.dummy-3 strong span').html(msg.data.errorMsg);
}
else
{
alert(_t('Es ist ein unerwarteter Fehler aufgetreten!'));
jQuery('div.dummy-3 strong span').html(_t('Es ist ein unerwarteter Fehler aufgetreten!'));
}
jQuery('div.dummy-2').slideUp('fast');
jQuery('div.dummy-3').slideDown('fast');
}
jQuery(document).on('click', 'input[name=submit]', function(e)
{
if (jQuery('input[name=password]').length == 1 && jQuery('input[name=password]').val().length < 8 && jQuery('input[name=password]').attr('data') == null)
{
alert(_t('Das Passwort sollte mindestens 8 Zeichen betragen.'));
return false;
}
if (jQuery('input[name=password]').length == 1)
jQuery('input[name=password]').prop('disabled', true);
if (dummy2Msg == '')
dummy2Msg = jQuery('div.dummy-2 strong').html();
else
jQuery('div.dummy-2 strong').html(dummy2Msg);
jQuery('div.dummy-1').slideUp('fast');
jQuery('div.dummy-2').slideDown('fast');
jQuery.post('api/v1/network_connect_wlan.php', { type: 'set', interface: _interface, ssid: _ssid, psk: jQuery('input[name=password]').val() }, function(data)
{
if (data.status == 200)
jQuery('div.dummy-2 strong').html(_t('Verbindung wird getrennt...'));
else
{
showError(data);
return false;
}
jQuery.post('api/v1/network_connect_wlan.php', { type: 'down', interface: _interface }, function(data)
{
if (data.status == 200)
jQuery('div.dummy-2 strong').html(_t('Verbindung wird wieder hergestellt...'));
else
{
showError(data);
return false;
}
jQuery.post('api/v1/network_connect_wlan.php', { type: 'up', interface: _interface }, function(data)
{
if (data.status == 200)
jQuery('div.dummy-2 strong').html(_t('Ermittle IP-Adresse von Verbindung...'));
else
{
showError(data);
return false;
}
jQuery.post('api/v1/network_connect_wlan.php', { type: 'get', interface: _interface }, function(data)
{
if (data.data.ip != 'no ip')
{
jQuery('div.dummy-2 span').removeClass('svg-network-signal-animate').addClass('svg-network-signal-100');
jQuery('div.dummy-2 strong').html(_t('Verbindung mit "%%s" war erfolgreich.', _ssid)).addClass('green');
jQuery('div.dummy-2').append('<br /><br /><strong>' + _t('IP-Adresse') + ':</strong> <a href="http://'+data.data.ip+'" target="_blank">'+data.data.ip+'</a>');
}
else
{
showError(data);
return false;
}
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
return false;
});
jQuery(document).on('click', 'a[href=#try_again]', function(e)
{
jQuery('input[name=password]').prop('disabled', false);
jQuery('div.dummy-3').slideUp('fast');
jQuery('div.dummy-1').slideDown('fast');
return false;
});

View File

@@ -0,0 +1,138 @@
var is_loding = false;
function overviewStatusRefreshEffect(element)
{
element.css({'transition': 'background-color 0.5s', 'background-color': 'rgba(243, 255, 164, 1)'});
setTimeout(function(){
element.css({'background-color': 'transparent'});
}, 800);
}
function showError()
{
jQuery('.error-msg-refresh-bar').remove();
jQuery('.flex-box-refresh div:eq(0)').after('<div class="red error-msg-refresh-bar" style="vertical-align: bottom; font-weight: bold;">' + _t('Fehler!') + '</div>');
jQuery('.refresh-bar').stop(false, true).css('width', 0);
jQuery('a[href=#refresh] img').removeClass('rotate-icon');
setTimeout('overviewStatusRefresh()', 3000);
}
function overviewStatusRefresh()
{
jQuery('.error-msg-refresh-bar').remove();
jQuery('.refresh-bar').animate({width: '100%'}, reload_timeout, 'linear', function(e)
{
var this_ = jQuery(this);
var runtime = jQuery('.flex-container > div:eq(2)');
var cpuClock = jQuery('.flex-container > div:eq(3)');
var cpuLoad = jQuery('.flex-container > div:eq(4)');
var cpuTemp = jQuery('.flex-container > div:eq(5)');
var ramPercentage = jQuery('.flex-container > div:eq(6)');
var memoryUsed = jQuery('.flex-container > div:eq(7)');
var memoryFree = jQuery('.flex-container > div:eq(8)');
var memoryTotal = jQuery('.flex-container > div:eq(9)');
jQuery('a[href=#refresh] img').addClass('rotate-icon');
this_.animate({width: '88.8%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'runtime' }, function(data)
{
if (runtime.find('span').html() != data.data.runtime)
{
overviewStatusRefreshEffect(runtime);
runtime.find('span').html(data.data.runtime);
}
this_.animate({width: '77.7%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'cpuClock' }, function(data)
{
if (cpuClock.find('span').html() != data.data.cpuClock+' MHz')
{
overviewStatusRefreshEffect(cpuClock);
cpuClock.find('span').html(data.data.cpuClock+' MHz');
}
this_.animate({width: '66.6%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'cpuLoad' }, function(data)
{
if (cpuLoad.find('.progressbar div').html() != data.data.cpuLoad+'%')
{
overviewStatusRefreshEffect(cpuLoad);
cpuLoad.find('.progressbar').attr('data-text', data.data.cpuLoad+'%').find('div').css('width', data.data.cpuLoad+'%');
}
this_.animate({width: '55.5%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'cpuTemp' }, function(data)
{
if (cpuTemp.find('span').html() != data.data.cpuTemp+' °C')
{
overviewStatusRefreshEffect(cpuTemp);
cpuTemp.find('span').html(data.data.cpuTemp+' &deg;C');
}
this_.animate({width: '44.4%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'ramPercentage' }, function(data)
{
if (ramPercentage.find('.progressbar div').html() != data.data.ramPercentage+'%')
{
overviewStatusRefreshEffect(ramPercentage);
ramPercentage.find('.progressbar').attr('data-text', data.data.ramPercentage+'%').find('div').css('width', data.data.ramPercentage+'%');
}
this_.animate({width: '33.3%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'memoryUsed' }, function(data)
{
if (memoryUsed.find('span').html() != data.data.memoryUsed)
{
overviewStatusRefreshEffect(memoryUsed);
memoryUsed.find('span').html(data.data.memoryUsed);
}
this_.animate({width: '22.2%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'memoryFree' }, function(data)
{
if (memoryFree.find('span').html() != data.data.memoryFree)
{
overviewStatusRefreshEffect(memoryFree);
memoryFree.find('span').html(data.data.memoryFree);
}
this_.animate({width: '11.1%'}, 300, 'linear');
jQuery.post('api/v1/overview.php', { data: 'memoryTotal' }, function(data)
{
if (memoryTotal.find('span').html() != data.data.memoryTotal)
{
overviewStatusRefreshEffect(memoryTotal);
memoryTotal.find('span').html(data.data.memoryTotal);
}
this_.animate({width: '0%'}, 300, 'linear', function(e) {
is_loding = false;
jQuery('a[href=#refresh] img').removeClass('rotate-icon');
});
overviewStatusRefresh();
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
}).fail(function(e) { showError(); });
});
}
jQuery(document).on('click', 'a[href=#refresh]', function(e)
{
if (is_loding == false)
jQuery('.refresh-bar').stop(false, true);
return false;
});
jQuery(document).ready(function(e)
{
overviewStatusRefresh();
});

View File

@@ -0,0 +1,70 @@
function toggleVisibilityWeatherLocationTyps(service)
{
switch (service)
{
case 'darksky':
jQuery('input[name=weather-service-token]').attr('maxlength', 32).show();
jQuery('.weather-location-type-postcode').hide();
jQuery('.weather-location-type-city').hide();
jQuery('.weather-location-type-coordinates').show();
break;
case 'openweathermap':
jQuery('input[name=weather-service-token]').attr('maxlength', 32).show();
jQuery('.weather-location-type-postcode').show();
jQuery('.weather-location-type-city').show();
jQuery('.weather-location-type-coordinates').hide();
break;
case 'wunderground':
jQuery('input[name=weather-service-token]').attr('maxlength', 16).show();
jQuery('.weather-location-type-postcode').hide();
jQuery('.weather-location-type-city').show();
jQuery('.weather-location-type-coordinates').show();
break;
case 'yahoo':
jQuery('input[name=weather-service-token]').hide();
jQuery('.weather-location-type-postcode').show();
jQuery('.weather-location-type-city').show();
jQuery('.weather-location-type-coordinates').hide();
break;
case 'yr':
jQuery('input[name=weather-service-token]').hide();
jQuery('.weather-location-type-postcode').show();
jQuery('.weather-location-type-city').show();
jQuery('.weather-location-type-coordinates').hide();
break;
}
}
jQuery(document).on('change', 'select[name="weather-service"]', function (e)
{
var service = jQuery(this).val();
jQuery('.weather-service-link').attr('href', jQuery(this).find('option:selected').data('url'));
jQuery('input[name=weather-service-token]').val('');
toggleVisibilityWeatherLocationTyps(service);
switch (service)
{
case 'darksky':
jQuery('#cb-weather-location-coordinates').prop('checked', true );
break;
case 'openweathermap':
jQuery('#cb-weather-location-postcode').prop('checked', true );
break;
case 'wunderground':
jQuery('#cb-weather-location-city').prop('checked', true );
break;
case 'yahoo':
jQuery('#cb-weather-location-postcode').prop('checked', true );
break;
case 'yr':
jQuery('#cb-weather-location-postcode').prop('checked', true );
break;
}
});
jQuery(function()
{
jQuery('.weather-service-link').attr('href', jQuery('select[name="weather-service"]').find('option:selected').data('url'));
toggleVisibilityWeatherLocationTyps(jQuery('select[name="weather-service"]').val());
});

View File

@@ -0,0 +1,73 @@
jQuery(document).on('click', 'input[name=theme-color] + label', function(e)
{
switch (jQuery(this).attr('for').substr(3))
{
case 'red':
var color = new Array('#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C');
break;
case 'pink':
var color = new Array('#FCE4EC', '#F8BBD0', '#F48FB1', '#F06292', '#EC407A', '#E91E63', '#D81B60', '#C2185B', '#AD1457', '#880E4F');
break;
case 'purple':
var color = new Array('#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C');
break;
case 'deepPurple':
var color = new Array('#EDE7F6', '#D1C4E9', '#B39DDB', '#9575CD', '#7E57C2', '#673AB7', '#5E35B1', '#512DA8', '#4527A0', '#311B92');
break;
case 'indigo':
var color = new Array('#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E');
break;
case 'blue':
var color = new Array('#E3F2FD', '#BBDEFB', '#90CAF9', '#64B5F6', '#42A5F5', '#2196F3', '#1E88E5', '#1976D2', '#1565C0', '#0D47A1');
break;
case 'lightBlue':
var color = new Array('#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B');
break;
case 'cyan':
var color = new Array('#E0F7FA', '#B2EBF2', '#80DEEA', '#4DD0E1', '#26C6DA', '#00BCD4', '#00ACC1', '#0097A7', '#00838F', '#006064');
break;
case 'teal':
var color = new Array('#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40');
break;
case 'green':
var color = new Array('#E8F5E9', '#C8E6C9', '#A5D6A7', '#81C784', '#66BB6A', '#4CAF50', '#43A047', '#388E3C', '#2E7D32', '#1B5E20');
break;
case 'lightGreen':
var color = new Array('#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E');
break;
case 'lime':
var color = new Array('#F9FBE7', '#F0F4C3', '#E6EE9C', '#DCE775', '#D4E157', '#CDDC39', '#C0CA33', '#AFB42B', '#9E9D24', '#827717');
break;
case 'yellow':
var color = new Array('#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17');
break;
case 'amber':
var color = new Array('#FFF8E1', '#FFECB3', '#FFE082', '#FFD54F', '#FFCA28', '#FFC107', '#FFB300', '#FFA000', '#FF8F00', '#FF6F00');
break;
case 'orange':
var color = new Array('#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100');
break;
case 'deepOrange':
var color = new Array('#FBE9E7', '#FFCCBC', '#FFAB91', '#FF8A65', '#FF7043', '#FF5722', '#F4511E', '#E64A19', '#D84315', '#BF360C');
break;
case 'brown':
var color = new Array('#EFEBE9', '#D7CCC8', '#BCAAA4', '#A1887F', '#8D6E63', '#795548', '#6D4C41', '#5D4037', '#4E342E', '#3E2723');
break;
case 'grey':
var color = new Array('#FAFAFA', '#F5F5F5', '#EEEEEE', '#E0E0E0', '#BDBDBD', '#9E9E9E', '#757575', '#616161', '#424242', '#212121');
break;
case 'blueGrey':
var color = new Array('#ECEFF1', '#CFD8DC', '#B0BEC5', '#90A4AE', '#78909C', '#607D8B', '#546E7A', '#455A64', '#37474F', '#263238');
break;
}
jQuery('a').css('color', color[9]);
jQuery('#header-navi > a, #header-navi > div > a').css('color', '#FFFFFF');
jQuery('.header-top-inner-cell a').css('color', '#DDDDDD');
jQuery('#header').css('background-color', color[7]);
jQuery('#header-top').css('background-color', color[8]);
jQuery('.box .inner-header span').css('color', color[7]);
jQuery('.table-form tr:nth-child(even)').css('background-color', color[0]);
jQuery('input[type="button"], button, input[type="submit"], .button').css('border-color', color[7]);
jQuery('input[type="button"], button, input[type="submit"], .button').css('color', color[8]);
});

View File

@@ -0,0 +1,15 @@
function selecttxt(objId)
{
if (document.selection)
{
var range = document.body.createTextRange();
range.moveToElementText(document.getElementById(objId));
range.select();
}
else if (window.getSelection)
{
var range = document.createRange();
range.selectNode(document.getElementById(objId));
window.getSelection().addRange(range);
}
}

View File

@@ -0,0 +1,34 @@
var shutdown = false;
function ping()
{
var jsonData = jQuery.ajax(
{
url: 'api/v1/ping.php',
dataType:"json",
async: true,
timeout: 5000
}).done(function(data)
{
if (shutdown == true)
{
jQuery('.inner strong').text(_t('Online - Du wirst sofort weitergeleitet'));
setTimeout('window.document.location.href = \'?s=overview\'', 2000);
}
jQuery('.inner strong').addClass('green').removeClass('red');
setTimeout('ping()', 5000);
}).error(function(data)
{
jQuery('.inner strong').text(_t('Offline'));
shutdown = true;
jQuery('.inner strong').addClass('red').removeClass('green');
setTimeout('ping()', 5000);
});
}
jQuery(document).on('ready', function(e)
{
ping();
});

View File

@@ -0,0 +1,116 @@
var dataSlider = [];
var dataPeriods = [];
function statisticBuilder(builder, plugin)
{
var jsonData = jQuery.ajax({
url: 'api/v1/statistic.php',
method: 'POST',
data: { id: builder.id, plugin: plugin, type: 'googleChart' },
dataType: 'json',
async: true
}).done(function(data)
{
if (data.error != null)
{
if (data.error.message == 'Empty data.')
jQuery('#chart_log_'+builder.id).html('<br /><br /><strong class="red">' + _t('Es sind noch keine Werte verf&uuml;gbar. Werte werden alle %%s Minuten eingetragen.', builder.cycle) + '</strong>');
else
jQuery('#chart_log_'+builder.id).html('<br /><br /><strong class="red">' + _t('Es ist ein Fehler aufgetreten! Fehler: %%s', data.error.message) + '</strong>');
return;
}
dataPeriods[builder.id] = data.data.statistic.periods;
var myData = new google.visualization.DataTable(data.data.statistic);
jQuery('#chart_log_'+builder.id).html('');
var myDashboard = new google.visualization.Dashboard(document.getElementById('dashboard_log_'+builder.id));
dataSlider[builder.id] = new google.visualization.ControlWrapper({
'controlType': 'DateRangeFilter',
'containerId': 'chart_control_log_'+builder.id,
'options': {
'filterColumnLabel': _t('Zeit'),
'ui': {
'step': 'hour',
'label': '',
'format': { 'pattern': 'dd.MM. HH:mm' }
}
}
});
var t = null;
var myLine = new google.visualization.ChartWrapper({
'chartType' : 'AreaChart',
'containerId' : 'chart_log_'+builder.id,
'options': {
vAxis: { title: builder.label, viewWindow: { max: data.data.statistic.max, min: data.data.statistic.min }, textPosition: 'in', textStyle: { fontSize: 11, color: '#AAAAAA' }, titleTextStyle: { fontSize: 11, color: '#AAAAAA' }, gridlines: { color: '#fff' } },
dateFormat: 'dd.MM.yy HH:mm',
hAxis: { format: 'dd.MM. HH:mm', textPosition: 'out', gridlines: { color: '#fff' } , textStyle: { fontSize: 11, color: '#AAAAAA' }},
focusTarget: 'category',
crosshair: { orientation: 'vertical', trigger: 'both', color: '#AAAAAA', opacity: 0.4 },
chartArea: { width: '100%', height: '80%', top: 0 },
height: 200,
legend: { position: 'bottom', alignment: 'end', textStyle: { fontSize: 11, color: '#AAAAAA' } },
axisTitlesPosition: 'in',
seriesType: 'area',
series:
{
0: {
type: (typeof builder.columns[1] != 'undefined' && typeof builder.columns[1].style != 'undefined' && typeof builder.columns[1].style.type != 'undefined') ? builder.columns[1].style.type : null,
color: (typeof builder.columns[1] != 'undefined' && typeof builder.columns[1].style != 'undefined' && typeof builder.columns[1].style.color != 'undefined') ? builder.columns[1].style.color : null,
lineDashStyle: (typeof builder.columns[1] != 'undefined' && typeof builder.columns[1].style != 'undefined' && typeof builder.columns[1].style.lineDashStyle != 'undefined') ? [builder.columns[1].style.lineDashStyle, builder.columns[1].style.lineDashStyle] : null
},
1: {
type: (typeof builder.columns[2] != 'undefined' && typeof builder.columns[2].style != 'undefined' && typeof builder.columns[2].style.type != 'undefined') ? builder.columns[2].style.type : null,
color: (typeof builder.columns[2] != 'undefined' && typeof builder.columns[2].style != 'undefined' && typeof builder.columns[2].style.color != 'undefined') ? builder.columns[2].style.color : null,
lineDashStyle: (typeof builder.columns[2] != 'undefined' && typeof builder.columns[2].style != 'undefined' && typeof builder.columns[2].style.lineDashStyle != 'undefined') ? [builder.columns[2].style.lineDashStyle, builder.columns[2].style.lineDashStyle] : null
},
2: {
type: (typeof builder.columns[3] != 'undefined' && typeof builder.columns[3].style != 'undefined' && typeof builder.columns[3].style.type != 'undefined') ? builder.columns[3].style.type : null,
color: (typeof builder.columns[3] != 'undefined' && typeof builder.columns[3].style != 'undefined' && typeof builder.columns[3].style.color != 'undefined') ? builder.columns[3].style.color : null,
lineDashStyle: (typeof builder.columns[3] != 'undefined' && typeof builder.columns[3].style != 'undefined' && typeof builder.columns[3].style.lineDashStyle != 'undefined') ? [builder.columns[3].style.lineDashStyle, builder.columns[3].style.lineDashStyle] : null
},
3: {
type: (typeof builder.columns[4] != 'undefined' && typeof builder.columns[4].style != 'undefined' && typeof builder.columns[4].style.type != 'undefined') ? builder.columns[4].style.type : null,
color: (typeof builder.columns[4] != 'undefined' && typeof builder.columns[4].style != 'undefined' && typeof builder.columns[4].style.color != 'undefined') ? builder.columns[4].style.color : null,
lineDashStyle: (typeof builder.columns[4] != 'undefined' && typeof builder.columns[4].style != 'undefined' && typeof builder.columns[4].style.lineDashStyle != 'undefined') ? [builder.columns[4].style.lineDashStyle, builder.columns[4].style.lineDashStyle] : null
},
}
}
});
var formatter = new google.visualization.NumberFormat({ suffix: ' '+builder.unit });
for (var i = 1; i < builder.columns.length; i++)
formatter.format(myData, i);
myDashboard.bind(dataSlider[builder.id], myLine);
myDashboard.draw(myData);
}).fail(function(xhr, textStatus)
{
jQuery('#chart_log_'+builder.id).html('<br /><br /><strong class="red">' + _t('Es ist ein Fehler aufgetreten! Fehlercode: %%s', xhr.status) + '</strong>');
});
}
function changeRange(dropdown)
{
var days = Array('seven', 'six', 'five', 'four', 'three', 'two', 'one');
var day = dropdown.value;
if (days.indexOf(day) > -1)
{
for (var data in dataSlider)
{
if (typeof dataSlider[data] != 'undefined')
{
dataSlider[data].setState({'lowValue': new Date(dataPeriods[data][day])});
dataSlider[data].draw();
}
}
}
}

View File

@@ -0,0 +1,122 @@
jQuery(document).on('ready', function(e)
{
var msgBuffer = '';
var wsUri = 'ws://' + ip + ':' + port+ '/?' + cookie;
websocket = new WebSocket(wsUri);
websocket.onopen = function(ev)
{
jQuery('#status').text(_t('Verbindung herstellen...'));
}
function sendCommand()
{
var mymessage = jQuery('#command').val();
if(mymessage == '')
{
alert(_t('Bitte gebe einen Befehl ein!'));
return;
}
var msg = { message: mymessage };
websocket.send(JSON.stringify(msg));
jQuery('#command').val('');
}
function sendCancel()
{
var mymessage = '^C';
var msg = { message: mymessage };
websocket.send(JSON.stringify(msg));
}
jQuery(document).on('click', '#submit', function(e)
{
sendCommand();
});
jQuery(document).on('keydown', '#command', function(e)
{
if (e.keyCode == 13)
sendCommand();
if ((e.metaKey || e.ctrlKey) && (String.fromCharCode(e.which).toLowerCase() === 'c'))
sendCancel();
});
jQuery(document).on('click', 'input[name=close]', function(e)
{
var mymessage = '^PI';
var msg = { message: mymessage };
websocket.send(JSON.stringify(msg));
});
jQuery(document).on('click', '#cancel', function(e)
{
sendCancel();
});
websocket.onmessage = function(ev)
{
var msg = JSON.parse(ev.data);
var type = msg.type;
var umsg = msg.message;
if(type == 'console')
{
jQuery('#terminal').append('<span class="console">' + umsg + '</span>');
jQuery('#terminal').animate({scrollTop: jQuery('#terminal')[0].scrollHeight}, 'fast');
}
if(type == 'system')
{
umsg = (umsg == 'connected') ? _t('Verbunden') : umsg;
jQuery('#status').text(umsg);
jQuery('#command').removeAttr('disabled');
msgBuffer = umsg;
jQuery('select[name=terminal] option[value=' + port + ']').text(jQuery('select[name=terminal] option[value=' + port + ']').text().substr(0, 11) + '(' + _t('Online') + ')');
jQuery('select[name=terminal] option[value=' + port + ']').css('background-color', '#73CA3C');
}
};
websocket.onerror = function(ev)
{
jQuery('#status').text(_t('Fehler aufgetreten!'));
jQuery('#command').attr('disabled', 'disabled');
jQuery('input[name=close]').attr('name', 'reload').val(_t('Verbindung erneut herstellen'));
};
websocket.onclose = function(ev)
{
if (msgBuffer == 'newSession')
jQuery('#status').html(_t('Verbindung getrennt<br />(Anmeldung an anderem Fenster)'));
else if (msgBuffer == 'denied')
jQuery('#status').html(_t('Verbindung getrennt<br />(Keine Berechtigung)'));
else
{
jQuery('#status').text(_t('Verbindung getrennt'));
jQuery('select[name=terminal] option[value=' + port + ']').text(jQuery('select[name=terminal] option[value=' + port + ']').text().substr(0, 11) + '(' + _t('Offline') + ')');
jQuery('select[name=terminal] option[value=' + port + ']').css('background-color', '#E9492E');
}
jQuery('#command').attr('disabled', 'disabled');
jQuery('input[name=close]').attr('name', 'reload').val(_t('Verbindung erneut herstellen'));
};
jQuery(document).on('change', 'select[name=terminal]', function(e)
{
window.document.location.href = '?s=terminal&port=' + this.value;
});
jQuery(document).on('click', 'input[name=reload]', function(e)
{
window.document.location.href = '?s=terminal&port=' + port;
});
jQuery("#frame").load('resources/library/terminal/terminal.php?port=' + port);
});

View 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;
}

View File

@@ -0,0 +1,195 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Detaillierte &Uuml;bersicht'); ?></span>
<?php showGoBackIcon('?s=overview'); ?>
</div>
<div class="inner">
<span class="subtitle"><?php _e('Allgemein'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('Raspberry Pi Modell'); ?></td>
<td><?php echo $data['revision']['model']; ?></td>
</tr>
<tr>
<td><?php _e('Hersteller'); ?></td>
<td><?php echo $data['revision']['manufacturer']; ?></td>
</tr>
<tr>
<td><?php _e('Revision'); ?></td>
<td><?php echo $data['revision']['revision']; ?></td>
</tr>
<tr>
<td><?php _e('PCB Revision (Bauserie)'); ?></td>
<td><?php echo $data['revision']['pcb']; ?></td>
</tr>
<tr>
<td><?php _e('Seriennummer'); ?></td>
<td><?php echo $data['serial']; ?></td>
</tr>
<tr>
<td><?php _e('Aktuelle Zeit'); ?></td>
<td><?php echo $data['time']; ?></td>
</tr>
<tr>
<td><?php _e('Aktuelle Zeitzone'); ?></td>
<td><?php echo $data['timezone']; ?></td>
</tr>
<tr>
<td><?php _e('Laufzeit'); ?></td>
<td><?php echo $data['run_time']; ?></td>
</tr>
<tr>
<td><?php _e('Letzter Start'); ?></td>
<td><?php echo $data['start_time']; ?></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('Software'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('Distribution'); ?></td>
<td><?php echo $data['distribution']; ?></td>
</tr>
<tr>
<td><?php _e('Kernel'); ?></td>
<td><?php echo $data['kernel']; ?></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('System'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('Laufende Prozesse'); ?></td>
<td><?php echo $data['runningTasksCount']; ?></td>
</tr>
<tr>
<td><?php _e('Installierte Pakete'); ?></td>
<td><?php echo $data['installedPackagesCount']; ?> <a href="?s=installed_packages">(<?php _e('Pakete auflisten'); ?>)</a></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('Webserver'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('HTTP-Server'); ?></td>
<td><?php echo $data['webserver']; ?></td>
</tr>
<tr>
<td><?php _e('PHP-Version'); ?></td>
<td><?php echo $data['php']; ?></td>
</tr>
<tr>
<td><?php _e('Benutzer'); ?></td>
<td><?php echo $data['whoami']; ?></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('Prozessor'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('Takt'); ?></td>
<td><?php echo $data['cpu_clock']; ?></td>
</tr>
<tr>
<td><?php _e('Maximaler Takt'); ?></td>
<td><?php echo $data['cpu_max_clock']; ?></td>
</tr>
<tr>
<td><?php _e('Auslastung Gesamt'); ?></td>
<td style="padding: 6px 15px 6px 7px;"><div class="progressbar" data-text="<?php echo $data['cpu_load']; ?>%" style="max-width: 250px;"><div style="width: <?php echo $data['cpu_load']; ?>%;"></div></div></td>
</tr>
<?php foreach ($data['cpu_loads'] as $name => $value) { ?>
<tr>
<td><?php _e('Auslastung %s', $name); ?></td>
<td style="padding: 6px 15px 6px 7px;"><div class="progressbar" data-text="<?php echo $value; ?>%" style="max-width: 250px;"><div style="width: <?php echo $value; ?>%;"></div></div></td>
</tr>
<?php } ?>
<tr>
<td><?php _e('Typ'); ?></td>
<td><?php echo $data['cpu_type']; ?></td>
</tr>
<tr>
<td><?php _e('Modell'); ?></td>
<td><?php echo $data['cpu_model']; ?></td>
</tr>
<tr>
<td><?php _e('Temperatur'); ?></td>
<td><?php echo $data['cpu_temp']; ?></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('Arbeitsspeicher'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form responsive-detailed-overview-table">
<tr>
<td><?php _e('Gesamt'); ?></td>
<td><?php echo $data['revision']['memory']; ?> MB</td>
</tr>
<tr>
<td><?php _e('Auslastung'); ?></td>
<td style="padding: 6px 15px 6px 7px;"><div class="progressbar" data-text="<?php echo $data['ram_percentage']; ?>" style="max-width: 250px;"><div style="width: <?php echo $data['ram_percentage']; ?>;"></div></div></td>
</tr>
</table>
<br />
</div>
<div class="inner">
<span class="subtitle"><?php _e('Gesamtspeicher'); ?></span>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th style="width: 20%;"><?php _e('Partition'); ?></th>
<th style="width: 10%;"><?php _e('Mountpunkt'); ?></th>
<th style="width: 10%; min-width: 70px;"><?php _e('Belegt'); ?></th>
<th style="width: 10%; min-width: 70px;"><?php _e('Frei'); ?></th>
<th style="width: 10%; min-width: 70px;"><?php _e('Gesamt'); ?></th>
<th style="width: 40%; min-width: 150px;"></th>
</tr>
<?php $i = 0; foreach ($data['memory'] as $value) {
if (++$i != $data['memory_count']) { ?>
<tr>
<td><?php echo $value['device']; ?></td>
<td><?php echo $value['mountpoint']; ?></td>
<td><?php echo sizeUnit($value['used']); ?></td>
<td><?php echo sizeUnit($value['free']); ?></td>
<td><?php echo sizeUnit($value['total']); ?></td>
<td><div class="progressbar" data-text="<?php echo $value['percent']; ?>%"><div style="width: <?php echo $value['percent']; ?>%;"></div></div></td>
</tr>
<?php } else { ?>
<tr style="font-weight: bold;" class="background-color-2">
<td><?php _e('Gesamt'); ?></td>
<td></td>
<td><?php echo sizeUnit($value['used']); ?></td>
<td><?php echo sizeUnit($value['free']); ?></td>
<td><?php echo sizeUnit($value['total']); ?></td>
<td style="font-weight: normal;"><div class="progressbar" data-text="<?php echo $value['percent']; ?>%"><div style="width: <?php echo $value['percent']; ?>%;"></div></div></td>
</tr>
<?php }
} ?>
</table>
</div>
</div>
</div>

View File

@@ -0,0 +1,56 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div class="sidebar">
<div class="box">
<div class="inner-header">
<span><?php _e('Statistik'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th><?php _e('Plugins'); ?></th>
<th><?php _e('Anzahl'); ?></th>
</tr>
<tr>
<td><?php _e('Insgesamt'); ?></td>
<td><?php echo count($data['onlinePlugins']); ?></td>
</tr>
<tr>
<td><?php _e('Installiert'); ?></td>
<td><?php echo count($data['plugins']); ?></td>
</tr>
<tr>
<td><?php _e('Aktualisierung'); ?></td>
<td><?php echo count($data['availableUpdates']); ?></td>
</tr>
<tr>
<td><?php _e('Deaktiviert'); ?></td>
<td><?php echo $data['disabledPluginsCount']; ?></td>
</tr>
</table>
</div>
</div>
</div>
<div class="container-600">
<div class="box">
<div class="inner-header">
<span><?php _e('Plugins entdecken'); ?></span>
<?php showGoBackIcon('?s=plugins'); ?>
</div>
<?php $i = 0; foreach ($data['onlinePlugins'] as $plugin) { $i++; ?>
<div class="inner-table discover_plugins-table-list<?php echo ($i != count($data['onlinePlugins'])) ? ' padding-0' : ''; ?>">
<a href="?s=discover_plugins&amp;id=<?php echo $plugin['id']; ?>">
<table class="table table-borderless<?php echo ($i%2 != 0) ? ' table-reverse' : ''; ?>">
<tr>
<td><strong><?php echo $plugin['name']; ?></strong><span><?php _e('Version %s', $plugin['versions'][$plugin['latestVersion']]['name']); ?></span><?php if (isset($data['plugins'][$plugin['id']])) { ?><strong class="<?php if (isset($data['availableUpdates'][$plugin['id']])) echo 'orange'; else echo ($data['plugins'][$plugin['id']]['disabled'] == true) ? 'red' : 'green'; ?>"><?php if (isset($data['availableUpdates'][$plugin['id']])) echo _t('Update'); else echo ($data['plugins'][$plugin['id']]['disabled'] == true) ? _t('Deaktiviert') : _t('Installiert'); ?></strong><?php } ?></td>
<td><?php echo $plugin['description']; ?></td>
</tr>
</table>
</a>
</div>
<?php } if (empty($data['onlinePlugins'])) { ?>
<div class="inner-info">
<div><?php _e('Es konnten keine verf&uuml;gbaren Plugins gefunden werden.'); ?></div>
</div>
<?php } ?>
</div>
</div>

View File

@@ -0,0 +1,104 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div class="sidebar order-2">
<div class="box">
<div class="inner-header">
<span><?php _e('Aktion'); ?></span>
</div>
<div class="inner discover_plugins_info-action">
<?php if (empty($data['plugin'])) { ?>
<a href="?s=discover_plugins&amp;id=<?php echo $data['onlinePlugin']['id']; ?>&amp;install" class="button"><?php _e('Installieren'); ?></a>
<?php } else { ?>
<a href="?s=plugins&amp;id=<?php echo $data['plugin']['id']; ?>" class="button"><?php _e('Zum Plugin'); ?></a><br />
<?php if ($data['plugin']['version']['code'] < $data['onlinePlugin']['latestVersion']) { ?>
<a href="?s=discover_plugins&amp;id=<?php echo $data['plugin']['id']; ?>&amp;update" class="button"><?php _e('Aktualisieren'); ?></a>
<?php } ?>
<a href="?s=discover_plugins&amp;id=<?php echo $data['plugin']['id']; ?>&amp;status" class="button"><?php echo ($data['plugin']['disabled'] == true) ? _t('Aktivieren') : _t('Deaktivieren'); ?></a>
<a href="?s=settings&amp;do=plugins&amp;delete=<?php echo $data['plugin']['id']; ?>" class="button"><?php _e('L&ouml;schen'); ?></a>
<?php } ?>
</div>
</div>
</div>
<div class="container-600 order-1">
<div class="box">
<div class="inner-header">
<span><?php echo $data['onlinePlugin']['name']; ?></span>
<?php showGoBackIcon('?s=discover_plugins'); ?>
</div>
<div class="inner">
<?php if (!empty($data['plugin'])) { ?>
<strong class="green"><?php _e('Das Plugin ist bereits installiert.'); ?></strong>
<?php if ($data['plugin']['version']['code'] < $data['onlinePlugin']['latestVersion']) { ?>
<br /><br /><strong class="red"><?php _e('Das Plugin ist nicht mehr aktuell. Version %s ist verf&uuml;gbar!', $data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['name']); ?></strong>
<?php } } ?>
</div>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td style="width: 30%;"><?php _e('Version'); ?></td>
<td><?php echo $data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['name']; ?></td>
</tr>
<tr>
<td><?php _e('Ver&ouml;ffentlicht am'); ?></td>
<td><?php echo formatTime($data['onlinePlugin']['date'], 'd.m.Y'); ?></td>
</tr>
<tr>
<td><?php _e('Letzte Aktualisierung'); ?></td>
<td><?php echo formatTime($data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['date'], 'd.m.Y'); ?></td>
</tr>
<tr>
<td><?php _e('Beschreibung'); ?></td>
<td><?php echo $data['onlinePlugin']['description']; ?></td>
</tr>
<tr>
<td><?php _e('Sprachen'); ?></td>
<td><?php echo implode(', ', array_map('getLanguageFromIso', $data['onlinePlugin']['languages'])); ?></td>
</tr>
</table>
</div>
</div>
</div>
<div class="clear-both"></div>
<div class="order-3">
<?php if (!empty($data['onlinePlugin']['manual'])) { ?>
<div class="box">
<div class="inner-header">
<span><?php _e('Anleitung'); ?></span>
</div>
<div class="inner">
<?php echo $data['onlinePlugin']['manual']; ?>
</div>
</div>
<?php }
if (!empty($data['onlinePlugin']['requirement'])) { ?>
<div class="box">
<div class="inner-header">
<span><?php _e('Voraussetzungen'); ?></span>
</div>
<div class="inner">
<?php echo $data['onlinePlugin']['requirement']; ?>
</div>
</div>
<?php }
if (!empty($data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['changelog'])) { ?>
<div class="box">
<div class="inner-header">
<span><?php _e('&Auml;nderungen mit Version %s', $data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['name']); ?></span>
</div>
<div class="inner">
<?php echo $data['onlinePlugin']['versions'][$data['onlinePlugin']['latestVersion']]['changelog']; ?>
</div>
</div>
<?php }
if (!empty($data['onlinePlugin']['screenshots'])) { ?>
<div class="box">
<div class="inner-header">
<span><?php _e('Screenshots'); ?></span>
</div>
<div class="inner discover_plugins_info-screenshots">
<?php foreach ($data['onlinePlugin']['screenshots'] as $screenshot) { ?>
<a href="<?php echo $screenshot; ?>" target="_blank"><img src="<?php echo $screenshot; ?>" /></a>
<?php } ?>
</div>
</div>
<?php } ?>
</div>

View 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>

View File

@@ -0,0 +1,32 @@
<?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('&Uuml;BER MICH'); ?></th>
<th><?php _e('VERSION'); ?></th>
</tr>
<tr>
<td rowspan="2"><a href="?s=settings"><?php _e('Einstellungen'); ?></a><br />
<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('&Ouml;ffne im 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="https://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;">&#10084;</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>

View File

@@ -0,0 +1,122 @@
<?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">
<?php if ($data['headerInfo'] !== false) { ?>
<div class="header-top-inner-cell header-top-inner-info color-3">
<?php echo $data['headerInfo']; ?>
</div>
<?php } ?>
<div class="header-top-inner-cell header-top-inner-username">
<?php _e('Angemeldet als %s', $data['username']); ?>
</div>
<div class="header-top-inner-cell header-top-inner-logout">
<a href="?i=login&amp;logout<?php echo $data['referer']; ?>"><?php _e('Abmelden'); ?></a>
</div>
</div>
</div>
</div>
<input type="checkbox" id="header-mobile" />
<div id="inner-header">
<label for="header-mobile"></label>
<a href="?s=overview" id="header-logo"><img src="public_html/img/logo.svg" /></a>
<div id="header-navi">
<a href="?s=overview"><?php _e('&Uuml;bersicht'); ?></a>
<a href="?s=network"><?php _e('Netzwerk'); ?></a>
<a href="?s=statistic"><?php _e('Statistik'); ?></a>
<a href="?s=terminal"><?php _e('Terminal'); ?></a>
<div class="navi-dropdown"><a href="?s=plugins"><?php _e('Plugins'); if (is_array($data['naviPluginsUpdates'])) echo '<span class="update-bull">&bull;</span>'; ?></a>
<div class="navi-dropdown-container">
<?php if (isset($data['naviPluginsUpdates'])) { ?>
<a href="?s=discover_plugins" class="navi-dropdown-update">UPDATE</a>
<?php } if (is_array($data['naviPlugins'])) { foreach ($data['naviPlugins'] as $plugin) { ?>
<a href="?s=plugins&amp;id=<?php echo $plugin['id']; ?>"><?php _e($plugin['name']); if (isset($data['naviPluginsUpdates'][$plugin['id']])) echo '<span class="update-bull">&bull;</span>'; ?></a>
<?php } } ?>
</div>
</div>
<div class="navi-dropdown"><a href="#"><span style="transform: rotate(90deg); display: block; font-weight: normal; line-height: 15px;">&#10095;</span></a>
<div class="navi-dropdown-container">
<a href="?s=users_groups"><?php _e('Benutzer/Gruppen'); ?></a>
<a href="?s=logs"><?php _e('Logdateien'); ?></a>
<a href="?s=processes"><?php _e('Prozesse'); ?></a>
</div>
</div>
</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&uuml;tzte Browserversion'); ?></span>
</div>
<div class="inner">
<?php _e('Deine aktuelle Browserversion wird von Pi Control nicht unterst&uuml;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&uuml;gbar', $data['updatePicontrol']['version']); ?></span>
</div>
<div class="inner">
<?php _e('Zur <a href="%s">Aktualisierung</a>, um diese anzusehen und zu starten.', '?s=settings&amp;do=update'); ?>
</div>
</div>
</div>
<?php } ?>
<?php if ($data['cronExecutionFault'] === true) { ?>
<!-- Cron -->
<div class="box error">
<div>
<div class="inner-header">
<span><?php _e('Fehler mit dem Cron'); ?></span>
<div><span class="cancel"></span></div>
</div>
<div class="inner">
<?php _e('Es gibt anscheinend ein Problem mit dem Cron für das Pi Control. Dieser wurde seit mehr als 2 Minuten nicht mehr ausgef&uuml;hrt. Sollte diese Meldung in ca. 5 Minuten immer noch erscheinen, f&uuml;hre eine <a href="%s">Problembehandlung</a> durch.', '?s=settings&amp;do=troubleshooting'); ?>
</div>
</div>
</div>
<?php } ?>

View File

@@ -0,0 +1,28 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Installierte Pakete'); ?></span>
<?php showGoBackIcon('?s=detailed_overview'); ?>
</div>
<div class="inner">
<strong><?php _e('Anzahl an installierten Paketen: %s', $data['installedPackagesCount']); ?></strong>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th><?php _e('Paketname'); ?></th>
<th><?php _e('Version'); ?></th>
<th><?php _e('Beschreibung'); ?></th>
</tr>
<?php foreach ($data['installedPackages'] as $package) { ?>
<tr>
<td><?php echo $package[1]; ?></td>
<td><?php echo $package[2]; ?></td>
<td><?php echo $package[4]; ?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>

View File

@@ -0,0 +1,53 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<!DOCTYPE HTML>
<html style="height: 100%;">
<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" />
<title><?php _e('Login'); ?> | Pi Control</title>
</head>
<body class="login-body">
<div class="login-wrapper">
<div class="login-container">
<div class="login-container-inner">
<div class="login-logo"></div>
<?php if (isset($data['errorMsg'])) { ?>
<div class="login-error"><?php _e($data['errorMsg']); ?></div>
<?php } ?>
<form action="?i=login" method="post">
<table class="login-table">
<tr>
<td colspan="2"><input type="text" name="username" class="login-input-text" placeholder="<?php _e('Benutzername'); ?>" /></td>
</tr>
<tr>
<td colspan="2"><input type="password" name="password" class="login-input-text" placeholder="<?php _e('Passwort'); ?>" /></td>
</tr>
<tr>
<td><input type="checkbox" name="rememberMe" value="checked" id="rememberMe" /><label class="checkbox login-input-checkbox" for="rememberMe" title="<?php _e('Cookies m&uuml;ssen f&uuml;r diese Funktion aktiviert sein.'); ?>"><?php _e('Angemeldet bleiben'); ?></label></td>
<td style="text-align: right;"><input type="submit" name="submit" class="login-input-button" value="<?php _e('Anmelden'); ?>"<?php if ($data['externalAccess'] == false) echo 'disabled="disabled"'; ?> /></td>
</tr>
</table>
<input type="hidden" name="referer" value="<?php echo $data['referer']; ?>" />
</form>
</div>
</div>
<div class="login-footer">
<div class="login-footer-inner"><?php _e('Mit %s entwickelt von %s.', '&#10084;', 'Willy Fritzsche'); ?> 2013-2017<br /><?php _e('Raspberry Pi ist ein Markenzeichen der Raspberry Pi Foundation.'); ?></div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,31 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Logdateien'); ?></span>
</div>
<?php if (!$data['sshAvailable']) { ?>
<div class="inner">
<strong class="red"><?php _e('Einige Dateien k&ouml;nnen aufgrund mangelnder Berechtigung nicht ge&ouml;ffnet werden. Melde dich per SSH an, um diese ebenfalls zu &ouml;ffnen. <a href="%s">Jetzt anmelden.</a>', '?s=ssh_login'); ?></strong>
</div>
<?php } ?>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th style="width: 60%;"><?php _e('Dateiname'); ?></th>
<th style="width: 15%;"><?php _e('Letzte &Auml;nderung'); ?></th>
<th style="width: 15%;"><?php _e('Dateigr&ouml;ße'); ?></th>
<th style="width: 10%;"></th>
</tr>
<?php foreach ($data['logs'] as $log) { ?>
<tr>
<td><?php echo $log->getRelativePath().$log->getName(); if ($log->getCount(true) > 0) echo ' ('.$log->getCount(true).' '._t('Weitere verf&uuml;gbar').')'; ?></td>
<td><?php echo formatTime($log->getMain()->getModified()); ?></td>
<td><?php echo sizeUnit($log->getMain()->getFilesize()); ?></td>
<td class="table-right"><a <?php if ($log->getMain()->getReadable() === true) echo 'href="?s=logs&amp;view='.urlencode($log->getMain()->getRelativePath()).'"'; ?> class="button button-small<?php if ($log->getMain()->getReadable() === false) echo ' button-disabled'; ?>"><?php _e('Anzeigen'); ?></a></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>

View File

@@ -0,0 +1,59 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Logdateien - Ansicht'); ?></span>
<?php showGoBackIcon('?s=logs'); ?>
</div>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Dateiname'); ?></td>
<td><?php echo $data['log']->getFilename(); ?></td>
</tr>
<tr>
<td><?php _e('Letzte &Auml;nderung'); ?></td>
<td><?php echo formatTime($data['log']->getModified()); ?></td>
</tr>
<tr>
<td><?php _e('Dateigr&ouml;ße'); ?></td>
<td><?php echo sizeUnit($data['log']->getFilesize()); ?></td>
</tr>
<tr>
<td><?php _e('Herunterladen'); ?></td>
<td><a href="?s=logs&amp;download=<?php echo urlencode($data['log']->getRelativePath()); ?>" class="button button-small">TXT</a></td>
</tr>
<?php if ($data['log']->getLogGroup()->getCount() > 1) { ?>
<tr>
<td><?php _e('Weitere Dateien'); ?></td>
<td><form action="?s=logs" method="post">
<input type="hidden" name="relative_path" value="<?php echo $data['log']->getLogGroup()->getRelativePath(); ?>" />
<select name="filename">
<?php foreach ($data['log']->getLogGroup()->getAll() as $log) { ?>
<option value="<?php echo $log->getFilename(); ?>"<?php if ($log->getFilename() == $data['log']->getFilename()) echo ' disabled="disabled"'; ?>><?php echo $log->getFilename().'&nbsp;&nbsp;&nbsp;&nbsp;('.sizeUnit($log->getFilesize()).')'; ?></option>
<?php } ?>
</select> <input type="submit" name="open_file" value="<?php _e('&Ouml;ffnen'); ?>" />
</form></td>
</tr>
<?php } ?>
</table>
</div>
<?php if (isset($data['filesizeError'])) { ?>
<div class="inner">
<strong class="red"><?php _e('Leider kann die angeforderte Datei, aufgrund ihrer Dateigr&ouml;ße (&lt; %s), nicht ge&ouml;ffnet werden.', '10 MB'); ?></strong>
</div>
<?php } else { ?>
<div class="inner padding-0 log-view">
<div class="log-view-outer">
<div class="log-view-line_numbers">
1<br />
<?php for ($i = 2; $i <= $data['logLines']; $i++) echo $i.'<br />'; ?>
</div>
<div class="log-view-text">
<?php echo nl2br(htmlspecialchars($data['logOutput'])); ?>
</div>
</div>
</div>
<?php } ?>
</div>
</div>

View 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>

View File

@@ -0,0 +1,125 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<!-- Sidebar -->
<div class="sidebar order-2">
<div class="box">
<div class="inner-navi">
<a href="?s=network"><?php _e('&Uuml;bersicht'); ?></a>
<a href="?s=network_configuration"><?php _e('Konfiguration'); ?></a>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Traffic'); ?></span>
</div>
<div class="inner-table">
<strong><?php _e('Daten'); ?></strong><br /><br />
<table class="table table-borderless">
<tr>
<th style="width: 20%;"><?php _e('Interface'); ?></th>
<th style="width: 40%;"><?php _e('Gesendet'); ?></th>
<th style="width: 40%;"><?php _e('Empfangen'); ?></th>
</tr>
<?php foreach ($data['network_connections'] as $value) { ?>
<tr>
<td><?php echo $value['interface']; ?></td>
<td><?php echo sizeUnit($value['sent']); ?></td>
<td><?php echo sizeUnit($value['receive']); ?></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-table">
<br /><strong><?php _e('Pakete'); ?></strong><br /><br />
<table class="table table-borderless">
<tr>
<th style="width: 20%;"><?php _e('Interface'); ?></th>
<th style="width: 40%;"><?php _e('Gesendet'); ?></th>
<th style="width: 40%;"><?php _e('Empfangen'); ?></th>
</tr>
<?php foreach ($data['network_connections'] as $value) { ?>
<tr>
<td><?php echo $value['interface']; ?></td>
<td><?php echo $value['packets']['sent']; ?></td>
<td><?php echo $value['packets']['received']; ?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Hostname'); ?></span>
</div>
<div class="inner justify">
<?php _e('Dein Raspberry Pi wird im Netzwerk unter folgendem Namen angezeigt: <strong>%s</strong>', $data['hostname']); ?>
</div>
<div class="inner-end">
<a href="?s=network&amp;hostname"><button><?php _e('&Auml;ndern'); ?></button></a>
</div>
</div>
</div>
<!-- Container -->
<div class="container-600 order-1">
<div class="box">
<div class="inner-header">
<span><?php _e('Netzwerk'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th style="width: 2%;"></th>
<th style="width: 10%;"><?php _e('Interface'); ?></th>
<th style="width: 44%;"><?php _e('IP'); ?></th>
<th style="width: 44%;"><?php _e('MAC-Adresse'); ?></th>
</tr>
<?php foreach ($data['network_connections'] as $value) { ?>
<tr>
<td>
<?php if (isset($value['option']['signal'])) { echo getImageFromSignal($value['option']['signal']); } else {
if ($value['ip'] != 0) { ?>
<span class="svg-network-signal-wire"></span>
<?php } else { ?>
<span class="svg-network-signal-disabled"></span>
<?php } } ?></td>
<td><?php echo $value['interface']; ?></td>
<td><?php if ($value['ip'] != 0) { ?><a href="http://<?php echo $value['ip']; ?>" target="_blank"><?php echo $value['ip']; ?></a><?php } else { ?><?php _e('Nicht verbunden'); ?><?php } ?></td>
<td><?php echo $value['mac']; ?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<?php foreach ($data['wlan'] as $key => $value) { ?>
<div class="box">
<div class="inner-header">
<span><?php echo $key; ?></span>
<div><a href="?s=network&amp;refresh_wlan" class="inner-title-icon"><img src="public_html/img/refresh-icon.svg" title="<?php _e('Aktualisieren'); ?>" /></a></div>
</div>
<div class="inner-table">
<table class="table table-borderless responsive-network-wlan-table">
<tr>
<th style="width: 1%;"></th>
<th style="width: 52%;"><?php _e('Netzwerkname'); ?></th>
<th style="width: 25%;"><?php _e('MAC-Adresse'); ?></th>
<th style="width: 17%;" class="table-center"><?php _e('Sicherheit'); ?></th>
<th style="width: 5%;" class="table-center"><?php _e('Kanal'); ?></th>
</tr>
<?php foreach ($value as $value2) { ?>
<tr>
<td title="<?php echo $value2['signal']; ?>%"><?php echo getImageFromSignal($value2['signal']); ?></td>
<td><a href="?s=network_connect&amp;interface=<?php echo urlencode($key); ?>&amp;ssid=<?php echo urlencode($value2['ssid']); ?>&amp;encryption=<?php echo ($value2['encryption'] == '-') ? 2 : 1; ?>"><?php echo htmlentities($value2['ssid']); ?></a></td>
<td><?php echo $value2['mac']; ?></td>
<td class="table-center"><?php echo $value2['encryption']; ?></td>
<td class="table-center"><?php echo $value2['channel']; ?></td>
</tr>
<?php } if (count($value) == 0) { ?>
<tr>
<td colspan="5"><strong class="red"><?php _e('Keine WLAN-Netzwerke gefunden. <a href="%s">Erneut suchen.</a>', '?s=network&amp;refresh_wlan'); ?></strong></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<?php } ?>
</div>
<div class="clear-both"></div>

View File

@@ -0,0 +1,46 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/network_configuration.interface_refresh.js"></script>
<!-- Sidebar -->
<div class="sidebar">
<div class="box">
<div class="inner-navi">
<a href="?s=network"><?php _e('&Uuml;bersicht'); ?></a>
<a href="?s=network_configuration"><?php _e('Konfiguration'); ?></a>
</div>
</div>
<div class="box dummy-1 display-none">
<div class="inner-header">
<span><?php _e('Status'); ?></span>
</div>
<div class="inner"></div>
</div>
</div>
<!-- Container -->
<div class="container-600">
<div class="box">
<div class="inner-header">
<span><?php _e('Netzwerkkonfiguration'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th style="width: 45%;"><?php _e('Interface'); ?></th>
<th style="width: 20%;"><?php _e('Protokoll'); ?></th>
<th style="width: 20%;"><?php _e('Methode'); ?></th>
<th style="width: 15%;"></th>
</tr>
<?php foreach ($data['interfaces'] as $interface => $value) { ?>
<tr>
<td><?php echo $interface; ?></td>
<td><?php echo formatInterfaceProtocol($value['protocol']); ?></td>
<td><?php echo _t(formatInterfaceMethod($value['method'])); ?></td>
<td class="table-center"><a href="?s=network_configuration&amp;edit=<?php echo urlencode($interface); ?>" style="margin-right: 8px;"><span class="svg-control-pen display-inline-block"></span></a><a href="?s=network_configuration&amp;delete=<?php echo urlencode($interface); ?>" style="margin-right: 8px;"><span class="svg-control-cross display-inline-block"></span></a><a href="#refresh" name="<?php echo urlencode($interface); ?>"><span class="svg-refresh display-inline-block"></span></a></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-end">
<a href="?s=network_configuration&amp;add"><button><?php _e('Hinzuf&uuml;gen'); ?></button></a>
</div>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/network_configuration.method_select.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Netzwerkkonfiguration - Interface hinzuf&uuml;gen'); ?></span>
<?php showGoBackIcon('?s=network_configuration'); ?>
</div>
<form action="?s=network_configuration&amp;add" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Interface'); ?></td>
<td><input type="text" name="interface" value="<?php echo $data['interfaceName']; ?>" /></td>
</tr>
<tr>
<td><?php _e('Protokoll'); ?></td>
<td><select name="protocol">
<option value="inet"<?php if ($data['interfaceProtocol'] == 'inet') echo ' selected="selected"'; ?>>IPv4</option>
<option value="inet6"<?php if ($data['interfaceProtocol'] == 'inet6') echo ' selected="selected"'; ?>>IPv6</option>
<option value="ipx"<?php if ($data['interfaceProtocol'] == 'ipx') echo ' selected="selected"'; ?>>IPX/SPX</option>
</select>
<span class="small-info"><?php _e('Weitere Einstellungen für IPX/SPX bitte selber vornehmen'); ?></span>
</td>
</tr>
<tr>
<td><?php _e('Methode'); ?></td>
<td><select name="method">
<option value="dhcp"<?php if ($data['interfaceMethod'] == 'dhcp') echo ' selected="selected"'; ?>><?php _e('DHCP'); ?></option>
<option value="static"<?php if ($data['interfaceMethod'] == 'static') echo ' selected="selected"'; ?>><?php _e('Statisch'); ?></option>
<option value="manual"<?php if ($data['interfaceMethod'] == 'manual') echo ' selected="selected"'; ?>><?php _e('Manuell'); ?></option>
</select>
</td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Adresse'); ?></td>
<td><input type="text" name="address" maxlength="39" value="<?php echo $data['interfaceAddress'] ?>" /></td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Netzmaske'); ?></td>
<td><input type="text" name="netmask" maxlength="39" value="<?php echo $data['interfaceNetmask']; ?>" /></td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Gateway'); ?></td>
<td><input type="text" name="gateway" maxlength="39" value="<?php echo $data['interfaceGateway']; ?>" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="hidden" name="checksum" value="<?php echo $data['checksum']; ?>" />
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,18 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Netzwerkkonfiguration - Interface l&ouml;schen'); ?></span>
<?php showGoBackIcon('?s=network_configuration'); ?>
</div>
<form action="?s=network_configuration&amp;delete=<?php echo urlencode($data['interfaceName']); ?>" method="post">
<div class="inner">
<?php _e('M&ouml;chtest du das Interface <strong>%s</strong> wirklich unwiderruflich l&ouml;schen?', $data['interfaceName']); ?>
</div>
<div class="inner-end">
<input type="hidden" name="checksum" value="<?php echo $data['checksum']; ?>" />
<input type="submit" name="submit" value="<?php _e('L&ouml;schen'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/network_configuration.method_select.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Netzwerkkonfiguration - Interface bearbeiten'); ?></span>
<?php showGoBackIcon('?s=network_configuration'); ?>
</div>
<form action="?s=network_configuration&amp;edit=<?php echo urlencode($data['interfaceName']); ?>" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Interface'); ?></td>
<td><input type="text" name="interface" value="<?php echo $data['interfaceName']; ?>" /></td>
</tr>
<tr>
<td><?php _e('Protokoll'); ?></td>
<td><select name="protocol">
<option value="inet"<?php if ($data['interfaceProtocol'] == 'inet') echo ' selected="selected"'; ?>>IPv4</option>
<option value="inet6"<?php if ($data['interfaceProtocol'] == 'inet6') echo ' selected="selected"'; ?>>IPv6</option>
<option value="ipx"<?php if ($data['interfaceProtocol'] == 'ipx') echo ' selected="selected"'; ?>>IPX/SPX</option>
</select>
<span class="small-info"><?php _e('Weitere Einstellungen für IPX/SPX bitte selber vornehmen'); ?></span>
</td>
</tr>
<tr>
<td><?php _e('Methode'); ?></td>
<td><select name="method">
<option value="dhcp"<?php if ($data['interfaceMethod'] == 'dhcp') echo ' selected="selected"'; ?>><?php _e('DHCP'); ?></option>
<option value="static"<?php if ($data['interfaceMethod'] == 'static') echo ' selected="selected"'; ?>><?php _e('Statisch'); ?></option>
<option value="manual"<?php if ($data['interfaceMethod'] == 'manual') echo ' selected="selected"'; ?>><?php _e('Manuell'); ?></option>
</select>
</td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Adresse'); ?></td>
<td><input type="text" name="address" maxlength="39" value="<?php echo $data['interfaceAddress'] ?>" /></td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Netzmaske'); ?></td>
<td><input type="text" name="netmask" maxlength="39" value="<?php echo $data['interfaceNetmask']; ?>" /></td>
</tr>
<tr class="hidden-method<?php if ($data['interfaceMethod'] != 'static') echo ' display-none'; ?>">
<td style="text-align: right;"><?php _e('Gateway'); ?></td>
<td><input type="text" name="gateway" maxlength="39" value="<?php echo $data['interfaceGateway']; ?>" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="hidden" name="checksum" value="<?php echo $data['checksum']; ?>" />
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,54 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript"><?php echo $data['jsVariables']; ?></script>
<script type="text/javascript" src="public_html/js/network_connect.wlan.js"></script>
<noscript>
<div>
<div class="info_red box">
<div class="inner">
<strong><?php _e('Bitte aktiviere JavaScript, um dich mit einem WLAN-Netzwerk verbinden zu k&ouml;nnen.'); ?></strong>
</div>
</div>
</div>
</noscript>
<!-- Container -->
<div>
<div class="box">
<form action="#" method="post">
<div class="inner-header">
<span><?php _e('WLAN-Verbindung herstellen'); ?></span>
</div>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Interface'); ?></td>
<td><input type="hidden" name="interface" value="<?php echo $data['interface']; ?>" /><?php echo $data['interface']; ?></td>
</tr>
<tr>
<td><?php _e('Netzwerkname'); ?></td>
<td><input type="hidden" name="ssid" value="<?php echo $data['ssid']; ?>" /><?php echo $data['ssid']; ?></td>
</tr>
<?php if (isset($data['encryption']) && $data['encryption'] == 1) { ?>
<tr>
<td><?php _e('Passwort'); ?></td>
<td><input type="password" name="password" maxlength="64" /></td>
</tr>
<?php } elseif (isset($data['encryption']) && $data['encryption'] == 2) { ?>
<tr>
<td><?php _e('Passwort (falls n&ouml;tig)'); ?></td>
<td><input type="password" name="password" data="opt" maxlength="64" /></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-end dummy-1">
<input type="submit" name="submit" value="<?php _e('Verbindung herstellen'); ?>" />
</div>
<div class="inner dummy-2 display-none">
<span class="svg-network-signal-animate display-inline-block" style="vertical-align: bottom;"></span> <strong><?php _e('Verbindung mit "%s" wird hergestellt...', $data['ssid']); ?>.</strong>
</div>
<div class="inner dummy-3 display-none">
<span class="svg-network-signal-disabled display-inline-block" style="vertical-align: bottom;"></span> <strong><?php _e('Verbindung mit "%s" war nicht erfolgreich! <a href="%s">Erneut versuchen.</a>', $data['ssid'], '#try_again'); ?><br /><br /><span class="red"></span></strong>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,26 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<!-- Content -->
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Hostname'); ?></span>
<?php echo showGoBackIcon('?s=network'); ?>
</div>
<div class="inner-info">
<div><?php _e('Bei einer &Auml;nderung des Hostname ist der neue Name erst nach einem Neustart sichtbar.'); ?></div>
</div>
<form action="?s=network&amp;hostname" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Hostname'); ?></td>
<td><input type="text" name="hostname" value="<?php echo $data['hostname']; ?>" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,101 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript"><?php echo $data['js_variables']; ?></script>
<script type="text/javascript" src="public_html/js/overview.status_refresh.js"></script>
<!-- Sidebar -->
<div class="sidebar order-2">
<div class="box">
<div class="inner-header">
<span><?php _e('System'); ?></span>
</div>
<div class="inner">
<table class="table-overview-system">
<tr>
<td><a href="?s=shutdown&amp;restart" onClick="return ((confirm('<?php _e('M&ouml;chtest du deinen Raspberry Pi wirklich neu starten?'); ?>') == false) ? false : true);"><button><?php _e('Neu starten'); ?></button></a></td>
<td></td>
<td><a href="?s=shutdown" onClick="return ((confirm('<?php _e('M&ouml;chtest du deinen Raspberry Pi wirklich herunterfahren?'); ?>') == false) ? false : true);"><button class="system_shutdown"><?php _e('Herunterfahren'); ?></button></a></td>
</tr>
</table>
</div>
</div>
<?php if ($data['show_weather'] === true) { ?>
<div class="box">
<div class="inner-header">
<span><?php _e('Wetter'); ?></span>
<?php if ($data['weather_cache_hint'] != NULL) echo $data['weather_cache_hint']; ?>
</div>
<div class="inner">
<?php if ($data['weather'] === 0) { ?>
<strong class="red"><?php _e('Die aktuelle Postleitzahl ist ung&uuml;ltig.'); ?></strong>
<?php } elseif ($data['weather'] === 2) { ?>
<strong class="red"><?php _e('Wetter wurde noch nicht konfiguriert. <a href="%s">Zu den Einstellungen.</a>', '?s=settings&do=overview'); ?></strong>
<?php } elseif ($data['weather'] === 1 || !is_array($data['weather'])) { ?>
<strong class="red"><?php _e('Das Wetter kann aktuell nicht abgerufen werden.'); ?></strong>
<?php } else { ?>
<strong><?php echo $data['weather']['city']; ?></strong><br /><br />
<table style="margin: 0px auto 0px;">
<tr>
<td style="width: 100px; text-align: center;">
<img src="public_html/img/weather/<?php echo $data['weather']['icon']; ?>.svg" title="<?php echo $data['weather']['description']; ?>" alt="<?php _e('Wetter'); ?>" style="width: 64px;" /><br />
<span style="font-size: 11px; margin-top: 5px; display: block;" title="<?php _e('Windst&auml;rke'.(isset($data['weather']['humidity']) ? ' | Luftfeuchtigkeit' : '')); ?>"><?php echo $data['weather']['wind']; ?> km/h<?php if (isset($data['weather']['humidity'])) echo ' | '.$data['weather']['humidity'].' %'; ?></span>
</td>
<td style="width: 100px; text-align: center;"><span style="font-size: 30px;">
<?php echo $data['weather']['temp']; ?> &deg;C</span><br />
<?php if (isset($data['weather']['temp_min'])) { ?><span style="font-size: 13px;"><?php echo $data['weather']['temp_min']; ?> &deg;C | <?php echo $data['weather']['temp_max']; ?> &deg;C</span><?php } ?>
</td>
</tr>
</table>
<?php if ($data['weather']['service'] == 'yahoo') { ?><a href="https://www.yahoo.com/?ilc=401" target="_blank" style="float: right; margin-right: -12px;"><img src="public_html/img/weather/yahoo.png" width="80px" /></a><?php }
elseif ($data['weather']['service'] == 'wunderground') { ?><a href="https://www.wunderground.com/" target="_blank" style="float: right; margin-right: -14px; margin-top: -5px;"><img src="public_html/img/weather/wunderground.png" width="80px" /></a><?php }
elseif ($data['weather']['service'] == 'darksky') { ?><a href="https://darksky.net/poweredby/" target="_blank" style="float: right; margin-right: -14px; margin-top: -1px;"><img src="public_html/img/weather/darksky.png" width="100px" /></a><?php } ?>
<?php } ?>
</div>
</div>
<?php } ?>
</div>
<!-- Container -->
<div class="container-600 order-1">
<div class="box">
<div class="inner-header">
<span><?php _e('&Uuml;bersicht'); ?></span>
<?php showSettingsIcon('?s=settings&amp;do=overview'); ?>
</div>
<div class="inner flex-container">
<div class="flex-box-refresh"><div><div class="refresh-bar"></div></div><a href="#refresh"><img src="public_html/img/refresh-icon.svg" title="<?php _e('Aktualisieren'); ?>" /></a></div>
<div class="flex-box"><strong><?php _e('Startzeit'); ?></strong><span><?php echo $data['start_time']; ?></span></div>
<div class="flex-box"><strong><?php _e('Laufzeit'); ?></strong><span><?php echo $data['run_time']; ?></span></div>
<div class="flex-box"><strong><?php _e('CPU-Takt'); ?></strong><span><?php echo $data['cpu_clock']; ?></span></div>
<div class="flex-box"><strong><?php _e('CPU-Auslastung'); ?></strong><div class="progressbar" data-text="<?php echo $data['cpu_load']; ?>"><div style="width: <?php echo $data['cpu_load']; ?>"></div></div></div>
<div class="flex-box"><strong><?php _e('CPU-Temperatur'); ?></strong><span><?php echo $data['cpu_temp']; ?></span></div>
<div class="flex-box"><strong><?php _e('RAM'); ?></strong><div class="progressbar" data-text="<?php echo $data['ram_percentage']; ?>"><div style="width: <?php echo $data['ram_percentage']; ?>"></div></div></div>
<div class="flex-box"><strong><?php _e('Speicher belegt'); ?></strong><span><?php echo sizeUnit($data['memory']['used']); ?></span></div>
<div class="flex-box"><strong><?php _e('Speicher frei'); ?></strong><span><?php echo sizeUnit($data['memory']['free']); ?></span></div>
<div class="flex-box"><strong><?php _e('Gesamtspeicher'); ?></strong><span><?php echo sizeUnit($data['memory']['total']); ?></span></div>
</div>
<div class="inner text-align-center">
<a class="show-more" href="?s=detailed_overview"><?php _e('Mehr anzeigen'); ?></a>
</div>
</div>
</div>
<div class="clear-both"></div>
<?php if (is_array($data['usb_devices'])) { ?>
<div class="order-3">
<div class="box">
<div class="inner-header">
<span><?php _e('Angeschlossene Ger&auml;te'); ?></span>
<?php if ($data['usb_devices_cache_hint'] != NULL) echo $data['usb_devices_cache_hint']; ?>
</div>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th style="width: 100%;"><?php _e('Bezeichnung'); ?></th>
</tr>
<?php foreach ($data['usb_devices'] as $value) { ?>
<tr>
<td><?php echo htmlentities($value); ?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>
<?php } ?>

View File

@@ -0,0 +1,28 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Plugins'); ?></span>
<?php showSettingsIcon('?s=settings&amp;do=plugins'); ?>
</div>
<?php $i = 0; foreach ($data['plugins'] as $plugin) { $i++; ?>
<div class="inner-table plugins-table-list<?php echo ($i != count($data['plugins'])) ? ' padding-0' : ''; ?>">
<a href="?s=plugins&amp;id=<?php echo $plugin['id']; ?>">
<table class="table table-borderless<?php echo ($i%2 != 0) ? ' table-reverse' : ''; ?>">
<tr>
<td><strong><?php _e($plugin['name']); ?></strong><span><?php _e('Version %s', $plugin['version']['name']); ?></span></td>
<td><?php _e($plugin['description']); ?></td>
</tr>
</table>
</a>
</div>
<?php } if (empty($data['plugins'])) { ?>
<div class="inner-info">
<div><?php _e('Es sind momentan noch keine Plugins installiert.'); ?></div>
</div>
<?php } ?>
<div class="inner-end">
<a href="?s=discover_plugins"><button><?php _e('Plugins entdecken'); ?></button></a>
</div>
</div>
</div>

View File

@@ -0,0 +1,53 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Prozesse'); ?></span>
</div>
<?php if (!$data['sshAvailable']) { ?>
<div class="inner">
<strong class="red"><?php _e('Aufgrund mangelnder Berechtigungen k&ouml;nnen Prozesse nicht beendet werden. Melde dich per SSH an, um Prozesse zu beenden. <a href="%s">Jetzt anmelden.</a>', '?s=ssh_login'); ?></strong>
</div>
<?php } ?>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Anzahl aller Prozesse'); ?></td>
<td><?php echo $data['processCount']; ?></td>
</tr>
<tr>
<td><?php _e('Anzahl aktiver Prozesse'); ?></td>
<td><?php echo $data['processCountRunning']; ?></td>
</tr>
</table>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless process-table-min-width-text-overflow">
<tr>
<th style="width: 8%;"><?php _e('PID'); ?></th>
<th style="width: 8%;"><?php _e('Benutzer'); ?></th>
<th style="width: 10%;"><?php _e('Status'); ?></th>
<th style="width: 8%;"><?php _e('CPU'); ?></th>
<th style="width: 8%;"><?php _e('RAM'); ?></th>
<th style="width: 15%;"><?php _e('Startzeitpunkt'); ?></th>
<th style="width: 10%;"><?php _e('Laufzeit'); ?></th>
<th style="width: 18%;"><?php _e('Befehl'); ?></th>
<th style="width: 15%;"></th>
</tr>
<?php foreach ($data['processes'] as $process) { ?>
<tr>
<td><?php echo $process->getPid(); ?></td>
<td><?php echo $process->getUser(); ?></td>
<td><?php echo getReadableStatus($process->getStatus()); ?></td>
<td><?php echo numberFormat($process->getCpu()); ?>%</td>
<td><?php echo numberFormat($process->getRam()); ?>%</td>
<td><?php echo formatTime(time() - $process->getElapsedTime()); ?></td>
<td><?php echo getDateFormat($process->getRuntime()); ?></td>
<td title="<?php echo htmlspecialchars($process->getCommand()); ?>"><?php echo htmlspecialchars($process->getCommand()); ?></td>
<td class="table-right white-space-nowrap"><form action="?s=processes" method="post"><input type="hidden" name="pid" value="<?php echo $process->getPid(); ?>" /><input type="hidden" name="startTime" value="<?php echo (time() - $process->getElapsedTime()); ?>" /><input class="button-small" type="submit" name="terminate" value="<?php _e('Beenden'); ?>"<?php if (!$data['sshAvailable']) echo ' disabled="disabled"'; ?> /> <input class="button-small" type="submit" name="kill" value="<?php _e('Abw&uuml;rgen'); ?>"<?php if (!$data['sshAvailable']) echo ' disabled="disabled"'; ?> /></form></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/shutdown.restart.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Raspberry Pi wird neu gestartet'); ?></span>
</div>
<div class="inner">
<?php _e('Sobald dein Raspberry Pi wieder erreichbar ist, wirst du automatisch zur &Uuml;bersicht weitergeleitet.<br />Solltest du nicht weitergeleitet werden, kommst du hier <a href="%s">zur&uuml;ck zur &Uuml;bersicht.</a><br /><br />', $data['overviewUrl']); ?>
<?php _e('Aktueller Status: <strong class="green">Online</strong>'); ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,19 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen'); ?></span>
</div>
<div class="inner settings-overview-flex-container">
<a class="settings-overview-flex-box" href="?s=settings&amp;do=pi-control">Pi Control</a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=overview"><?php _e('&Uuml;bersicht'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=statistic"><?php _e('Statistik'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=plugins"><?php _e('Plugins'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=update"><?php _e('Aktualisierung'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=troubleshooting"><?php _e('Problembehandlung'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=notification"><?php _e('Benachrichtigung'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=user"><?php _e('Benutzer'); ?></a>
<a class="settings-overview-flex-box" href="?s=settings&amp;do=cache"><?php _e('Cache'); ?></a>
</div>
</div>
</div>

View File

@@ -0,0 +1,44 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Cache'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<form action="?s=settings&amp;do=cache" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Aktivieren'); ?></td>
<td><input type="checkbox" name="activation" value="checked" id="cb-activiation"<?php if ($data['cache-activation'] === true) echo ' checked="checked"'; ?> /><label for="cb-activiation" class="checkbox only-checkbox">&nbsp;</label>
</tr>
</table>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th style="width: 5%;"></th>
<th style="width: 30%;"><?php _e('Anwendung'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Gr&ouml;ße'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Letzte &Auml;nderung'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Speicherzeit'); ?></th>
<th style="width: 5%;"></th>
</tr>
<?php foreach ($data['cache-files'] as $name => $info) { ?>
<tr>
<td><input type="checkbox" name="cb-<?php echo $name; ?>" value="checked" id="cb-<?php echo $name; ?>"<?php if (isset($info['active']) && $info['active'] === true) echo ' checked="checked"'; ?> /><label for="cb-<?php echo $name; ?>" class="checkbox only-checkbox">&nbsp;</label></td>
<td><?php echo getCacheName($name); ?></td>
<td class="table-center"><?php echo (isset($info['filesize'])) ? sizeUnit($info['filesize']) : '-'; ?></td>
<td class="table-center"><?php echo (isset($info['modification'])) ? formatTime($info['modification']) : '-'; ?></td>
<td class="table-center"><input type="text" name="text-<?php echo $name; ?>" maxlength="4" style="width: 40px !important;" value="<?php echo (isset($info['lifetime'])) ? $info['lifetime'] : '0'; ?>" /> Min.</td>
<td><a href="?s=settings&amp;do=cache&amp;clear=<?php echo $name; ?>" class="button button-small"><?php _e('Leeren'); ?></a></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,95 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<?php if (is_array($data['me']) && is_array($data['devices'])) { ?>
<div class="sidebar">
<div class="box">
<div class="inner-header">
<span><?php _e('Du'); ?> / <?php _e('Deine Ger&auml;te'); ?></span>
</div>
<div class="inner">
<?php _e('Verifiziert als '); ?><strong><?php echo $data['me']['name']; ?></strong>.
</div>
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th><?php _e('Ger&auml;tebezeichnung'); ?> / <?php _e('Erstelldatum'); ?></th>
</tr>
<?php foreach ($data['devices']['devices'] as $device) { ?>
<tr>
<td><?php echo $device['nickname']; ?><br /><span class="small-info"><?php echo formatTime($device['created']); ?></span></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>
<div class="container-600">
<?php } else { ?>
<div>
<?php } ?>
<div class="box">
<div class="inner-header">
<span><?php _e('Benachrichtigung'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<div class="inner">
<?php _e('Die Benachrichtigungen werden &uuml;ber Pushbullet realisiert. Daher ist ein Konto bei Pushbullet notwendig.'); ?>
</div>
<form action="?s=settings&amp;do=notification" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Aktivieren'); ?></td>
<td><input type="checkbox" name="activation" value="checked" id="cb-activation"<?php if ($data['activation'] == true) echo ' checked="checked"'; ?> /><label for="cb-activation" class="checkbox only-checkbox">&nbsp;</label></td>
</tr>
<tr>
<td><?php _e('Zugangstoken'); ?></td>
<td><input type="text" name="token" maxlength="46" value="<?php echo $data['token']; ?>" style="width: 300px;" /></td>
</tr>
<?php if (is_array($data['me']) && is_array($data['devices'])) { ?>
<tr>
<td><?php _e('Testbenachrichtigung'); ?></td>
<td><form action="?s=settings&amp;do=notification" method="post"><input type="submit" name="submit-test-notification" value="<?php _e('Jetzt senden'); ?>" class="button-small" /></form></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner">
<br /><br />
<strong><?php _e('Benachrichtige mich, wenn...'); ?></strong> <?php echo showHelper('7'); ?>
</div>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td style="width: 1%;"><input type="checkbox" name="event-pi-control-version" value="checked" id="cb-event-pi-control-version"<?php if ($data['pi-control-enabled'] === true) echo ' checked="checked"'; ?> /><label for="cb-event-pi-control-version" class="checkbox only-checkbox">&nbsp;</label></td>
<td style="width: 35%;" colspan="2"><?php _e('eine neue Pi Control Version erscheint'); ?></td>
</tr>
<tr>
<td style="width: 1%;"><input type="checkbox" name="event-cpu-temperature" value="checked" id="cb-event-cpu-temperature"<?php if ($data['cpu-temperature-enabled'] === true) echo ' checked="checked"'; ?> /><label for="cb-event-cpu-temperature" class="checkbox only-checkbox">&nbsp;</label></td>
<td style="width: 35%;"><?php _e('die CPU-Temperatur einen Wert &uuml;berschreitet'); ?></td>
<td><select name="event-cpu-temperature-maximum">
<option style="background: #4CAF50;" value="40"<?php if ($data['cpu-temperature-maximum'] == 40) echo ' selected="selected"'; ?>>40 °C</option>
<option style="background: #5ABC45;" value="45"<?php if ($data['cpu-temperature-maximum'] == 45) echo ' selected="selected"'; ?>>45 °C</option>
<option style="background: #73CA3C;" value="50"<?php if ($data['cpu-temperature-maximum'] == 50) echo ' selected="selected"'; ?>>50 °C</option>
<option style="background: #96D732;" value="55"<?php if ($data['cpu-temperature-maximum'] == 55) echo ' selected="selected"'; ?>>55 °C</option>
<option style="background: #DCEB1E;" value="60"<?php if ($data['cpu-temperature-maximum'] == 60) echo ' selected="selected"'; ?>>60 °C</option>
<option style="background: #FFC107;" value="65"<?php if ($data['cpu-temperature-maximum'] == 65) echo ' selected="selected"'; ?>>65 °C</option>
<option style="background: #F89613;" value="70"<?php if ($data['cpu-temperature-maximum'] == 70) echo ' selected="selected"'; ?>>70 °C</option>
<option style="background: #F2711F;" value="75"<?php if ($data['cpu-temperature-maximum'] == 75) echo ' selected="selected"'; ?>>75 °C</option>
<option style="background: #EE5C27;" value="80"<?php if ($data['cpu-temperature-maximum'] == 80) echo ' selected="selected"'; ?>>80 °C</option>
<option style="background: #E9492E;" value="85"<?php if ($data['cpu-temperature-maximum'] == 85) echo ' selected="selected"'; ?>>85 °C</option>
<option style="background: #E53935;" value="90"<?php if ($data['cpu-temperature-maximum'] == 90) echo ' selected="selected"'; ?>>90 °C</option>
</select></td>
</tr>
<tr>
<td style="width: 1%;"><input type="checkbox" name="event-memory-used" value="checked" id="cb-event-memory-used"<?php if ($data['memory-used-enabled'] === true) echo ' checked="checked"'; ?> /><label for="cb-event-memory-used" class="checkbox only-checkbox">&nbsp;</label></td>
<td style="width: 35%;"><?php _e('der Speicherverbrauch (Gesamtspeicher) einen Wert &uuml;berschreitet'); ?></td>
<td><input type="text" name="event-memory-used-text" style="width: 30px !important;" maxlength="3" value="<?php echo $data['memory-used-limit']; ?>" /> %</td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,86 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/settings.overview.weather.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zur &Uuml;bersicht'); ?></span>
<?php showGoBackIcon('?s=overview'); ?>
</div>
<form action="?s=settings&amp;do=overview" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Intervall &Uuml;bersicht-Aktualisierung'); ?></td>
<td><input type="text" name="overview-interval" maxlength="4" style="width: 50px;" value="<?php echo $data['main-overview-interval']; ?>" /> <?php _e('Sekunden'); ?></td>
</tr>
<tr>
<td><?php _e('Zeige "Angeschlossene Ger&auml;te"'); ?></td>
<td><input type="checkbox" id="cb-show-devices" name="show-devices" value="checked"<?php if ($data['main-show-devices'] == 'true') echo ' checked="checked"'; ?> /><label for="cb-show-devices" class="checkbox only-checkbox">&nbsp;</label> <span class="small-info"><?php _e('Das aktivieren verursacht eine l&auml;ngere Ladezeit der &Uuml;bersicht.'); ?></span></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit-main" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Wetter'); ?></span>
</div>
<form action="?s=settings&amp;do=overview" method="post">
<div class="inner-table overflow-auto">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Aktivieren'); ?></td>
<td colspan="2"><input type="checkbox" name="weather-activation" id="cb-weather" value="checked"<?php if ($data['weather-activation'] === true) echo ' checked="checked"'; ?> /><label for="cb-weather" class="checkbox only-checkbox">&nbsp;</label></td>
</tr>
<tr>
<td><?php _e('Dienst'); ?></td>
<td><select name="weather-service">
<optgroup label="<?php _e('Ohne API-Key'); ?>">
<option value="yahoo"<?php if ($data['weather-service'] == 'yahoo') echo ' selected="selected"'; ?> data-url="https://www.yahoo.com/news/weather">Yahoo Weather</option>
<option value="yr"<?php if ($data['weather-service'] == 'yr') echo ' selected="selected"'; ?> data-url="https://www.yr.no/">Yr</option>
</optgroup>
<optgroup label="<?php _e('Mit API-Key'); ?>">
<option value="darksky"<?php if ($data['weather-service'] == 'darksky') echo ' selected="selected"'; ?> data-url="https://darksky.net/">Dark Sky</option>
<option value="openweathermap"<?php if ($data['weather-service'] == 'openweathermap') echo ' selected="selected"'; ?> data-url="https://openweathermap.org/">OpenWeatherMap</option>
<option value="wunderground"<?php if ($data['weather-service'] == 'wunderground') echo ' selected="selected"'; ?> data-url="https://www.wunderground.com/">Wunderground</option>
</optgroup>
</select></td>
<td><input type="text" name="weather-service-token" value="<?php echo $data['weather-service-token']; ?>" placeholder="API-Key" maxlength="32"<?php if ($data['weather-service'] == 'yahoo') echo ' style="display: none;"'; ?> /> <a href="#" class="weather-service-link button" target="_blank"><?php _e('Zum Anbieter'); ?></a></td>
</tr>
<tr>
<td><?php _e('Standort'); ?></td>
<td style="width: 100px; padding-left: 32px;"><?php _e('Land'); ?></td>
<td><select name="weather-location-country">
<option value="germany"<?php if ($data['weather-country'] == 'germany') echo ' selected="selected"'; ?>><?php _e('Deutschland'); ?></option>
<option value="austria"<?php if ($data['weather-country'] == 'austria') echo ' selected="selected"'; ?>><?php _e('&Ouml;sterreich'); ?></option>
<option value="swiss"<?php if ($data['weather-country'] == 'swiss') echo ' selected="selected"'; ?>><?php _e('Schweiz'); ?></option>
<option value="uk"<?php if ($data['weather-country'] == 'uk') echo ' selected="selected"'; ?>><?php _e('Großbritannien'); ?></option>
</select> <?php if (is_array($data['weather-info'])) echo $data['weather-info']['city'].', '.$data['weather-info']['country']; elseif ($data['weather-info'] == 1) echo '<strong class="red">'._t('Server nicht erreichbar!').'</strong>'; ?></td>
</tr>
<tr class="weather-location-type-postcode">
<td></td>
<td><input type="radio" name="weather-location-type" id="cb-weather-location-postcode" value="postcode"<?php if ($data['weather-type'] == 'postcode') echo ' checked="checked"'; ?> /><label for="cb-weather-location-postcode" class="radio"><?php _e('Postleitzahl'); ?></label></td>
<td><input type="text" name="weather-location-postcode-text" value="<?php echo $data['weather-postcode']; ?>" /></td>
</tr>
<tr class="weather-location-type-city">
<td></td>
<td><input type="radio" name="weather-location-type" id="cb-weather-location-city" value="city"<?php if ($data['weather-type'] == 'city') echo ' checked="checked"'; ?> /><label for="cb-weather-location-city" class="radio"><?php _e('Stadt'); ?></label></td>
<td><input type="text" name="weather-location-city-text" value="<?php echo $data['weather-city']; ?>" /></td>
</tr>
<tr class="weather-location-type-coordinates">
<td></td>
<td><input type="radio" name="weather-location-type" id="cb-weather-location-coordinates" value="coordinates"<?php if ($data['weather-type'] == 'coordinates') echo ' checked="checked"'; ?> /><label for="cb-weather-location-coordinates" class="radio"><?php _e('Koordinaten'); ?></label></td>
<td><?php _e('Breitengrad'); ?> <input type="text" name="weather-location-coordinates-latitude-text" value="<?php echo $data['weather-coordinates-latitude']; ?>" /><br />
<?php _e('L&auml;ngengrad'); ?> <input type="text" name="weather-location-coordinates-longitude-text" value="<?php echo $data['weather-coordinates-longitude']; ?>" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit-weather" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,126 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/settings.pi-control.theme.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zum Pi Control'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<form action="?s=settings&amp;do=pi-control" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Theme-Farbe'); ?></td>
<td><input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'red') echo ' checked="checked"'; ?> value="red" id="rb-red" /><label for="rb-red" class="radio only-radio settings-pi-control-theme-color-red">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'pink') echo ' checked="checked"'; ?> value="pink" id="rb-pink" /><label for="rb-pink" class="radio only-radio settings-pi-control-theme-color-pink">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'purple') echo ' checked="checked"'; ?> value="purple" id="rb-purple" /><label for="rb-purple" class="radio only-radio settings-pi-control-theme-color-purple">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'deepPurple') echo ' checked="checked"'; ?> value="deepPurple" id="rb-deepPurple" /><label for="rb-deepPurple" class="radio only-radio settings-pi-control-theme-color-deepPurple">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'indigo') echo ' checked="checked"'; ?> value="indigo" id="rb-indigo" /><label for="rb-indigo" class="radio only-radio settings-pi-control-theme-color-indigo">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'blue') echo ' checked="checked"'; ?> value="blue" id="rb-blue" /><label for="rb-blue" class="radio only-radio settings-pi-control-theme-color-blue">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'lightBlue') echo ' checked="checked"'; ?> value="lightBlue" id="rb-lightBlue" /><label for="rb-lightBlue" class="radio only-radio settings-pi-control-theme-color-lightBlue">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'cyan') echo ' checked="checked"'; ?> value="cyan" id="rb-cyan" /><label for="rb-cyan" class="radio only-radio settings-pi-control-theme-color-cyan">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'teal') echo ' checked="checked"'; ?> value="teal" id="rb-teal" /><label for="rb-teal" class="radio only-radio settings-pi-control-theme-color-teal">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'green') echo ' checked="checked"'; ?> value="green" id="rb-green" /><label for="rb-green" class="radio only-radio settings-pi-control-theme-color-green">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'lightGreen') echo ' checked="checked"'; ?> value="lightGreen" id="rb-lightGreen" /><label for="rb-lightGreen" class="radio only-radio settings-pi-control-theme-color-lightGreen">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'lime') echo ' checked="checked"'; ?> value="lime" id="rb-lime" /><label for="rb-lime" class="radio only-radio settings-pi-control-theme-color-lime">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'yellow') echo ' checked="checked"'; ?> value="yellow" id="rb-yellow" /><label for="rb-yellow" class="radio only-radio settings-pi-control-theme-color-yellow">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'amber') echo ' checked="checked"'; ?> value="amber" id="rb-amber" /><label for="rb-amber" class="radio only-radio settings-pi-control-theme-color-amber">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'orange') echo ' checked="checked"'; ?> value="orange" id="rb-orange" /><label for="rb-orange" class="radio only-radio settings-pi-control-theme-color-orange">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'deepOrange') echo ' checked="checked"'; ?> value="deepOrange" id="rb-deepOrange" /><label for="rb-deepOrange" class="radio only-radio settings-pi-control-theme-color-deepOrange">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'brown') echo ' checked="checked"'; ?> value="brown" id="rb-brown" /><label for="rb-brown" class="radio only-radio settings-pi-control-theme-color-brown">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'grey') echo ' checked="checked"'; ?> value="grey" id="rb-grey" /><label for="rb-grey" class="radio only-radio settings-pi-control-theme-color-grey">&nbsp;</label>
<input type="radio" name="theme-color"<?php if ($data['main-theme-color'] == 'blueGrey') echo ' checked="checked"'; ?> value="blueGrey" id="rb-blueGrey" /><label for="rb-blueGrey" class="radio only-radio settings-pi-control-theme-color-blueGrey">&nbsp;</label></td>
</tr>
<tr>
<td><?php _e('Bezeichnung'); ?></td>
<td><input type="text" name="pi-control-label"<?php echo ' value="'.$data['main-pi-control-label'].'"'; ?> maxlength="32" /> <span class="small-info"><?php _e('Bennene dein Pi Control, um es in Benachrichtigungen besser identifizieren zu k&ouml;nnen.'); ?></span></td>
</tr>
<tr>
<td><?php _e('Sprache'); ?></td>
<td><select name="pi-control-language">
<option value="de"<?php if ($data['main-pi-control-language'] == 'de') echo ' selected="selected"'; ?>><?php _e('Deutsch'); ?></option>
<option value="en"<?php if ($data['main-pi-control-language'] == 'en') echo ' selected="selected"'; ?>><?php _e('Englisch'); ?></option>
</select></td>
</tr>
<tr>
<td><?php _e('Infoanzeige'); ?></td>
<td><select name="pi-control-header-info">
<option value="disable"<?php if ($data['main-pi-control-header-info'] == 'disable') echo ' selected="selected"'; ?>><?php _e('Deaktivieren'); ?></option>
<option value="label"<?php if ($data['main-pi-control-header-info'] == 'label') echo ' selected="selected"'; ?>><?php _e('Bezeichnung'); ?></option>
<option value="label-ip"<?php if ($data['main-pi-control-header-info'] == 'label-ip') echo ' selected="selected"'; ?>><?php echo _t('Bezeichnung').' ('._t('IP-Adresse').')'; ?></option>
<option value="label-hostname"<?php if ($data['main-pi-control-header-info'] == 'label-hostname') echo ' selected="selected"'; ?>><?php echo _t('Bezeichnung').' ('._t('Hostname').')'; ?></option>
<option value="ip"<?php if ($data['main-pi-control-header-info'] == 'ip') echo ' selected="selected"'; ?>><?php _e('IP-Adresse'); ?></option>
<option value="hostname"<?php if ($data['main-pi-control-header-info'] == 'hostname') echo ' selected="selected"'; ?>><?php _e('Hostname'); ?></option>
</select> <span class="small-info"><?php _e('W&auml;hle die Darstellung f&uuml;r die Infoanzeige.'); ?></span></td>
</tr>
<tr>
<td><?php _e('Externer Zugriff'); ?></td>
<td><input type="checkbox" id="cb-external-access" name="external-access" value="checked"<?php if ($data['main-external-access'] == 'true') echo ' checked="checked"'; ?> /><label for="cb-external-access" class="checkbox only-checkbox">&nbsp;</label> <span class="small-info"><?php _e('Auch außerhalb des lokalen Netzwerk erreichbar? Ggf. an Port-Weiterleitung denken.'); ?></span> <?php echo showHelper('6'); ?></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit-main" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Temperatur&uuml;berwachung'); ?></span>
</div>
<div class="inner">
<?php _e('Aktiviere diese Option, um von deinem Raspberry Pi, beim &Uuml;berschreiten einer bestimmten Temperatur, benachrichtigt zu werden. F&uuml;r diesen Fall lassen sich auch spezifische Verhalten festlegen.'); ?>
</div>
<form action="?s=settings&amp;do=pi-control" method="post">
<div class="inner-table overflow-auto">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Aktivieren'); ?></td>
<td colspan="2"><input type="checkbox" name="temperature-activation" id="cb-temperature" value="checked"<?php if ($data['temperature-activation'] === true) echo ' checked="checked"'; ?> /><label for="cb-temperature" class="checkbox only-checkbox">&nbsp;</label><?php if (!empty($data['temperature-last-execution'])) { ?><strong class="red"><?php _e('Pausiert f&uuml;r %s', $data['temperature-last-execution']); ?></strong><?php } ?></td>
</tr>
<tr>
<td><?php _e('H&ouml;chsttemperatur'); ?></td>
<td colspan="2"><select name="temperature-maximum">
<option style="background: #4CAF50;" value="40"<?php if ($data['temperature-maximum'] == 40) echo ' selected="selected"'; ?>>40 °C</option>
<option style="background: #5ABC45;" value="45"<?php if ($data['temperature-maximum'] == 45) echo ' selected="selected"'; ?>>45 °C</option>
<option style="background: #73CA3C;" value="50"<?php if ($data['temperature-maximum'] == 50) echo ' selected="selected"'; ?>>50 °C</option>
<option style="background: #96D732;" value="55"<?php if ($data['temperature-maximum'] == 55) echo ' selected="selected"'; ?>>55 °C</option>
<option style="background: #DCEB1E;" value="60"<?php if ($data['temperature-maximum'] == 60) echo ' selected="selected"'; ?>>60 °C</option>
<option style="background: #FFC107;" value="65"<?php if ($data['temperature-maximum'] == 65) echo ' selected="selected"'; ?>>65 °C</option>
<option style="background: #F89613;" value="70"<?php if ($data['temperature-maximum'] == 70) echo ' selected="selected"'; ?>>70 °C</option>
<option style="background: #F2711F;" value="75"<?php if ($data['temperature-maximum'] == 75) echo ' selected="selected"'; ?>>75 °C</option>
<option style="background: #EE5C27;" value="80"<?php if ($data['temperature-maximum'] == 80) echo ' selected="selected"'; ?>>80 °C</option>
<option style="background: #E9492E;" value="85"<?php if ($data['temperature-maximum'] == 85) echo ' selected="selected"'; ?>>85 °C</option>
<option style="background: #E53935;" value="90"<?php if ($data['temperature-maximum'] == 90) echo ' selected="selected"'; ?>>90 °C</option>
</select></td>
</tr>
<tr>
<td><?php _e('Aktion'); ?></td>
<td style="width: 130px;"><input type="checkbox" name="temperature-action-email" id="cb-temperature-email" value="checked"<?php if ($data['temperature-action-email'] == true) echo ' checked="checked"'; ?> /><label for="cb-temperature-email" class="checkbox"><?php _e('E-Mail senden'); ?></label></td>
<td><input type="text" name="temperature-action-email-text"<?php echo ' value="'.$data['temperature-action-email-text'].'"'; ?> />
<?php if ($data['temperature-action-email-text'] != '') { echo ($data['temperature-action-email-status'] == 0) ? '<form action="?s=settings&amp;do=pi-control" method="post"><input type="submit" name="submit-temperature-confirmation" value="'._t('Best&auml;tigen').'" /></form> <a href="?s=settings&amp;do=pi-control&amp;mail_check" class="button">'._t('&Uuml;berpr&uuml;fen').'</a>' : '<strong class="green">'._t('Best&auml;tigt').'</strong>'; } ?></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="temperature-action-shell" id="cb-temperature-shell" value="checked"<?php if ($data['temperature-action-shell'] == true) echo ' checked="checked"'; ?> /><label for="cb-temperature-shell" class="checkbox"><?php _e('Shell Befehl'); ?></label></td>
<td><input type="text" name="temperature-action-shell-text"<?php echo ' value="'.$data['temperature-action-shell-text'].'"'; ?> /> <span class="small-info"><?php _e('Wird als %s ausgef&uuml;hrt.', $data['whoami']); ?></span></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit-temperature" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Pi Control entfernen'); ?></span>
</div>
<div class="inner">
<?php _e('Wenn dir das Pi Control nicht gef&auml;llt und du es wieder entfernen m&ouml;chtest, schreib mir unten unter "Feedback" doch bitte den Grund. Somit kann ich besser auf m&ouml;gliche Probleme eingehen und Pi Control stetig verbessern.'); ?>
</div>
<div class="inner-end">
<a href="<?php echo $data['configHelp']; ?>" class="button" target="_blank"><?php _e('Anleitung zum Entfernen'); ?></a>
</div>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zu Plugins - Plugin l&ouml;schen'); ?></span>
<?php showGoBackIcon('?s=settings&amp;do=plugins'); ?>
</div>
<form action="?s=settings&amp;do=plugins&amp;delete=<?php echo $data['plugin']['id']; ?>" method="post">
<div class="inner">
<?php _e('M&ouml;chtest du das Plugin <strong>%s</strong> wirklich unwiderruflich l&ouml;schen?', _t($data['plugin']['name'])); ?>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('L&ouml;schen'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,26 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zu Plugins'); ?></span>
<?php showGoBackIcon('?s=plugins'); ?>
</div>
<?php $i = 0; foreach ($data['plugins'] as $plugin) { $i++; ?>
<div class="inner-table settings-plugins-table-list<?php echo ($i != count($data['plugins'])) ? ' padding-0' : ''; ?>">
<table class="table table-borderless<?php echo ($i%2 != 0) ? ' table-reverse' : ''; ?>">
<tr>
<td><strong><?php _e($plugin['name']); ?></strong><span><?php _e('Version %s', $plugin['version']['name']); ?></span></td>
<td><a href="?s=plugins&amp;id=<?php echo $plugin['id']; ?>&amp;settings" class="text-decoration-none"<?php if ($plugin['settings'] == false) echo ' style="visibility: hidden"'; ?>><span class="button button-small"><?php _e('Einstellungen'); ?></span></a>
<a href="?s=settings&amp;do=plugins&amp;status=<?php echo $plugin['id']; ?>" class="text-decoration-none"><span class="button button-small"><?php echo ($plugin['disabled'] == true) ? _t('Aktivieren') : _t('Deaktivieren'); ?></span></a>
<a href="?s=settings&amp;do=plugins&amp;delete=<?php echo $plugin['id']; ?>" class="text-decoration-none"><span class="button button-small"><?php _e('L&ouml;schen'); ?></span></a></td>
<td><?php _e($plugin['description']); ?></td>
</tr>
</table>
</div>
<?php } if (empty($data['plugins'])) { ?>
<div class="inner-info">
<div><?php _e('Es sind momentan noch keine Plugins installiert.'); ?></div>
</div>
<?php } ?>
</div>
</div>

View File

@@ -0,0 +1,38 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zur Statistik'); ?></span>
<?php showGoBackIcon('?s=statistic'); ?>
</div>
<div class="inner">
<?php _e('Blende nicht ben&ouml;tigte Statistiken aus, um die Ladezeiten zu verbessern und um besser den &Uuml;berblick zu behalten.'); ?>
</div>
<div class="inner-info">
<div><?php _e('Statistiken werden, unabh&auml;ngig vom Anzeigestatus, aufgezeichnet.'); ?></div>
</div>
<form action="?s=settings&amp;do=statistic" method="post">
<div class="inner-table">
<table class="table table-borderless">
<tr>
<th style="width: 5%;"></th>
<th style="width: 75%;"><?php _e('Name'); ?></th>
<th style="width: 10%;" class="table-center"><?php _e('Herunterladen'); ?></th>
<th style="width: 10%;"></th>
</tr>
<?php foreach ($data['statistics'] as $id => $statistic) { ?>
<tr>
<td align="center"><input type="checkbox" name="check[]" id="cb-<?php echo $id; ?>" value="<?php echo $id; ?>" <?php if ($statistic['visible'] == true) echo 'checked="checked"'; ?> /><label class="checkbox only-checkbox" for="cb-<?php echo $id; ?>">&nbsp;</label></td>
<td><?php echo $statistic['array']['title'] ?></td>
<td class="table-center"><a href="?s=settings&amp;do=statistic&amp;download=<?php echo $id; ?>" class="text-decoration-none"><span class="button button-small">CSV</span></a></td>
<td class="table-right"><a href="?s=settings&amp;do=statistic&amp;reset=<?php echo $id; ?>" class="text-decoration-none"><span class="button button-small"><?php _e('Zur&uuml;cksetzen'); ?></span></a></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zur Statistik - Verlauf zur&uuml;cksetzen'); ?></span>
<?php showGoBackIcon('?s=settings&amp;do=statistic'); ?>
</div>
<form action="?s=settings&amp;do=statistic&amp;reset=<?php echo $data['log']; ?>&amp;confirm" method="post">
<div class="inner">
<?php _e('M&ouml;chtest du den Verlauf von %s wirklich zur&uuml;cksetzen?', '<strong>'.$data['label'].'</strong>'); ?>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Zur&uuml;cksetzen'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,93 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<script type="text/javascript" src="public_html/js/settings.troubleshooting.cron_selection.js"></script>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Problembehandlung'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<div class="inner">
<?php _e('Die Problembehandlung kann dir bei Problemen helfen und bei Bedarf diese sogar beseitigen.'); ?>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Dateien und Ordner'); ?></span>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th><?php _e('Datei'); ?> / <?php _e('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&ouml;ß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) ? '&#10004;' : '&#10006;'; ?></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['configHelpFilesFolders']; ?>" target="_blank" class="button"><?php _e('Anleitung zur Problembehebung'); ?></a>
</div>
<?php } ?>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Cron f&uuml;r Pi Control'); ?></span>
</div>
<div class="inner">
<?php _e('Der Cron f&uuml;r dein Pi Control sieht folgendermaßen aus:'); ?><br /><br />
<span id="cron-entry" style="padding: 5px; background: #EFEFEF; display: inline-block; font-family: Consolas, 'Andale Mono', 'Lucida Console', 'Lucida Sans Typewriter', Monaco, 'Courier New', monospace" onDblClick="selecttxt('cron-entry')"><?php echo $data['cronEntry']; ?></span> <span class="small-info"><?php _e('Mit Doppelklick alles markieren.'); ?></span>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('In Crontab eingetragen'); ?></td>
<td class="<?php echo ($data['cronMatch'] === 1) ? 'green' : 'red'; ?>"><?php echo ($data['cronMatch'] === 1) ? '&#10004;' : '&#10006;'; ?></td>
</tr>
<tr>
<td><?php _e('PHP-CLI installiert'); ?></td>
<td class="<?php echo ($data['cronPHPCLI']) ? 'green' : 'red'; ?>"><?php echo ($data['cronPHPCLI']) ? '&#10004;' : '&#10006;'; ?></td>
</tr>
<tr>
<td><?php _e('Letzte Ausf&uuml;hrung'); ?></td>
<td class="<?php echo ($data['cronLastExecutionBool']) ? 'green' : 'red'; ?>"><?php echo $data['cronLastExecution']; ?></td>
</tr>
<tr>
<td><?php _e('Letzter Eintrag Log'); ?></td>
<td class="<?php echo ($data['cronLastExecutionLogBool']) ? 'green' : 'red'; ?>"><?php echo $data['cronLastExecutionLog']; ?></td>
</tr>
<tr>
<td><?php _e('Berechtigung'); ?></td>
<td class="<?php echo ($data['cronPermissionBool']) ? 'green' : 'red'; ?>"><?php echo $data['cronPermission']; ?></td>
</tr>
<tr>
<td><?php _e('Benutzer:Gruppe'); ?></td>
<td class="<?php echo ($data['cronUserGroupBool']) ? 'green' : 'red'; ?>"><?php echo $data['cronUserGroup']; ?></td>
</tr>
<tr>
<td><?php _e('Zeichenkodierung'); ?></td>
<td class="<?php echo ($data['cronCharacterEncodingBool']) ? 'green' : 'red'; ?>"><?php echo $data['cronCharacterEncoding']; ?></td>
</tr>
</table>
</div>
<?php if ($data['cronError'] === 1) { ?>
<div class="inner-end">
<form action="?s=settings&amp;do=troubleshooting" method="post"><input type="submit" name="cronSubmit" value="<?php _e('Problem beheben'); ?>" /></form>
</div>
<?php } elseif ($data['cronError'] === 2) { ?>
<div class="inner-end">
<a href="<?php echo $data['configHelpCron']; ?>" target="_blank" class="button"><?php _e('Anleitung zur Problembehebung'); ?></a>
</div>
<?php } ?>
</div>
</div>

View File

@@ -0,0 +1,72 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div class="sidebar order-2">
<div class="box">
<div class="inner-header">
<span><?php _e('Version'); ?></span>
</div>
<div class="inner">
<strong class="<?php echo ($data['updateStatus'] instanceof Update) ? 'red' : 'green'; ?>"><?php echo $data['configVersion']; ?></strong>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('E-Mail Benachrichtigung'); ?></span>
</div>
<div class="inner">
<?php _e('Wenn du zuk&uuml;nftig eine E-Mail bei einer neuen Version des Pi Control erhalten m&ouml;chtest, dann kannst du dich &uuml;ber den folgenden Button in die Liste eintragen.'); ?>
</div>
<div class="inner-end">
<a href="<?php echo $data['configMailUrl']; ?>" class="button" target="_blank"><?php _e('E-Mail eintragen'); ?></a>
</div>
</div>
</div>
<div class="container-600 order-1">
<div class="box">
<div class="inner-header">
<span><?php _e('Aktualisierung'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<div class="inner">
<?php if ($data['updateStatus'] instanceof Update) { ?>
<strong class="red"><?php _e('Dein Pi Control ist nicht mehr aktuell. Version %s ist verf&uuml;gbar!', $data['updateStatus']->getName()); ?></strong><br /><br /><br />
<span class="subtitle"><?php _e('Neuerungen in Version %s', $data['updateStatus']->getName()); ?></span><br /><br />
<?php echo $data['updateStatus']->getChangelog(); ?>
<?php } elseif ($data['updateStatus'] === false) { ?>
<strong class="green"><?php _e('Dein Pi Control ist auf dem neusten Stand.'); ?></strong>
<?php } else { ?>
<strong class="red"><?php _e('Bei der Verbindung zum Server ist ein unerwarteter Fehler aufgetreten. Fehlercode: %d', $data['updateStatus']); ?></strong>
<?php } ?>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Aktualisierung installieren'); ?></span>
</div>
<div class="inner">
<?php _e('Ist eine Aktualisierung verf&uuml;gbar, kannst du &uuml;ber folgenden Button dieses herunterladen und anschließend installieren.'); ?>
</div>
<div class="inner-end">
<form action="?s=settings&amp;do=update" method="post">
<input type="submit" name="update" value="<?php _e('Aktualisierung runterladen &amp; installieren'); ?>"<?php if (!$data['updateStatus'] instanceof Update || $data['updateError'] == true) { echo ' disabled="disabled"'; } ?> />
</form>
</div>
</div>
</div>
<div class="clear-both"></div>
<div class="order-3">
<div class="box">
<div class="inner-header">
<span><?php _e('Pi Control Beta'); ?></span>
</div>
<div class="inner">
<?php _e('Mit der Teilnahme an Pi Control Beta erh&auml;ltst du, bereits vor Ver&ouml;ffentlichung der finalen Version von Pi Control, einen ersten Einblick in kommende Funktionen und Neuerungen. Durch die Teilnahme bekommst du, neben der Aktualisierungen f&uuml;r die Beta, auch die regul&auml;ren und stabilen Aktualisierungen angeboten.<br />Du kannst jederzeit von Pi Control Beta zur&uuml;cktreten, ein Zur&uuml;ckstufen auf eine &auml;ltere/regul&auml;re Version ist allerdings nicht m&ouml;glich. Anschließend erh&auml;ltst du wieder wie gewohnt die stabilen Aktualisierungen.'); ?>
<br /><br />
<strong class="red"><?php _e('BEACHTE: W&auml;hrend der Beta kann Pi Control unerwartet Auffallen, sei es durch Fehler oder Datenverlust (nur Pi Control). Sende mir deshalb unbedingt bei Fehlern dein Feedback (siehe Unten).'); ?></strong>
</div>
<div class="inner-end">
<form action="?s=settings&amp;do=update" method="post">
<input type="submit" name="beta" value="<?php _e($data['updateStage'] == 'release' ? 'An Pi Control Beta teilnehmen' : 'Von Pi Control Beta zur&uuml;cktreten'); ?>" />
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,60 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zum Benutzer'); ?></span>
<?php showGoBackIcon('?s=settings'); ?>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th style="width: 30%;"><?php _e('Benutzername'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Erstellt'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Letzte Aktivit&auml;t'); ?></th>
<th style="width: 30%;"></th>
</tr>
<?php foreach ($data['allUsers'] as $key => $user) { ?>
<tr>
<td><?php echo $user['username']; ?></td>
<td class="table-center"><?php echo date('d.m.Y H:i', $user['created']); ?></td>
<td class="table-center"><?php echo ($user['last_login'] == 0) ? _t('Noch nie angemeldet') : date('d.m.Y H:i', $user['last_login']); ?></td>
<td class="table-right"><a href="?s=settings&amp;do=user&amp;edit=<?php echo substr($key, 5); ?>" class="button button-small"><?php _e('Bearbeiten'); ?></a> <a href="?s=settings&amp;do=user&amp;delete=<?php echo substr($key, 5); ?>" class="button button-small"><?php _e('L&ouml;schen'); ?></a></td>
</tr>
<?php } ?>
</table>
</div>
<div class="inner-end">
<a href="?s=settings&amp;do=user&amp;add" class="button"><?php _e('Hinzuf&uuml;gen'); ?></a>
</div>
</div>
<div class="box">
<div class="inner-header">
<span><?php _e('Angemeldete Benutzer'); ?></span>
</div>
<div class="inner-info">
<div><?php _e('Benutzer ohne fester Anmeldung werden nach 12 Stunden Inaktivit&auml;t automatisch abgemeldet.'); ?></div>
</div>
<div class="inner-table overflow-auto">
<form action="?s=settings&amp;do=user" method="post">
<table class="table table-borderless">
<tr>
<th style="width: 30%;"><?php _e('Benutzername'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Angemeldet am'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Angemeldet von'); ?></th>
<th style="width: 20%;" class="table-center"><?php _e('Angemeldet bleiben'); ?></th>
<th style="width: 10%;"></th>
</tr>
<?php foreach ($data['loggedInUsers'] as $key => $user) { ?>
<tr>
<td><?php echo $user['username']; if ($user['current_online']) { ?> <strong class="green">[<?php _e('Aktuelle Sitzung'); ?>] </strong><?php } ?></td>
<td class="table-center"><?php echo date('d.m.Y H:i', $user['created']); ?></td>
<td class="table-center"><?php echo $user['address']; ?></td>
<td class="table-center"><?php echo ($user['remember_me'] === true) ? _t('Ja') : _t('Nein'); ?></td>
<td class="table-right"><button class="button-small" name="logout" value="<?php echo substr($key, 6); ?>"><?php _e('Abmelden'); ?></button></td>
</tr>
<?php } ?>
</table>
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,30 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zum Benutzer - Benutzer hinzuf&uuml;gen'); ?></span>
<?php showGoBackIcon('?s=settings&amp;do=user'); ?>
</div>
<form action="?s=settings&amp;do=user&amp;add" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?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('Hinzuf&uuml;gen'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,29 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zum Benutzer - Benutzer l&ouml;schen'); ?></span>
<?php showGoBackIcon('?s=settings&amp;do=user'); ?>
</div>
<form action="?s=settings&amp;do=user&amp;delete=<?php echo $data['lowerUsername']; ?>" method="post">
<div class="inner">
<?php _e('Bitte gebe zur Best&auml;tigung das Passwort des Benutzers an.'); ?>
</div>
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Benutzername'); ?></td>
<td><?php echo $data['username']; ?></td>
</tr>
<tr>
<td><?php _e('Passwort'); ?></td>
<td><input type="password" name="password" maxlength="64" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('L&ouml;schen'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Einstellungen zum Benutzer - Benutzer bearbeiten'); ?></span>
<?php showGoBackIcon('?s=settings&amp;do=user'); ?>
</div>
<form action="?s=settings&amp;do=user&amp;edit=<?php echo $data['lowerUsername']; ?>" method="post">
<div class="inner-table">
<table class="table table-borderless table-form">
<tr>
<td><?php _e('Benutzername'); ?></td>
<td><?php echo $data['username']; ?></td>
</tr>
<tr>
<td><?php _e('Altes Passwort'); ?></td>
<td><input type="password" name="passwordOld" maxlength="64" /></td>
</tr>
<tr>
<td><?php _e('Neues Passwort'); ?></td>
<td><input type="password" name="passwordNew" maxlength="64" /></td>
</tr>
<tr>
<td><?php _e('Neues Passwort wiederholen'); ?></td>
<td><input type="password" name="passwordNew2" maxlength="64" /></td>
</tr>
</table>
</div>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Speichern'); ?>" />
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,11 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Raspberry Pi wird heruntergefahren'); ?></span>
</div>
<div class="inner">
<?php _e('Sollte dein Raspberry Pi wieder hochgefahren sein, kommst du hier <a href="%s">zur&uuml;ck zur &Uuml;bersicht.</a>', $data['overviewUrl']); ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,50 @@
<?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" />
<title>Pi Control</title>
</head>
<body>
<!-- Header -->
<div id="header">
<input type="checkbox" id="header-mobile" />
<div id="inner-header">
<label for="header-mobile"></label>
<a href="?s=overview" id="header-logo"><img src="public_html/img/logo.svg" /></a>
<div id="header-navi">
</div>
</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;">&#10084;</span>', '<a href="https://willy-tech.de/" target="_blank">Willy Fritzsche</a>'); ?> 2013-2017</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,88 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<!-- Container -->
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('SSH-Login'); ?></span>
</div>
<?php if ($data['logged_in'] === false) { ?>
<form action="?s=ssh_login" method="post">
<div class="inner">
<strong class="red"><?php _e('Du bist noch nicht angemeldet. Dadurch kannst du einige Funktionen nicht nutzen.'); ?></strong>
</div>
<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 &uuml;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['ssh_info']['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['ssh_info']['username']; ?>" /></td>
</tr>
<tr>
<td><strong><?php _e('SSH-Passwort'); ?></strong></td>
<td><input type="password" name="password" style="width: 40%;" /></td>
</tr>
<tr>
<td><strong><?php _e('SSH-Login speichern?'); ?></strong></td>
<td><input type="checkbox" name="remember-me" value="checked" id="ssh-login-passwd-checkbox" /><label for="ssh-login-passwd-checkbox" class="checkbox only-checkbox">&nbsp;</label> <span class="small_info"><?php _e('Speichert das Passwort, damit nicht nach jeder Session neu angemeldet werden muss.'); ?></span></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 &uuml;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['ssh_info']['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['ssh_info']['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&ouml;tig)'); ?></strong></td>
<td><input type="password" name="password_" style="width: 40%;" /></td>
</tr>
<tr>
<td><strong><?php _e('SSH-Login speichern?'); ?></strong></td>
<td><input type="checkbox" name="remember-me_" value="checked" id="ssh-login-pubkey-checkbox" /><label for="ssh-login-pubkey-checkbox" class="checkbox only-checkbox">&nbsp;</label> <span class="small_info"><?php _e('Speichert das Passwort, damit nicht nach jeder Session neu angemeldet werden muss.'); ?></span></td>
</tr>
</table>
</div>
</label>
<div class="inner-end">
<input type="submit" name="submit" value="<?php _e('Anmelden'); ?>" />
</div>
</form>
<?php } else { ?>
<div class="inner">
<strong class="green"><?php _e('Du bist bereits angemeldet mit dem Benutzer %s.', $data['ssh_info']['username']); ?></strong>
</div>
<div class="inner-end">
<a href="?s=ssh_login&amp;logout"><button><?php _e('Abmelden'); ?></button></a>
</div>
<?php } ?>
</div>
</div>
<div class="clear_both"></div>

View File

@@ -0,0 +1,77 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<noscript>
<div class="box error">
<div>
<div class="inner-header">
<span><?php _e('JavaScript deaktiviert') ?></span>
</div>
<div class="inner">
<?php _e('Bitte aktiviere JavaScript, um dir die Statistiken anzusehen.'); ?>
</div>
</div>
</div>
</noscript>
<div class="sidebar order-2">
<div class="box">
<div class="inner-header">
<span><?php _e('Zeitraum'); ?></span>
</div>
<div class="inner">
<select onchange="changeRange(this)">
<option name="" value="seven"><?php _e('Alles (7 Tage)'); ?></option>
<option name="" value="six"><?php _e('Letzten 6 Tage'); ?></option>
<option name="" value="five"><?php _e('Letzten 5 Tage'); ?></option>
<option name="" value="four"><?php _e('Letzten 4 Tage'); ?></option>
<option name="" value="three"><?php _e('Letzten 3 Tage'); ?></option>
<option name="" value="two"><?php _e('Letzten 2 Tage'); ?></option>
<option name="" value="one"><?php _e('Letzten 24 Stunden'); ?></option>
</select>
</div>
</div>
</div>
<!-- Container -->
<div class="container-600 order-1">
<div class="box">
<div class="inner-header">
<span><?php _e('Statistik'); ?></span>
<?php showSettingsIcon('?s=settings&amp;do=statistic'); ?>
</div>
<?php if ($data['msgInfo'] == 'invisible') { ?>
<div class="inner-info">
<div><?php _e('Alle Statistiken sind ausgeblendet!'); ?></div>
</div>
<?php } elseif ($data['msgInfo'] == 'empty') { ?>
<div class="inner-info">
<div><?php _e('Es sind noch keine Statistiken verf&uuml;gbar. Werte werden alle 5 Minuten eingetragen.'); ?></div>
</div>
<?php } ?>
</div>
</div>
<div class="clear-both"></div>
<div class="order-3">
<?php foreach ($data['statistics'] as $statistic) { ?>
<div class="box google-controls" id="dashboard_log_<?php echo $statistic['array']['id']; ?>">
<div class="inner-header">
<span><?php _e($statistic['array']['title']); ?></span>
</div>
<div class="inner text-center padding-0" id="chart_log_<?php echo $statistic['array']['id']; ?>">
<img src="public_html/img/loader.svg" style="margin: 20px;" />
</div>
<div class="inner text-center" id="chart_control_log_<?php echo $statistic['array']['id']; ?>">
</div>
</div>
<?php } ?>
</div>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="public_html/js/statistic_builder.js"></script>
<script type="text/javascript">
google.load('visualization', '1', {packages:['controls']});
google.setOnLoadCallback(createTable);
function createTable()
{
<?php foreach ($data['statistics'] as $statistic) { ?>
statisticBuilder(<?php echo $statistic['json']; ?>, null);
<?php } ?>
}
</script>

View File

@@ -0,0 +1,55 @@
<?php if (!defined('PICONTROL')) exit(); ?>
<style>
.system_msg{color: #01a7db; font-style: italic;}
.user_name{font-weight:bold;}
.user_message{color: #FFFFFF;}
pre { margin: 0; }
</style>
<script language="javascript" type="text/javascript">
var ip = '<?php echo $_SERVER['SERVER_ADDR']; ?>';
var port = <?php echo $data['port']; ?>;
var cookie = '<?php echo $data['cookie']; ?>';
</script>
<script language="javascript" type="text/javascript" src="public_html/js/terminal.websocket.js"></script>
<div class="sidebar">
<div class="box">
<div class="inner-header">
<span><?php _e('Status'); ?></span>
</div>
<div class="inner">
<strong id="status"><?php _e('Lade...'); ?></strong><br /><br />
<select name="terminal">
<?php foreach ($data['ports'] as $index => $port) { ?>
<option style="background: <?php echo ($port['active'] === true) ? '#73CA3C' : '#E9492E'; ?>;" value="<?php echo $port['port']; ?>"<?php if ($data['port'] == $port['port']) echo ' selected="selected"'; ?>><?php _e('Terminal %d (%s)', $index+1, ($port['active'] === true) ? _t('Online') : _t('Offline')); ?></option>
<?php } ?>
</select>
<div id="frame"></div>
</div>
<div class="inner-end">
<input type="button" name="close" value="<?php _e('Verbindung trennen'); ?>" />
</div>
</div>
</div>
<!-- Container -->
<div class="container-600">
<div class="box">
<div class="inner-header">
<span><?php _e('Terminal'); ?></span>
</div>
<div class="inner">
<?php _e('Das Terminal bietet dir die M&ouml;glichkeit, einfache Befehle direkt im Pi Control auszuf&uuml;hren.'); ?>
</div>
<div class="inner overflow-auto" id="terminal" style="background: #000000; color: #CCCCCC; padding: 5px; font-family: monospace; height: 360px;"></div>
<div class="inner" style="padding-top: 15px;">
<table style="width: 100%;">
<tr>
<td style="width: 5%;"><?php _e('Befehl: '); ?></td>
<td><input type="text" name="command" id="command" style="width: 100%; box-sizing: border-box;" /></td>
<td style="width: 5%;"><input type="button" id="submit" value="<?php _e('Abschicken'); ?>" /></td>
</tr>
</table>
<br /><input type="button" id="cancel" value="Strg + C" />
</div>
</div>
</div>
<div class="clear_both"></div>

View File

@@ -0,0 +1,30 @@
<div>
<div class="box">
<div class="inner-header">
<span><?php _e('Benutzer/Gruppen'); ?></span>
<?php if ($data['users_cache_hint'] != NULL) echo $data['users_cache_hint']; ?>
</div>
<div class="inner-table overflow-auto">
<table class="table table-borderless">
<tr>
<th style="width: 30%;"><?php _e('Benutzername'); ?></th>
<th style="width: 15%;" class="table-center"><?php _e('Benutzer-ID'); ?></th>
<th style="width: 15%;" class="table-center"><?php _e('Gruppen-ID'); ?></th>
<th style="width: 8%;" class="table-center"><?php _e('Port'); ?></th>
<th style="width: 17%;" class="table-center"><?php _e('Letzte Anmeldung'); ?></th>
<th style="width: 15%;" class="table-center"><?php _e('Von'); ?></th>
</tr>
<?php foreach ($data['all_users'] as $value) { ?>
<tr>
<td><?php if ($value['isLoggedIn'] === true) { ?><strong class="green">[<?php _e('Angemeldet'); ?>] </strong><?php } echo $value['username']; if ($value['isLoggedIn'] === true) { ?><div style="color: #666666; margin-top: 3px; margin-left: 20px;"><?php foreach ($value['loggedIn'] as $value2) { _e('An %s am %s um %s von %s', $value2['port'], formatTime($value2['lastLogin'], 'd.m.Y'), formatTime($value2['lastLogin'], 'H:i'), '<a href="http://'.$value2['lastLoginAddress'].'" target="_blank">'.$value2['lastLoginAddress'].'</a>'); ?><br /><?php } ?></div><?php } ?></td>
<td valign="top" class="table-center"><?php echo $value['userId']; ?></td>
<td valign="top" class="table-center"><?php echo $value['groupId']; ?></td>
<td valign="top" class="table-center"><?php echo ($value['port'] == '') ? '-' : $value['port']; ?></td>
<td valign="top" class="table-center"><?php if ($value['lastLogin'] == 0) { _e('Noch nie angemeldet'); } else { echo formatTime($value['lastLogin']); } ?></td>
<td valign="top" class="table-center"><?php if ($value['lastLoginAddress'] == '') { echo '-'; } else { echo '<a href="http://'.$value['lastLoginAddress'].'" target="_blank">'.$value['lastLoginAddress'].'</a>'; } ?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
</div>