Init Repo
1999
public_html/css/style.css.php
Normal file
1
public_html/img/arrow-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#CCC"><path d="M11 1l2.8 2.8L7.6 10H24v4H7.6l6.2 6.2L11 23 0 12z"/></svg>
|
||||
|
After Width: | Height: | Size: 162 B |
1
public_html/img/control-icons.svg
Normal 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 |
1
public_html/img/cross-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#CCC"><path d="M24 20.2L15.7 12 24 3.7 20 0 12 8.3 3.7 0 0 4 8.3 12 0 20.3 4 24l8.2-8.3 8.3 8.2z"/></svg>
|
||||
|
After Width: | Height: | Size: 194 B |
BIN
public_html/img/favicon/android-chrome-144x144.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
public_html/img/favicon/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
public_html/img/favicon/android-chrome-36x36.png
Normal file
|
After Width: | Height: | Size: 883 B |
BIN
public_html/img/favicon/android-chrome-48x48.png
Normal file
|
After Width: | Height: | Size: 993 B |
BIN
public_html/img/favicon/android-chrome-72x72.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
public_html/img/favicon/android-chrome-96x96.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
public_html/img/favicon/apple-touch-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
public_html/img/favicon/apple-touch-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
public_html/img/favicon/apple-touch-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
public_html/img/favicon/apple-touch-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 911 B |
BIN
public_html/img/favicon/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
public_html/img/favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
41
public_html/img/favicon/manifest.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "Pi Control",
|
||||
"icons": [
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": 0.75
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": 1
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": 1.5
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": 2
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": 3
|
||||
},
|
||||
{
|
||||
"src": "public_html\/img\/favicon\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
20
public_html/img/favicon/safari-pinned-tab.svg
Normal 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 |
1
public_html/img/gear-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#CCC"><path d="M24 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 |
1
public_html/img/help-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2zm0-2C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm1.3 17a1.3 1.3 0 1 1-2.6 0 1.3 1.3 0 0 1 2.6 0zm1.3-10C14 6.4 13 6 12 6c-2 0-3.5 1.6-3.5 4h2c0-1.5.8-2 1.6-2 .7 0 1.4.4 1.4 1.2 0 1-.4 1.3-1 1.8-1.4 1.4-1.4 2-1.4 3.5h2c0-.7 0-1.2 1-2.2.6-.7 1.5-1.6 1.5-3 0-1-.3-1.7-1-2.3z"/></svg>
|
||||
|
After Width: | Height: | Size: 446 B |
1
public_html/img/info-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="rgba(0,0,0,0.2)"><path d="M12 24c6.63 0 12-5.37 12-12S18.63 0 12 0 0 5.37 0 12s5.37 12 12 12zm1-6h-2v-8h2v8zM12 5.75a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 259 B |
1
public_html/img/loader.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#000"><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
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="94" height="24" viewBox="0 0 94 24" fill="#FFF"><path d="M5.087 0c-.12 0-.252.05-.4.166-.363-.14-.715-.188-1.03.096C3.17.2 3.013.33 2.893.482c-.107 0-.8-.11-1.116.363-.797-.094-1.05.47-.764.994-.163.25-.332.5.05.98-.135.27-.052.56.265.91-.083.377.08.643.377.85-.056.515.472.814.63.92.06.3.186.584.788.74.1.448.462.525.813.62-1.16.672-2.153 1.56-2.146 3.733l-.17.303c-1.33.808-2.525 3.406-.655 5.517.122.66.327 1.136.51 1.66.272 2.118 2.052 3.11 2.52 3.226.69.524 1.422 1.02 2.414 1.37.933.963 1.946 1.33 2.964 1.33h.045c1.017 0 2.03-.367 2.965-1.33.99-.35 1.724-.846 2.412-1.37.47-.118 2.25-1.11 2.522-3.226.18-.525.386-1 .508-1.66 1.87-2.112.674-4.71-.655-5.518l-.17-.303c.007-2.174-.986-3.06-2.145-3.734.35-.095.712-.172.812-.62.602-.156.728-.44.79-.74.156-.106.684-.405.63-.92.294-.207.458-.473.375-.85.317-.35.4-.64.266-.91.382-.48.213-.73.05-.98.286-.526.034-1.09-.764-.995C16.7.372 16.006.48 15.9.48c-.12-.15-.278-.28-.764-.218-.315-.285-.667-.236-1.03-.096-.43-.34-.716-.067-1.042.036-.523-.17-.642.063-.898.158-.57-.12-.743.142-1.016.42l-.317-.01c-.86.505-1.286 1.535-1.437 2.065-.15-.53-.577-1.56-1.436-2.066l-.317.01C7.37.5 7.197.24 6.628.36 6.37.265 6.252.032 5.73.202c-.214-.068-.41-.208-.643-.2zm.03.61c.437.16.66.37.898.574.08-.108.203-.187.054-.448.31.178.542.39.715.624.19-.122.114-.29.115-.442.322.262.526.54.776.812.05-.037.094-.16.133-.358.767.745 1.852 2.62.278 3.365C6.75 3.632 5.15 2.83 3.378 2.227 5.656 3.402 6.98 4.352 7.706 5.16c-.37 1.49-2.31 1.56-3.02 1.517.146-.068.267-.148.31-.273-.178-.126-.808-.013-1.25-.26.17-.035.25-.07.33-.194-.417-.133-.865-.247-1.13-.467.143 0 .276.032.462-.097-.373-.2-.77-.36-1.08-.667.194 0 .4 0 .462-.074-.34-.21-.63-.446-.867-.703.27.033.383 0 .448-.042-.256-.263-.583-.486-.738-.812.2.07.383.095.515-.01-.088-.197-.463-.314-.68-.776.212.02.435.046.48 0-.098-.398-.266-.622-.43-.855.45-.01 1.134 0 1.103-.036l-.28-.283c.442-.12.892.02 1.22.12.146-.115-.003-.262-.182-.41.374.05.712.135 1.018.253C4.56.943 4.29.795 4.16.648c.578.11.823.264 1.067.418.176-.17.01-.313-.11-.46zm8.61 0c-.12.146-.286.29-.11.46.245-.155.49-.31 1.068-.42-.13.15-.4.296-.236.444.304-.12.643-.205 1.017-.255-.18.15-.33.295-.182.41.327-.1.778-.24 1.22-.12l-.28.285c-.03.038.652.03 1.103.036-.164.233-.332.457-.43.856.044.046.268.02.48 0-.217.46-.593.578-.68.776.132.1.315.075.515.01-.156.325-.482.548-.74.812.066.047.18.075.45.042-.24.257-.527.492-.868.703.06.07.268.067.46.072-.308.307-.706.466-1.078.667.186.128.318.098.46.096-.263.22-.71.334-1.127.467.08.125.158.16.327.194-.44.247-1.07.134-1.25.26.044.125.165.206.31.273-.708.042-2.647-.026-3.018-1.515.724-.81 2.05-1.76 4.327-2.934-1.772.603-3.372 1.406-4.71 2.51-1.574-.743-.49-2.62.278-3.364.04.197.083.32.134.358.25-.273.453-.55.775-.813 0 .155-.077.322.115.444.172-.236.406-.446.715-.625-.15.26-.025.34.055.448.236-.206.46-.415.897-.576zM9.27 6.743h.118c1.115-.012 2.497.833 2.49 1.63-.003.7-.97 1.27-2.482 1.26-1.482-.02-2.48-.715-2.476-1.396.003-.543 1.136-1.467 2.35-1.494zm-3.586.473c.22 0 .446.02.677.06.777.13-3.72 4.057-3.79 3.18-.06-2.034 1.322-3.25 3.114-3.24zm7.175.067c1.79-.01 3.175 1.206 3.112 3.24-.07.877-4.566-3.05-3.79-3.18.23-.04.457-.06.677-.06zm-.65 2.44a2.888 2.448 55.966 0 1 1.9 5.166 2.888 2.448 55.966 0 1-3.184-4.82 2.888 2.448 55.966 0 1 1.283-.346zm-5.62.134a2.448 2.888 34.034 0 1 1.283.347 2.448 2.888 34.034 0 1-3.184 4.82 2.448 2.888 34.034 0 1 1.9-5.167zm9.632 1.477c.034 0 .07 0 .11.014 2.024 1.155 1.673 3.73.58 4.61-.962.426-1.752-4.608-.69-4.626zm-13.892.067c1.062.018.272 5.05-.69 4.624-1.093-.88-1.444-3.453.58-4.61.04-.01.076-.015.11-.014zm7.202 3.476a2.73 2.517 0 0 1 2.65 2.516 2.73 2.517 0 0 1-5.46 0 2.73 2.517 0 0 1 2.81-2.516zm5.953.936c.213-.01.412.054.592.194.485.482.77 2.3-.08 3.39-1.167 1.62-2.75 1.683-3.338 1.232-.617-.582-.147-2.386.698-3.375.725-.82 1.487-1.424 2.127-1.44zM3.148 16.2c.703-.015 1.567.54 2.267 1.353.78.94 1.136 2.593.485 3.08-.617.37-2.113.218-3.177-1.31-.718-1.282-.625-2.587-.12-2.97.163-.1.348-.15.545-.154zM9.674 20.7c1.065.01 2.358.39 2.36.888.02.517-1.333 1.684-2.642 1.662-1.356.058-2.685-1.11-2.668-1.516-.02-.594 1.65-1.058 2.74-1.03h.21z"/><text style="line-height:125%" x="23.406" y="1046.165" font-size="2.594" font-family="sans-serif" letter-spacing="0" word-spacing="0" transform="translate(0 -1028.362)"><tspan x="23.406" y="1046.165"><tspan x="23.406" y="1046.165" style="-inkscape-font-specification:Arial" font-size="16.211" font-family="Arial">Pi Control</tspan></tspan></text></svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
1
public_html/img/network-signal-icons.svg
Normal 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 |
1
public_html/img/refresh-icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/update-loader.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="42" height="42" viewBox="0 0 42 42" fill="#FFA000"><defs><g id="gear"><path id="gear" d="M24 13.616v-3.232c-1.65-.587-2.694-.752-3.22-2.02-.526-1.27.1-2.134.848-3.707l-2.285-2.285c-1.56.742-2.433 1.375-3.707.847-1.27-.527-1.436-1.577-2.02-3.22h-3.232c-.582 1.635-.75 2.692-2.02 3.22-1.27.527-2.132-.1-3.707-.848L2.372 4.657c.745 1.568 1.375 2.434.847 3.707-.528 1.27-1.585 1.438-3.22 2.02v3.232c1.632.58 2.692.75 3.22 2.02.53 1.28-.115 2.165-.848 3.706l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847 1.27.527 1.437 1.58 2.02 3.22h3.232c.582-1.636.75-2.69 2.027-3.222 1.263-.524 2.12.1 3.7.85l2.284-2.285c-.744-1.563-1.375-2.433-.848-3.706.526-1.27 1.587-1.44 3.22-2.02zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"></path></g></defs><use xlink:href="#gear" x="1" y="1"><animateTransform attributeName="transform" type="rotate" from="0 13 13" to="90 13 13" dur="1s" repeatCount="indefinite"></animateTransform></use><use xlink:href="#gear" x="17" y="17"><animateTransform attributeName="transform" type="rotate" from="22.5 29 29" to="-67.5 29 29" dur="1s" repeatCount="indefinite"></animateTransform></use></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
public_html/img/weather/01d.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/01n.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/02d.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/02n.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/03.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 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 |
1
public_html/img/weather/04.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/09.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/10d.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/10n.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/11.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/13.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
1
public_html/img/weather/50.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="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 |
BIN
public_html/img/weather/darksky.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
public_html/img/weather/wunderground.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
public_html/img/weather/yahoo.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
82
public_html/js/feedback.js
Normal file
@@ -0,0 +1,82 @@
|
||||
var ajaxFeedback;
|
||||
var formFeedback;
|
||||
var feedbackError = false;
|
||||
|
||||
function showFeedbackError()
|
||||
{
|
||||
feedbackError = true;
|
||||
|
||||
jQuery('.feedback div.box .inner:eq(0)').html(_t('Leider ist ein unerwarteter Fehler aufgetreten. Bitte schließe das Feedback-Fenster und versuche es erneut. Andernfalls, schreibe mir unter <a href="%%s" target="_blank">Kontakt</a>.', 'https://willy-tech.de/kontakt/'));
|
||||
jQuery('.feedback div.box img').remove();
|
||||
jQuery('.feedback div.box .inner:eq(1)').html('<strong class="red">:(</strong>');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
jQuery(document).on('mousedown', 'a[href="https://willy-tech.de/kontakt/"]', function(e)
|
||||
{
|
||||
if (e.which == 3)
|
||||
return false;
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
var _this = this;
|
||||
|
||||
if (feedbackError == true)
|
||||
{
|
||||
feedbackError = false;
|
||||
jQuery('.feedback').remove();
|
||||
}
|
||||
|
||||
if (jQuery('.feedback').length == 0 )
|
||||
{
|
||||
jQuery('body').append('<div class="feedback"><a href="#close">' + _t('Schließen') + '</a><span class="feedback-inner"><div class="box"><div class="inner-header"><span>' + _t('Feedback') + '</span></div><div class="inner text-justify">' + _t('Für das Feedback müssen noch einige Daten gesammelt werden.') + '</div><div class="inner"><img src="public_html/img/loader.svg" /></div><div class="inner-end"><a href="#close" class="button">' + _t('Schließen') + '</a></div></div></span></div>');
|
||||
|
||||
ajaxFeedback = jQuery.ajax({
|
||||
url: 'api/v1/feedback.php',
|
||||
method: 'POST',
|
||||
data: { url: window.location.href },
|
||||
dataType: 'text',
|
||||
async: true
|
||||
}).done(function(data)
|
||||
{
|
||||
if (data == '')
|
||||
return showFeedbackError();
|
||||
|
||||
var langParam = '';
|
||||
if (jQuery(_this).data('lang') != 'de')
|
||||
langParam = '&lang=' + jQuery(_this).data('lang');
|
||||
|
||||
formFeedback = jQuery('<form action="https://pi-control.de/?service=feedback' + langParam + '" method="post" target="_blank"><input type="hidden" name="data" value="'+data+'" /><input type="hidden" name="error-handler" value="'+errorHandler+'" /></form>');
|
||||
|
||||
jQuery('.feedback div.box .inner:eq(0)').html(_t('Diagnosedaten wurden gesammelt. Beim Klick auf den folgenden Button wird ein neues Fenster geöffnet.'));
|
||||
jQuery('.feedback div.box img').remove();
|
||||
jQuery('.feedback div.box .inner:eq(1)').addClass('text-align-center').html('<a href="#open" class="button">' + _t('Feedback öffnen') + '</a>');
|
||||
}).fail(function()
|
||||
{
|
||||
return showFeedbackError();
|
||||
});
|
||||
}
|
||||
|
||||
jQuery('.feedback').fadeIn('fast');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery(document).on('click', 'a[href="#close"], .feedback', function(e)
|
||||
{
|
||||
if (jQuery(e.target).has('.box').length || jQuery(e.target).is('a[href="#close"]'))
|
||||
{
|
||||
ajaxFeedback.abort();
|
||||
jQuery('.feedback').fadeOut('fast');
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery(document).on('click', 'a[href="#open"]', function(e)
|
||||
{
|
||||
formFeedback.appendTo('body').submit();
|
||||
|
||||
return false;
|
||||
});
|
||||
4
public_html/js/jquery.min.js
vendored
Normal file
6
public_html/js/main.js
Normal file
@@ -0,0 +1,6 @@
|
||||
jQuery(document).on('click', '.error > div span.cancel, .success > div span.cancel, .info > div span.cancel', function(e) {
|
||||
jQuery(this).parents('.box').css("position", "relative").css("z-index", "-500").animate({marginTop: -jQuery(this).parents('.box').height()-20, opacity: 0}, 300, function(e)
|
||||
{
|
||||
jQuery(this).hide();
|
||||
});
|
||||
});
|
||||
43
public_html/js/network_configuration.interface_refresh.js
Normal 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;
|
||||
});
|
||||
7
public_html/js/network_configuration.method_select.js
Normal 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');
|
||||
});
|
||||
97
public_html/js/network_connect.wlan.js
Normal 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;
|
||||
});
|
||||
138
public_html/js/overview.status_refresh.js
Normal 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+' °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();
|
||||
});
|
||||
70
public_html/js/settings.overview.weather.js
Normal 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());
|
||||
});
|
||||
73
public_html/js/settings.pi-control.theme.js
Normal 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]);
|
||||
});
|
||||
15
public_html/js/settings.troubleshooting.cron_selection.js
Normal 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);
|
||||
}
|
||||
}
|
||||
34
public_html/js/shutdown.restart.js
Normal 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();
|
||||
});
|
||||
116
public_html/js/statistic_builder.js
Normal 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ü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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
122
public_html/js/terminal.websocket.js
Normal 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);
|
||||
});
|
||||
12
public_html/js/translation.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var jsTranslations = {};
|
||||
|
||||
function _t(format)
|
||||
{
|
||||
if (format in jsTranslations)
|
||||
format = jsTranslations[format];
|
||||
|
||||
for (var i = 1; i < arguments.length; i++)
|
||||
format = format.replace(/%s/, arguments[i]);
|
||||
|
||||
return format;
|
||||
}
|
||||
195
public_html/templates/detailed_overview.tpl.php
Normal file
@@ -0,0 +1,195 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Detaillierte Ü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>
|
||||
56
public_html/templates/discover_plugins.tpl.php
Normal 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&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ügbaren Plugins gefunden werden.'); ?></div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
104
public_html/templates/discover_plugins_info.tpl.php
Normal 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&id=<?php echo $data['onlinePlugin']['id']; ?>&install" class="button"><?php _e('Installieren'); ?></a>
|
||||
<?php } else { ?>
|
||||
<a href="?s=plugins&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&id=<?php echo $data['plugin']['id']; ?>&update" class="button"><?php _e('Aktualisieren'); ?></a>
|
||||
<?php } ?>
|
||||
<a href="?s=discover_plugins&id=<?php echo $data['plugin']['id']; ?>&status" class="button"><?php echo ($data['plugin']['disabled'] == true) ? _t('Aktivieren') : _t('Deaktivieren'); ?></a>
|
||||
<a href="?s=settings&do=plugins&delete=<?php echo $data['plugin']['id']; ?>" class="button"><?php _e('Lö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ü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ö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('Ä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>
|
||||
14
public_html/templates/error.tpl.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!-- Error -->
|
||||
<div>
|
||||
<div class="box error">
|
||||
<div>
|
||||
<?php if ($data['title'] != '') { ?><div class="inner-header">
|
||||
<span><?php echo $data['title']; ?></span>
|
||||
</div><?php } ?>
|
||||
<div class="inner">
|
||||
<?php echo $data['msg']; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
32
public_html/templates/html_footer.tpl.php
Normal 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('Ü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('Ö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;">❤</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>
|
||||
122
public_html/templates/html_header.tpl.php
Normal 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&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('Ü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">•</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&id=<?php echo $plugin['id']; ?>"><?php _e($plugin['name']); if (isset($data['naviPluginsUpdates'][$plugin['id']])) echo '<span class="update-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;">❯</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ützte Browserversion'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Deine aktuelle Browserversion wird von Pi Control nicht unterstützt. Bitte aktualisiere deinen Browser oder verwende einen anderen!'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<![endif]-->
|
||||
<?php if (is_array($data['updatePicontrol'])) { ?>
|
||||
<!-- Update -->
|
||||
<div class="box info info-update pulse-update">
|
||||
<div>
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Pi Control %s ist verfügbar', $data['updatePicontrol']['version']); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Zur <a href="%s">Aktualisierung</a>, um diese anzusehen und zu starten.', '?s=settings&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ührt. Sollte diese Meldung in ca. 5 Minuten immer noch erscheinen, führe eine <a href="%s">Problembehandlung</a> durch.', '?s=settings&do=troubleshooting'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
28
public_html/templates/installed_packages.tpl.php
Normal 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>
|
||||
53
public_html/templates/login.tpl.php
Normal 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üssen fü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.', '❤', 'Willy Fritzsche'); ?> 2013-2017<br /><?php _e('Raspberry Pi ist ein Markenzeichen der Raspberry Pi Foundation.'); ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
31
public_html/templates/logs.tpl.php
Normal 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önnen aufgrund mangelnder Berechtigung nicht geöffnet werden. Melde dich per SSH an, um diese ebenfalls zu ö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 Änderung'); ?></th>
|
||||
<th style="width: 15%;"><?php _e('Dateigröß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ü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&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>
|
||||
59
public_html/templates/logs_view.tpl.php
Normal 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 Änderung'); ?></td>
|
||||
<td><?php echo formatTime($data['log']->getModified()); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Dateigröße'); ?></td>
|
||||
<td><?php echo sizeUnit($data['log']->getFilesize()); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Herunterladen'); ?></td>
|
||||
<td><a href="?s=logs&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().' ('.sizeUnit($log->getFilesize()).')'; ?></option>
|
||||
<?php } ?>
|
||||
</select> <input type="submit" name="open_file" value="<?php _e('Ö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öße (< %s), nicht geö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>
|
||||
16
public_html/templates/msg.tpl.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<!-- Msg -->
|
||||
<div id="message_box_<?php echo $data['id']; ?>">
|
||||
<div class="box <?php echo $data['type']; ?>">
|
||||
<div>
|
||||
<?php if ($data['title'] != '') { ?><div class="inner-header">
|
||||
<span><?php echo $data['title']; ?></span>
|
||||
<?php if ($data['cancelable'] === true) { ?><div><span class="cancel"></span></div><?php } ?>
|
||||
</div><?php } ?>
|
||||
<div class="inner<?php if ($data['title'] == '') { echo '-single'; } ?>">
|
||||
<?php echo $data['msg']; ?>
|
||||
</div>
|
||||
<?php if ($data['title'] == '' && $data['cancelable'] === true) { ?><div><span class="cancel"></span></div><?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
125
public_html/templates/network.tpl.php
Normal 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('Ü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&hostname"><button><?php _e('Ä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&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&interface=<?php echo urlencode($key); ?>&ssid=<?php echo urlencode($value2['ssid']); ?>&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&refresh_wlan'); ?></strong></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="clear-both"></div>
|
||||
46
public_html/templates/network_configuration.tpl.php
Normal 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('Ü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&edit=<?php echo urlencode($interface); ?>" style="margin-right: 8px;"><span class="svg-control-pen display-inline-block"></span></a><a href="?s=network_configuration&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&add"><button><?php _e('Hinzufügen'); ?></button></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
55
public_html/templates/network_configuration_add.tpl.php
Normal 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ügen'); ?></span>
|
||||
<?php showGoBackIcon('?s=network_configuration'); ?>
|
||||
</div>
|
||||
<form action="?s=network_configuration&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>
|
||||
18
public_html/templates/network_configuration_delete.tpl.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php if (!defined('PICONTROL')) exit(); ?>
|
||||
<div>
|
||||
<div class="box">
|
||||
<div class="inner-header">
|
||||
<span><?php _e('Netzwerkkonfiguration - Interface löschen'); ?></span>
|
||||
<?php showGoBackIcon('?s=network_configuration'); ?>
|
||||
</div>
|
||||
<form action="?s=network_configuration&delete=<?php echo urlencode($data['interfaceName']); ?>" method="post">
|
||||
<div class="inner">
|
||||
<?php _e('Möchtest du das Interface <strong>%s</strong> wirklich unwiderruflich lö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öschen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
55
public_html/templates/network_configuration_edit.tpl.php
Normal 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&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>
|
||||
54
public_html/templates/network_connect.tpl.php
Normal 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ö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ö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>
|
||||
26
public_html/templates/network_hostname.tpl.php
Normal 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 Änderung des Hostname ist der neue Name erst nach einem Neustart sichtbar.'); ?></div>
|
||||
</div>
|
||||
<form action="?s=network&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>
|
||||
101
public_html/templates/overview.tpl.php
Normal 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&restart" onClick="return ((confirm('<?php _e('Mö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ö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ü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ä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']; ?> °C</span><br />
|
||||
<?php if (isset($data['weather']['temp_min'])) { ?><span style="font-size: 13px;"><?php echo $data['weather']['temp_min']; ?> °C | <?php echo $data['weather']['temp_max']; ?> °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('Übersicht'); ?></span>
|
||||
<?php showSettingsIcon('?s=settings&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ä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 } ?>
|
||||
28
public_html/templates/plugins.tpl.php
Normal 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&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&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>
|
||||
53
public_html/templates/processes.tpl.php
Normal 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ö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ürgen'); ?>"<?php if (!$data['sshAvailable']) echo ' disabled="disabled"'; ?> /></form></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
13
public_html/templates/restart.tpl.php
Normal 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 Übersicht weitergeleitet.<br />Solltest du nicht weitergeleitet werden, kommst du hier <a href="%s">zurück zur Übersicht.</a><br /><br />', $data['overviewUrl']); ?>
|
||||
<?php _e('Aktueller Status: <strong class="green">Online</strong>'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
19
public_html/templates/settings.tpl.php
Normal 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&do=pi-control">Pi Control</a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=overview"><?php _e('Übersicht'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=statistic"><?php _e('Statistik'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=plugins"><?php _e('Plugins'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=update"><?php _e('Aktualisierung'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=troubleshooting"><?php _e('Problembehandlung'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=notification"><?php _e('Benachrichtigung'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=user"><?php _e('Benutzer'); ?></a>
|
||||
<a class="settings-overview-flex-box" href="?s=settings&do=cache"><?php _e('Cache'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
44
public_html/templates/settings/cache.tpl.php
Normal 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&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"> </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öße'); ?></th>
|
||||
<th style="width: 20%;" class="table-center"><?php _e('Letzte Ä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"> </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&do=cache&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>
|
||||
95
public_html/templates/settings/notification.tpl.php
Normal 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ä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ä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 über Pushbullet realisiert. Daher ist ein Konto bei Pushbullet notwendig.'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&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"> </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&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"> </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"> </label></td>
|
||||
<td style="width: 35%;"><?php _e('die CPU-Temperatur einen Wert ü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"> </label></td>
|
||||
<td style="width: 35%;"><?php _e('der Speicherverbrauch (Gesamtspeicher) einen Wert ü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>
|
||||
86
public_html/templates/settings/overview.tpl.php
Normal 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 Übersicht'); ?></span>
|
||||
<?php showGoBackIcon('?s=overview'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=overview" method="post">
|
||||
<div class="inner-table">
|
||||
<table class="table table-borderless table-form">
|
||||
<tr>
|
||||
<td><?php _e('Intervall Ü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ä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"> </label> <span class="small-info"><?php _e('Das aktivieren verursacht eine längere Ladezeit der Ü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&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"> </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('Ö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ä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>
|
||||
126
public_html/templates/settings/pi-control.tpl.php
Normal 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&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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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ö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ähle die Darstellung fü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"> </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überwachung'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Aktiviere diese Option, um von deinem Raspberry Pi, beim Überschreiten einer bestimmten Temperatur, benachrichtigt zu werden. Für diesen Fall lassen sich auch spezifische Verhalten festlegen.'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&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"> </label><?php if (!empty($data['temperature-last-execution'])) { ?><strong class="red"><?php _e('Pausiert für %s', $data['temperature-last-execution']); ?></strong><?php } ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Hö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&do=pi-control" method="post"><input type="submit" name="submit-temperature-confirmation" value="'._t('Bestätigen').'" /></form> <a href="?s=settings&do=pi-control&mail_check" class="button">'._t('Überprüfen').'</a>' : '<strong class="green">'._t('Bestä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ü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ällt und du es wieder entfernen möchtest, schreib mir unten unter "Feedback" doch bitte den Grund. Somit kann ich besser auf mö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>
|
||||
17
public_html/templates/settings/plugin_delete.tpl.php
Normal 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öschen'); ?></span>
|
||||
<?php showGoBackIcon('?s=settings&do=plugins'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=plugins&delete=<?php echo $data['plugin']['id']; ?>" method="post">
|
||||
<div class="inner">
|
||||
<?php _e('Möchtest du das Plugin <strong>%s</strong> wirklich unwiderruflich löschen?', _t($data['plugin']['name'])); ?>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<input type="submit" name="submit" value="<?php _e('Löschen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
26
public_html/templates/settings/plugins.tpl.php
Normal 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&id=<?php echo $plugin['id']; ?>&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&do=plugins&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&do=plugins&delete=<?php echo $plugin['id']; ?>" class="text-decoration-none"><span class="button button-small"><?php _e('Lö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>
|
||||
38
public_html/templates/settings/statistic.tpl.php
Normal 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ötigte Statistiken aus, um die Ladezeiten zu verbessern und um besser den Überblick zu behalten.'); ?>
|
||||
</div>
|
||||
<div class="inner-info">
|
||||
<div><?php _e('Statistiken werden, unabhängig vom Anzeigestatus, aufgezeichnet.'); ?></div>
|
||||
</div>
|
||||
<form action="?s=settings&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; ?>"> </label></td>
|
||||
<td><?php echo $statistic['array']['title'] ?></td>
|
||||
<td class="table-center"><a href="?s=settings&do=statistic&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&do=statistic&reset=<?php echo $id; ?>" class="text-decoration-none"><span class="button button-small"><?php _e('Zurü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>
|
||||
17
public_html/templates/settings/statistic_reset.tpl.php
Normal 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ücksetzen'); ?></span>
|
||||
<?php showGoBackIcon('?s=settings&do=statistic'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=statistic&reset=<?php echo $data['log']; ?>&confirm" method="post">
|
||||
<div class="inner">
|
||||
<?php _e('Möchtest du den Verlauf von %s wirklich zurücksetzen?', '<strong>'.$data['label'].'</strong>'); ?>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<input type="submit" name="submit" value="<?php _e('Zurücksetzen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
93
public_html/templates/settings/troubleshooting.tpl.php
Normal 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öße'); ?></th>
|
||||
</tr>
|
||||
<?php foreach ($data['filesFolders'] as $name => $fileFolder) { ?>
|
||||
<tr>
|
||||
<td class="<?php echo ($fileFolder['error'] === true) ? 'red' : 'green'; ?>"><?php echo $name; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['existsBool'] === true) ? 'green' : 'red'; ?>"><?php echo ($fileFolder['exists'] === true) ? '✔' : '✖'; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['permissionBool'] === true) ? 'green' : 'red'; ?>"><?php echo $fileFolder['permission']; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['userGroupBool'] === true) ? 'green' : 'red'; ?>"><?php echo $fileFolder['userGroup']; ?></td>
|
||||
<td class="table-center <?php echo ($fileFolder['filesizeBool'] === true) ? 'green' : 'red'; ?>"><?php echo sizeUnit($fileFolder['filesize']); ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
||||
<?php if ($data['filesFoldersError'] === true) { ?>
|
||||
<div class="inner-end">
|
||||
<a href="<?php echo $data['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ür Pi Control'); ?></span>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<?php _e('Der Cron fü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) ? '✔' : '✖'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('PHP-CLI installiert'); ?></td>
|
||||
<td class="<?php echo ($data['cronPHPCLI']) ? 'green' : 'red'; ?>"><?php echo ($data['cronPHPCLI']) ? '✔' : '✖'; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php _e('Letzte Ausfü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&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>
|
||||
72
public_html/templates/settings/update.tpl.php
Normal 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ünftig eine E-Mail bei einer neuen Version des Pi Control erhalten möchtest, dann kannst du dich ü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ü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ügbar, kannst du über folgenden Button dieses herunterladen und anschließend installieren.'); ?>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<form action="?s=settings&do=update" method="post">
|
||||
<input type="submit" name="update" value="<?php _e('Aktualisierung runterladen & 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ältst du, bereits vor Veröffentlichung der finalen Version von Pi Control, einen ersten Einblick in kommende Funktionen und Neuerungen. Durch die Teilnahme bekommst du, neben der Aktualisierungen für die Beta, auch die regulären und stabilen Aktualisierungen angeboten.<br />Du kannst jederzeit von Pi Control Beta zurücktreten, ein Zurückstufen auf eine ältere/reguläre Version ist allerdings nicht möglich. Anschließend erhältst du wieder wie gewohnt die stabilen Aktualisierungen.'); ?>
|
||||
<br /><br />
|
||||
<strong class="red"><?php _e('BEACHTE: Wä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&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ücktreten'); ?>" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
60
public_html/templates/settings/user.tpl.php
Normal 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ä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&do=user&edit=<?php echo substr($key, 5); ?>" class="button button-small"><?php _e('Bearbeiten'); ?></a> <a href="?s=settings&do=user&delete=<?php echo substr($key, 5); ?>" class="button button-small"><?php _e('Löschen'); ?></a></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
</div>
|
||||
<div class="inner-end">
|
||||
<a href="?s=settings&do=user&add" class="button"><?php _e('Hinzufü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ät automatisch abgemeldet.'); ?></div>
|
||||
</div>
|
||||
<div class="inner-table overflow-auto">
|
||||
<form action="?s=settings&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>
|
||||
30
public_html/templates/settings/user_add.tpl.php
Normal 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ügen'); ?></span>
|
||||
<?php showGoBackIcon('?s=settings&do=user'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=user&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ügen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
29
public_html/templates/settings/user_delete.tpl.php
Normal 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öschen'); ?></span>
|
||||
<?php showGoBackIcon('?s=settings&do=user'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=user&delete=<?php echo $data['lowerUsername']; ?>" method="post">
|
||||
<div class="inner">
|
||||
<?php _e('Bitte gebe zur Bestä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öschen'); ?>" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
34
public_html/templates/settings/user_edit.tpl.php
Normal 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&do=user'); ?>
|
||||
</div>
|
||||
<form action="?s=settings&do=user&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>
|
||||
11
public_html/templates/shutdown.tpl.php
Normal 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ück zur Übersicht.</a>', $data['overviewUrl']); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
50
public_html/templates/single_box.tpl.php
Normal 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;">❤</span>', '<a href="https://willy-tech.de/" target="_blank">Willy Fritzsche</a>'); ?> 2013-2017</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
88
public_html/templates/ssh_login.tpl.php
Normal 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 ü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"> </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 ü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ö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"> </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&logout"><button><?php _e('Abmelden'); ?></button></a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear_both"></div>
|
||||
77
public_html/templates/statistic.tpl.php
Normal 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&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ü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>
|
||||
55
public_html/templates/terminal.tpl.php
Normal 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öglichkeit, einfache Befehle direkt im Pi Control auszufü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>
|
||||
30
public_html/templates/users_groups.tpl.php
Normal 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>
|
||||