From 9d0b51a2abdacb5fc4eed95cb3249934b607fdc7 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 9 Feb 2019 00:04:45 +0800 Subject: Navigator. --- xp/navigator/main.js | 435 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 435 insertions(+) create mode 100644 xp/navigator/main.js (limited to 'xp/navigator/main.js') diff --git a/xp/navigator/main.js b/xp/navigator/main.js new file mode 100644 index 0000000..c17d025 --- /dev/null +++ b/xp/navigator/main.js @@ -0,0 +1,435 @@ +let o={}; +const ui={}; +let curo,curp; +let editinge=null; +function getcookie(key) +{return document.cookie.replace(new RegExp('(?:(?:^|.*;\\s*)'+key+'\\s*\\=\\s*([^;]*).*$)|^.*$'),'$1');} +function make_sortable(e,updatefunc) +{ + let dragging,nxt; + function _drag(ev) + { + ev.preventDefault(); + ev.dataTransfer.dropEffect='move'; + const targ=ev.target; + if(targ&&targ!=dragging&&targ.draggable&&targ.parentNode==e) + { + const rect=targ.getBoundingClientRect(); + const after=(ev.clientY-rect.top)/(rect.bottom-rect.top)>.5; + e.insertBefore(dragging,after?targ.nextSibling:targ); + } + } + function _drag_end(ev) + { + ev.preventDefault(); + dragging.classList.remove('ghost'); + e.removeEventListener('dragover',_drag,false); + e.removeEventListener('dragend',_drag_end,false); + if(nxt!=dragging.nextSibling)updatefunc(dragging); + } + function _drag_start(ev) + { + dragging=ev.target; + nxt=dragging.nextSibling; + ev.dataTransfer.effectAllowed='move'; + ev.dataTransfer.setData('Text',dragging.textContent); + e.addEventListener('dragover',_drag,false); + e.addEventListener('dragend',_drag_end,false); + setTimeout(function(){dragging.classList.add('ghost');},0); + } + e.addEventListener('dragstart',_drag_start,false); +} +function remove_children(e) +{ + while(e.firstChild)e.removeChild(e.firstChild); +} +function switch_folder(path) +{ + //path starts and ends with / + ui.main.style.display='block'; + ui.settings.style.display=null; + const p=path.split('/'); + remove_children(ui.cont); + let cur=o; + for(let i=1;cur&&i{ + if(r) + { + document.getElementById('loginerr').innerHTML='login failed:' + switch(r) + { + case 1: + document.getElementById('loginerr').innerHTML+='authentication failure'; + break; + case 2: + document.getElementById('loginerr').innerHTML+='duplicate session'; + break; + } + } + else + { + document.getElementById('loginerr').innerHTML=''; + init(); + } + } + ); +} +function display_bookmarks() +{ + remove_children(ui.folderlist); + for(let i=0;i{ + if(r) + { + ui.login.style.display='block'; + ui.main.style.display=null; + } + else + { + ui.login.style.display=null; + display_bookmarks(); + ui.main.style.display='block'; + } + } + ); +} -- cgit v1.2.3