Upload via GUI (32 Dateien)

This commit is contained in:
2026-09-20 12:43:47 +00:00
parent 8b39b7c3a6
commit 86e3bc062f
2 changed files with 103 additions and 21 deletions
+86 -18
View File
@@ -88,39 +88,98 @@ const trInfra =
const autostartJs = `(function(){
var A={enabled:false,supported:!!(window.chrome&&window.chrome.webview)};
window.__mystartAutostart=A;
function paint(){
var tr=document.getElementById('mystart-autostart-track');
var kn=document.getElementById('mystart-autostart-knob');
// Second switch: OneDrive sync, opt-in (off until switched on here).
var Y={enabled:false,available:true,path:null,custom:false};
function paintOne(prefix,on){
var tr=document.getElementById(prefix+'-track');
var kn=document.getElementById(prefix+'-knob');
if(!tr||!kn)return;
tr.style.background=A.enabled?'#2ea043':'#565d68';
kn.style.left=A.enabled?'23px':'3px';
tr.style.background=on?'#2ea043':'#565d68';
kn.style.left=on?'23px':'3px';
}
function paint(){
paintOne('mystart-autostart',A.enabled);
paintOne('mystart-sync',Y.enabled);
var w=document.getElementById('mystart-sync-wrap');
if(w){
w.style.opacity=Y.available?'1':'0.5';
w.style.cursor=Y.available?'pointer':'default';
w.title=Y.available?'':'Kein Sync-Ordner gefunden – bitte unten einen Ordner wählen.';
}
var fp=document.getElementById('mystart-sync-folder-path');
if(fp)fp.textContent=Y.path?('Ordner: '+Y.path+(Y.custom?'':' (automatisch, OneDrive)')):'Kein OneDrive-Ordner gefunden – bitte einen Ordner wählen.';
var rs=document.getElementById('mystart-sync-folder-reset');
if(rs)rs.style.display=Y.custom?'':'none';
}
if(A.supported){
window.chrome.webview.addEventListener('message',function(ev){
var d=ev.data;if(d&&d.type==='autostart'){A.enabled=!!d.enabled;paint();}
var d=ev.data;if(!d)return;
if(d.type==='autostart'){A.enabled=!!d.enabled;paint();}
else if(d.type==='sync-state'){Y.enabled=!!d.enabled;Y.available=!!d.available;Y.path=d.path||null;Y.custom=!!d.custom;paint();}
});
}
function render(row){
function mkToggle(row,prefix,label,hint,onClick){
var wrap=document.createElement('div');
wrap.id=prefix+'-wrap';
wrap.style.cssText='display:flex;align-items:center;gap:10px;margin-top:18px;cursor:pointer;user-select:none;';
var track=document.createElement('div');
track.id='mystart-autostart-track';
track.id=prefix+'-track';
track.style.cssText='position:relative;width:46px;height:26px;border-radius:13px;background:#565d68;flex:0 0 auto;transition:background .15s;box-sizing:border-box;';
var knob=document.createElement('div');
knob.id='mystart-autostart-knob';
knob.id=prefix+'-knob';
knob.style.cssText='position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.4);box-sizing:border-box;';
track.appendChild(knob);
var txt=document.createElement('span');
txt.textContent='Mit Windows starten (minimiert)';
txt.textContent=label;
if(!A.supported){wrap.style.opacity='0.5';wrap.style.cursor='default';wrap.title='Nur in der MyStart-App verfügbar.';}
wrap.appendChild(track);wrap.appendChild(txt);row.appendChild(wrap);
paint();
wrap.addEventListener('click',function(){
if(!A.supported)return;
if(hint){
var h=document.createElement('p');
h.textContent=hint;
h.style.cssText='margin:6px 0 0 56px;font-size:12px;opacity:.65;';
row.appendChild(h);
}
wrap.addEventListener('click',function(){if(A.supported)onClick();});
}
function render(row){
mkToggle(row,'mystart-autostart','Mit Windows starten (minimiert)',null,function(){
A.enabled=!A.enabled;paint();
try{window.chrome.webview.postMessage({type:'autostart-set',value:A.enabled});}catch(e){}
});
if(A.supported){try{window.chrome.webview.postMessage({type:'autostart-get'});}catch(e){}}
mkToggle(row,'mystart-sync','Zwischen PCs abgleichen (OneDrive)','Gleicht Lesezeichen und Reiter über einen synchronisierten Ordner ab, standardmäßig OneDrive. Auf jedem PC einzeln einschalten, und auf allen PCs denselben Ordner nutzen.',function(){
if(!Y.available)return;
Y.enabled=!Y.enabled;paint();
try{window.chrome.webview.postMessage({type:'sync-set',value:Y.enabled});}catch(e){}
});
// Which folder the sync files go to: shown, plus pick another / go back to OneDrive.
var fr=document.createElement('div');
fr.style.cssText='margin:8px 0 0 56px;font-size:12px;';
var fpath=document.createElement('div');
fpath.id='mystart-sync-folder-path';
fpath.style.cssText='opacity:.75;word-break:break-all;';
var fbtns=document.createElement('div');
fbtns.style.cssText='display:flex;gap:8px;margin-top:6px;flex-wrap:wrap;';
function mkBtn(text,id,type){
var b=document.createElement('div');
if(id)b.id=id;
b.textContent=text;
b.style.cssText='padding:5px 10px;border-radius:6px;background:rgba(128,128,128,.25);cursor:pointer;user-select:none;';
b.onmouseenter=function(){b.style.background='rgba(128,128,128,.4)';};
b.onmouseleave=function(){b.style.background='rgba(128,128,128,.25)';};
b.addEventListener('click',function(){
if(!A.supported)return;
try{window.chrome.webview.postMessage({type:type});}catch(e){}
});
return b;
}
fbtns.appendChild(mkBtn('Ordner wählen…',null,'sync-browse'));
fbtns.appendChild(mkBtn('Automatisch (OneDrive)','mystart-sync-folder-reset','sync-folder-reset'));
fr.appendChild(fpath);fr.appendChild(fbtns);row.appendChild(fr);
paint();
if(A.supported){
try{window.chrome.webview.postMessage({type:'autostart-get'});}catch(e){}
try{window.chrome.webview.postMessage({type:'sync-get'});}catch(e){}
}
}
function ensure(){
var row=document.getElementById('mystart-autostart-row');
@@ -361,19 +420,28 @@ const profilesJs = `(function(){
}catch(e){return false;}
};
var syncDot;
var lastSync=null; // last status from the host, so a re-rendered dot isn't blank
function paintSyncDot(){
if(!syncDot)return;
// Sync is opt-in: no dot at all until it's switched on (Einstellungen -> MyStart).
if(!lastSync||lastSync.enabled===false){syncDot.style.display='none';return;}
syncDot.style.display='';
syncDot.style.background=lastSync.ok?'#2ea043':'#e8b923';
syncDot.title=lastSync.ok?('OneDrive-Sync: '+lastSync.message):('OneDrive-Sync-Problem: '+lastSync.message);
}
function mkSyncDot(){
var d=document.createElement('div');
d.style.cssText='width:8px;height:8px;border-radius:50%;background:#565d68;margin-left:6px;flex:0 0 auto;';
d.title='OneDrive-Sync: noch kein Status';
syncDot=d;
paintSyncDot();
return d;
}
if(window.chrome&&window.chrome.webview){
window.chrome.webview.addEventListener('message',function(ev){
var d=ev.data;
if(!d||d.type!=='sync-status'||!syncDot)return;
syncDot.style.background=d.ok?'#2ea043':'#e8b923';
syncDot.title=d.ok?('OneDrive-Sync: '+d.message):('OneDrive-Sync-Problem: '+d.message);
if(!d||d.type!=='sync-status')return;
lastSync=d;
paintSyncDot();
});
}
var bar;