{"id":3354,"date":"2026-07-13T11:32:41","date_gmt":"2026-07-13T09:32:41","guid":{"rendered":"https:\/\/isabelleknops.com\/knops-panel-7fb2\/"},"modified":"2026-07-13T11:32:41","modified_gmt":"2026-07-13T09:32:41","slug":"knops-panel-7fb2","status":"publish","type":"page","link":"https:\/\/isabelleknops.com\/en\/knops-panel-7fb2\/","title":{"rendered":"Knops-Panel"},"content":{"rendered":"<div class=\"kp-standalone\">\n<header class=\"kp-mini-header\"><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27366%27%20height%3D%27142%27%20viewBox%3D%270%200%20366%20142%27%3E%3Crect%20width%3D%27366%27%20height%3D%27142%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/isabelleknops.com\/wp-content\/uploads\/2024\/12\/isaknops-logo-1.png\" alt=\"Isabelle Knops\"><\/header><div class=\"kp-login-wrap\">\n\t<div class=\"kp-login\">\n\t\t<div class=\"kp-brand\">Maschinen-Panel<\/div>\n\t\t<h2>Anmelden<\/h2>\n\t\t\t\t<form method=\"post\" action=\"https:\/\/isabelleknops.com\/en\/knops-panel-7fb2\/\">\n\t\t\t<input type=\"hidden\" name=\"knops_panel_login\" value=\"1\">\n\t\t\t<label>Passwort<\/label>\n\t\t\t<input type=\"password\" name=\"pw\" required autofocus autocomplete=\"current-password\">\n\t\t\t<button type=\"submit\" class=\"kp-btn kp-btn-primary\">Anmelden<\/button>\n\t\t<\/form>\n\t\t<p class=\"kp-hint\">Bei Problemen bitte den Web-Administrator kontaktieren.<\/p>\n\t<\/div>\n<\/div>\n<footer class=\"kp-mini-footer\">Isabelle Knops \u00b7 Galkhausener Stra\u00dfe 3 \u00b7 40764 Langenfeld \u00b7 +49 173 282 0007 \u00b7 isabelle.knops@isabelleknops.com<\/footer><\/div>\n<script>document.body.classList.add('knops-panel-page');<\/script>\n<style>\n\/* Avada-Chrome auf der Panel-Seite komplett ausblenden *\/\nbody.knops-panel-page .fusion-header-wrapper,\nbody.knops-panel-page .fusion-tb-header,\nbody.knops-panel-page .fusion-footer,\nbody.knops-panel-page .fusion-tb-footer,\nbody.knops-panel-page .fusion-page-title-bar,\nbody.knops-panel-page .fusion-tb-page-title-bar,\nbody.knops-panel-page .fusion-woo-notices-tb,\nbody.knops-panel-page .fusion-fullwidth.has-pattern-background,\nbody.knops-panel-page .fusion-fullwidth.has-mask-background,\nbody.knops-panel-page .fusion-slider-visibility,\nbody.knops-panel-page #wrapper > .fusion-header-v6 { display:none !important; }\nbody.knops-panel-page #main { padding:0 !important; margin:0 !important; background:#fff !important; }\nbody.knops-panel-page #content { width:100% !important; padding:0 !important; }\nbody.knops-panel-page .fusion-row { max-width:none !important; padding:0 !important; margin:0 !important; }\nbody.knops-panel-page .post-content { margin:0 !important; padding:0 !important; }\n\n\/* Mini-Header + Mini-Footer *\/\n.kp-standalone { background:#fff; }\n.kp-mini-header { display:flex; justify-content:center; align-items:center; padding:20px 16px; border-bottom:1px solid var(--awb-color3, #dbdbdb); background:#fff; }\n.kp-mini-header img { max-height:52px; width:auto; display:block; }\n.kp-mini-footer { text-align:center; padding:16px; border-top:1px solid var(--awb-color3, #dbdbdb); background:#fff; color:var(--awb-color6, #666); font-size:12px; margin-top:16px; }\n\n.kp, .kp-login-wrap {\n\t--kp-blue: var(--awb-color4, #4169e1);\n\t--kp-blue-dk: hsl(225,73%,47%);\n\t--kp-navy: var(--awb-color7, #071f3d);\n\t--kp-ink: var(--awb-color8, #212121);\n\t--kp-muted: var(--awb-color6, #666);\n\t--kp-line: var(--awb-color3, #dbdbdb);\n\t--kp-bg: var(--awb-color2, #f4f4f4);\n\t--kp-red: #dc2626;\n\t--kp-green: #059669;\n\t--kp-orange: #d97706;\n\tfont-family: inherit; color: var(--kp-ink); box-sizing: border-box;\n}\n.kp *, .kp *::before, .kp *::after, .kp-login-wrap *, .kp-login-wrap *::before, .kp-login-wrap *::after { box-sizing: border-box; }\n\n\/* LOGIN *\/\n.kp-login-wrap { min-height:60vh; display:flex; align-items:center; justify-content:center; padding:40px 16px; }\n.kp-login { background:#fff; border:1px solid var(--kp-line); border-radius:12px; padding:32px; max-width:400px; width:100%; box-shadow:0 12px 40px rgba(0,0,0,.05); }\n.kp-login .kp-brand { font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--kp-muted); font-weight:700; margin-bottom:6px; }\n.kp-login h2 { font-size:22px; font-weight:700; color:var(--kp-navy); margin:0 0 18px; }\n.kp-login label { display:block; font-size:12px; color:var(--kp-muted); margin:12px 0 4px; font-weight:600; }\n.kp-login input { width:100%; padding:12px 14px; border:1px solid var(--kp-line); border-radius:7px; font-size:15px; }\n.kp-login input:focus { outline:0; border-color:var(--kp-blue); box-shadow:0 0 0 3px color-mix(in srgb, var(--kp-blue) 18%, transparent); }\n.kp-login button { width:100%; margin-top:16px; }\n.kp-login .kp-hint { color:var(--kp-muted); font-size:12px; margin-top:16px; text-align:center; }\n\n\/* PANEL *\/\n.kp { max-width:1100px; margin:0 auto; padding:20px 16px 40px; }\n.kp-header { display:flex; align-items:center; justify-content:space-between; padding-bottom:14px; border-bottom:1px solid var(--kp-line); margin-bottom:14px; flex-wrap:wrap; gap:10px; }\n.kp-brand { font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--kp-muted); font-weight:700; }\n.kp-header-actions { display:flex; gap:14px; }\n.kp-linkbtn { background:none; border:0; padding:0; color:var(--kp-blue); font-size:13px; cursor:pointer; text-decoration:underline; }\n.kp-linkbtn:hover { color:var(--kp-blue-dk); }\n\n.kp-help { background:color-mix(in srgb, var(--kp-blue) 6%, #fff); border:1px solid color-mix(in srgb, var(--kp-blue) 25%, #fff); border-radius:8px; padding:12px 16px; font-size:13px; color:#374151; margin-bottom:16px; line-height:1.55; }\n.kp-help ul { margin:4px 0 0; padding-left:18px; }\n.kp-help li { margin:2px 0; }\n.kp-help b { color:var(--kp-navy); }\n\n.kp-toolbar { display:flex; gap:12px; align-items:center; margin-bottom:16px; flex-wrap:wrap; }\n.kp-search { display:flex; align-items:center; gap:8px; padding:10px 12px; border:1px solid var(--kp-line); border-radius:8px; background:#fff; flex:1; min-width:240px; color:var(--kp-muted); }\n.kp-search input { border:0; outline:0; font-size:14px; width:100%; padding:0; background:transparent; color:var(--kp-ink); }\n.kp-tabs { display:flex; gap:4px; background:var(--kp-bg); padding:4px; border-radius:8px; overflow-x:auto; -webkit-overflow-scrolling:touch; }\n.kp-tab { background:transparent; border:0; padding:8px 14px; border-radius:6px; font-size:13px; font-weight:600; cursor:pointer; color:var(--kp-muted); white-space:nowrap; display:inline-flex; align-items:center; gap:6px; transition:background .15s, color .15s; }\n.kp-tab:hover { color:var(--kp-navy); }\n.kp-tab-active { background:#fff; color:var(--kp-navy); box-shadow:0 1px 4px rgba(0,0,0,.06); }\n.kp-tab .kp-cnt { background:color-mix(in srgb, var(--kp-blue) 12%, #fff); color:var(--kp-blue-dk); font-size:11px; padding:1px 8px; border-radius:999px; font-weight:700; }\n.kp-tab-active .kp-cnt { background:var(--kp-blue); color:#fff; }\n\n.kp-list { display:flex; flex-direction:column; gap:8px; }\n.kp-item { display:grid; grid-template-columns:70px 1fr auto; gap:14px; align-items:center; background:#fff; border:1px solid var(--kp-line); border-radius:10px; padding:12px 14px; transition:opacity .25s, transform .25s; }\n.kp-item.kp-hide { display:none; }\n.kp-item.kp-flash { animation: kpFlash .6s ease; }\n@keyframes kpFlash { 0%{background:#fff;} 20%{background:#ecfdf5;} 100%{background:#fff;} }\n.kp-thumb { width:70px; height:70px; border-radius:8px; background:#e5e7eb center\/cover no-repeat; }\n.kp-info { min-width:0; }\n.kp-sku { font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--kp-muted); font-weight:700; }\n.kp-title { font-size:14px; font-weight:700; color:var(--kp-navy); margin:2px 0 4px; line-height:1.3; overflow:hidden; text-overflow:ellipsis; }\n.kp-badges { display:flex; gap:6px; flex-wrap:wrap; }\n.kp-badge { padding:3px 9px; border-radius:999px; font-size:11px; font-weight:700; }\n.kp-badge-in { background:#ecfdf5; color:var(--kp-green); }\n.kp-badge-out { background:#fff7ed; color:var(--kp-orange); }\n.kp-badge-trash { background:#fef2f2; color:var(--kp-red); }\n.kp-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }\n\n.kp-btn { padding:9px 14px; border-radius:7px; border:0; font-size:13px; font-weight:700; cursor:pointer; transition:background .15s, transform .15s, opacity .15s; }\n.kp-btn:disabled { opacity:.5; cursor:not-allowed; }\n.kp-btn:hover:not(:disabled) { transform:translateY(-1px); }\n.kp-btn-primary { background:var(--kp-blue); color:#fff; }\n.kp-btn-primary:hover:not(:disabled) { background:var(--kp-blue-dk); color:#fff; }\n.kp-btn-secondary { background:#fff; color:var(--kp-navy); border:1px solid var(--kp-line); }\n.kp-btn-secondary:hover:not(:disabled) { border-color:var(--kp-blue); color:var(--kp-blue-dk); }\n.kp-btn-danger { background:#fff; color:var(--kp-red); border:1px solid var(--kp-red); }\n.kp-btn-danger:hover:not(:disabled) { background:var(--kp-red); color:#fff; }\n\n.kp-empty { text-align:center; color:var(--kp-muted); padding:32px 0; font-size:14px; }\n\n\/* Toast *\/\n.kp-toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:var(--kp-navy); color:#fff; padding:12px 20px; border-radius:8px; font-size:14px; box-shadow:0 8px 24px rgba(0,0,0,.2); z-index:99999; opacity:0; transition:opacity .2s; }\n.kp-toast.kp-show { opacity:1; }\n.kp-toast.kp-err { background:var(--kp-red); }\n\n\/* Modal *\/\n.kp-modal { position:fixed; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; z-index:99998; padding:16px; }\n.kp-modal-inner { background:#fff; border-radius:12px; padding:24px; max-width:420px; width:100%; box-shadow:0 20px 60px rgba(0,0,0,.3); }\n.kp-modal-inner h3 { margin:0 0 14px; color:var(--kp-navy); font-size:19px; }\n.kp-modal-inner label { display:block; font-size:12px; color:var(--kp-muted); margin:10px 0 4px; font-weight:600; }\n.kp-modal-inner input { width:100%; padding:11px 13px; border:1px solid var(--kp-line); border-radius:7px; font-size:14px; }\n.kp-modal-inner input:focus { outline:0; border-color:var(--kp-blue); box-shadow:0 0 0 3px color-mix(in srgb, var(--kp-blue) 18%, transparent); }\n.kp-modal-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:16px; }\n\n.kp-alert { padding:10px 14px; border-radius:7px; font-size:13px; margin-bottom:10px; }\n.kp-alert.kp-err { background:#fef2f2; color:#991b1b; border:1px solid #fecaca; }\n.kp-alert.kp-ok { background:#ecfdf5; color:#065f46; border:1px solid #a7f3d0; }\n\n\/* MOBILE *\/\n@media (max-width:640px) {\n\t.kp-item { grid-template-columns:56px 1fr; gap:12px; }\n\t.kp-thumb { width:56px; height:56px; }\n\t.kp-actions { grid-column:1 \/ -1; }\n\t.kp-btn { flex:1; padding:11px 12px; font-size:13px; }\n\t.kp-header { flex-direction:column; align-items:flex-start; }\n\t.kp-toolbar { flex-direction:column; align-items:stretch; }\n\t.kp-tabs { width:100%; }\n}\n<\/style>\n\n<script>\n(function(){\n\tvar root = document.getElementById('kp-root');\n\tif (!root) return;\n\n\tvar csrf = root.dataset.csrf;\n\tvar url  = root.dataset.actionUrl;\n\tvar list = document.getElementById('kp-list');\n\tvar q    = document.getElementById('kp-q');\n\tvar empty = document.getElementById('kp-empty');\n\tvar toast = document.getElementById('kp-toast');\n\n\tvar state = { filter:'all', q:'' };\n\n\tfunction match(item){\n\t\tif (state.filter !== 'all') {\n\t\t\tvar s = item.dataset.state;\n\t\t\tif (state.filter === 'instock' && s !== 'instock') return false;\n\t\t\tif (state.filter === 'outofstock' && s !== 'outofstock') return false;\n\t\t\tif (state.filter === 'trash' && s !== 'trash') return false;\n\t\t}\n\t\tif (state.q) {\n\t\t\tvar blob = item.dataset.search || '';\n\t\t\tvar terms = state.q.split(\/\\s+\/).filter(Boolean);\n\t\t\tfor (var i=0; i<terms.length; i++) {\n\t\t\t\tif (blob.indexOf(terms[i]) === -1) return false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\tfunction apply(){\n\t\tvar vis = 0;\n\t\tlist.querySelectorAll('.kp-item').forEach(function(it){\n\t\t\tif (match(it)) { it.classList.remove('kp-hide'); vis++; }\n\t\t\telse it.classList.add('kp-hide');\n\t\t});\n\t\tempty.hidden = vis !== 0;\n\t}\n\n\t\/\/ Tabs\n\troot.querySelectorAll('.kp-tab').forEach(function(t){\n\t\tt.addEventListener('click', function(){\n\t\t\troot.querySelectorAll('.kp-tab').forEach(function(x){ x.classList.remove('kp-tab-active'); });\n\t\t\tt.classList.add('kp-tab-active');\n\t\t\tstate.filter = t.dataset.filter;\n\t\t\tapply();\n\t\t});\n\t});\n\t\/\/ Search\n\tq.addEventListener('input', function(){ state.q = q.value.trim().toLowerCase(); apply(); });\n\n\t\/\/ Toast\n\tvar toastT;\n\tfunction showToast(msg, err){\n\t\tclearTimeout(toastT);\n\t\ttoast.textContent = msg;\n\t\ttoast.classList.toggle('kp-err', !!err);\n\t\ttoast.hidden = false;\n\t\trequestAnimationFrame(function(){ toast.classList.add('kp-show'); });\n\t\ttoastT = setTimeout(function(){\n\t\t\ttoast.classList.remove('kp-show');\n\t\t\tsetTimeout(function(){ toast.hidden = true; }, 300);\n\t\t}, 3000);\n\t}\n\n\t\/\/ AJAX\n\tfunction doAction(pid, action, cb){\n\t\tvar fd = new FormData();\n\t\tfd.append('knops_panel_action', action);\n\t\tfd.append('csrf', csrf);\n\t\tfd.append('pid', pid);\n\t\tfetch(url, { method:'POST', credentials:'same-origin', body:fd })\n\t\t\t.then(function(r){ return r.json(); })\n\t\t\t.then(function(j){ cb(j); })\n\t\t\t.catch(function(e){ cb({ ok:false, error:'Netzwerkfehler.' }); });\n\t}\n\n\t\/\/ Row action buttons\n\tlist.addEventListener('click', function(e){\n\t\tvar btn = e.target.closest('button[data-act]');\n\t\tif (!btn) return;\n\t\tvar confirmMsg = btn.dataset.confirm;\n\t\tif (confirmMsg && !window.confirm(confirmMsg)) return;\n\n\t\tvar item = btn.closest('.kp-item');\n\t\tvar pid  = item.dataset.id;\n\t\tvar act  = btn.dataset.act;\n\n\t\titem.querySelectorAll('button').forEach(function(b){ b.disabled = true; });\n\n\t\tdoAction(pid, act, function(j){\n\t\t\tif (!j.ok) {\n\t\t\t\titem.querySelectorAll('button').forEach(function(b){ b.disabled = false; });\n\t\t\t\tshowToast('Fehler: ' + (j.error || 'unbekannt'), true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tshowToast('Maschine ' + j.action_label + '.');\n\n\t\t\t\/\/ Update state + re-render row actions\n\t\t\tvar newState;\n\t\t\tif (act === 'archive')  newState = 'outofstock';\n\t\t\telse if (act === 'restock')  newState = 'instock';\n\t\t\telse if (act === 'trash')    newState = 'trash';\n\t\t\telse if (act === 'untrash')  newState = 'instock'; \/\/ untrash \u2192 publish + previous stock (approx)\n\t\t\titem.dataset.state = newState;\n\t\t\t\/\/ Re-render badge + buttons\n\t\t\trenderRow(item, newState);\n\t\t\tupdateTabCounts();\n\t\t\tapply();\n\t\t\titem.classList.add('kp-flash');\n\t\t\tsetTimeout(function(){ item.classList.remove('kp-flash'); }, 700);\n\t\t});\n\t});\n\n\tfunction renderRow(item, s){\n\t\tvar b = item.querySelector('.kp-badges');\n\t\tb.innerHTML = s === 'instock' ? '<span class=\"kp-badge kp-badge-in\">Online<\/span>'\n\t\t            : s === 'outofstock' ? '<span class=\"kp-badge kp-badge-out\">Archiv<\/span>'\n\t\t            : '<span class=\"kp-badge kp-badge-trash\">Gel\u00f6scht<\/span>';\n\t\tvar a = item.querySelector('.kp-actions');\n\t\tif (s === 'instock') {\n\t\t\ta.innerHTML = '<button type=\"button\" class=\"kp-btn kp-btn-secondary\" data-act=\"archive\" data-confirm=\"Diese Maschine ins Archiv verschieben?\">Ins Archiv<\/button>'\n\t\t\t            + '<button type=\"button\" class=\"kp-btn kp-btn-danger\" data-act=\"trash\" data-confirm=\"Diese Maschine entfernen?\">L\u00f6schen<\/button>';\n\t\t} else if (s === 'outofstock') {\n\t\t\ta.innerHTML = '<button type=\"button\" class=\"kp-btn kp-btn-primary\" data-act=\"restock\" data-confirm=\"Diese Maschine wieder online stellen?\">Online setzen<\/button>'\n\t\t\t            + '<button type=\"button\" class=\"kp-btn kp-btn-danger\" data-act=\"trash\" data-confirm=\"Diese Maschine entfernen?\">L\u00f6schen<\/button>';\n\t\t} else {\n\t\t\ta.innerHTML = '<button type=\"button\" class=\"kp-btn kp-btn-primary\" data-act=\"untrash\" data-confirm=\"Diese Maschine wiederherstellen?\">Wiederherstellen<\/button>';\n\t\t}\n\t}\n\n\tfunction updateTabCounts(){\n\t\tvar c = { all:0, instock:0, outofstock:0, trash:0 };\n\t\tlist.querySelectorAll('.kp-item').forEach(function(it){\n\t\t\tc.all++;\n\t\t\tc[it.dataset.state]++;\n\t\t});\n\t\troot.querySelectorAll('.kp-tab').forEach(function(t){\n\t\t\tvar f = t.dataset.filter;\n\t\t\tvar n = t.querySelector('.kp-cnt');\n\t\t\tif (n) n.textContent = c[f];\n\t\t});\n\t}\n\n\tapply();\n})();\n<\/script>\n\t\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3354","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/pages\/3354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/comments?post=3354"}],"version-history":[{"count":0,"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/pages\/3354\/revisions"}],"wp:attachment":[{"href":"https:\/\/isabelleknops.com\/en\/wp-json\/wp\/v2\/media?parent=3354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}