mirror of
https://github.com/pldubouilh/gossa
synced 2025-12-06 00:12:36 +01:00
Compare commits
6 commits
6252f35284
...
c4d52d7ffb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4d52d7ffb | ||
|
|
23e9e6853f | ||
|
|
7644c9f4d0 | ||
|
|
fc4d4dbd09 | ||
|
|
8443ab443c | ||
|
|
0400476f0b |
3 changed files with 43 additions and 30 deletions
7
gossa.go
7
gossa.go
|
|
@ -231,11 +231,12 @@ func rpc(w http.ResponseWriter, r *http.Request) {
|
|||
check(err)
|
||||
json.Unmarshal(bodyBytes, &rpc)
|
||||
|
||||
if rpc.Call == "mkdirp" {
|
||||
switch rpc.Call {
|
||||
case "mkdirp":
|
||||
err = os.MkdirAll(enforcePath(rpc.Args[0]), os.ModePerm)
|
||||
} else if rpc.Call == "mv" {
|
||||
case "mv":
|
||||
err = os.Rename(enforcePath(rpc.Args[0]), enforcePath(rpc.Args[1]))
|
||||
} else if rpc.Call == "rm" {
|
||||
case "rm":
|
||||
err = os.RemoveAll(enforcePath(rpc.Args[0]))
|
||||
}
|
||||
|
||||
|
|
|
|||
62
ui/script.js
vendored
62
ui/script.js
vendored
|
|
@ -582,7 +582,7 @@ picsHolder.addEventListener('touchend', e => {
|
|||
}, false)
|
||||
|
||||
// Video player
|
||||
const videosTypes = ['.mp4', '.webm', '.ogv', '.ogg', '.mp3', '.flac', '.wav']
|
||||
const videosTypes = ['.mkv', '.mp4', '.webm', '.ogv', '.ogg', '.mp3', '.flac', '.wav']
|
||||
const isVideo = src => src && videosTypes.find(type => src.toLocaleLowerCase().includes(type))
|
||||
const isVideoMode = () => video.style.display === 'flex'
|
||||
const videoFs = () => video.requestFullscreen()
|
||||
|
|
@ -749,40 +749,52 @@ document.body.addEventListener('keydown', e => {
|
|||
return
|
||||
}
|
||||
|
||||
// Ctrl keys
|
||||
if ((e.ctrlKey || e.metaKey) && !e.shiftKey) {
|
||||
switch (e.code) {
|
||||
case 'KeyC':
|
||||
return prevent(e) || isRo() || cpPath()
|
||||
// Modifier keys
|
||||
if (!e.shiftKey) {
|
||||
if (e.ctrlKey || e.metaKey) {
|
||||
switch (e.code) {
|
||||
case 'KeyC':
|
||||
return prevent(e) || isRo() || cpPath()
|
||||
|
||||
case 'KeyH':
|
||||
return prevent(e) || isRo() || helpToggle()
|
||||
case 'KeyH':
|
||||
return prevent(e) || isRo() || helpToggle()
|
||||
|
||||
case 'KeyX':
|
||||
return prevent(e) || isRo() || onCut()
|
||||
case 'KeyX':
|
||||
return prevent(e) || isRo() || onCut()
|
||||
|
||||
case 'KeyR':
|
||||
return prevent(e) || refresh()
|
||||
case 'KeyR':
|
||||
return prevent(e) || refresh()
|
||||
|
||||
case 'KeyV':
|
||||
return prevent(e) || isRo() || ensureMove() || onPaste()
|
||||
case 'KeyV':
|
||||
return prevent(e) || isRo() || ensureMove() || onPaste()
|
||||
|
||||
case 'Backspace':
|
||||
return prevent(e) || isRo() || window.rm(e)
|
||||
case 'Backspace':
|
||||
return prevent(e) || isRo() || window.rm(e)
|
||||
|
||||
case 'KeyE':
|
||||
return prevent(e) || isRo() || window.rename(e)
|
||||
case 'KeyE':
|
||||
return prevent(e) || isRo() || window.rename(e)
|
||||
|
||||
case 'KeyM':
|
||||
return prevent(e) || isRo() || window.mkdirBtn()
|
||||
case 'KeyM':
|
||||
return prevent(e) || isRo() || window.mkdirBtn()
|
||||
|
||||
case 'KeyU':
|
||||
return prevent(e) || isRo() || manualUpload.click()
|
||||
case 'KeyU':
|
||||
return prevent(e) || isRo() || manualUpload.click()
|
||||
|
||||
case 'Enter':
|
||||
case 'ArrowRight':
|
||||
return prevent(e) || dl(getASelected())
|
||||
case 'Enter':
|
||||
case 'ArrowRight':
|
||||
return prevent(e) || dl(getASelected())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Workaround Firefox requirement for transient activation
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Security/User_activation
|
||||
// Firefox requires user interaction (that is not reserved by the user agent)
|
||||
// before a file picker can be displayed. This means that ctrl/meta are not
|
||||
// usable as modifiers until the user clicks the page or presses another
|
||||
// non-modifier key. To work around this, the shift key can be used, instead.
|
||||
if (e.code == 'KeyU') {
|
||||
return prevent(e) || isRo() || manualUpload.click()
|
||||
}
|
||||
}
|
||||
|
||||
switch (e.code) {
|
||||
|
|
|
|||
4
ui/ui.tmpl
vendored
4
ui/ui.tmpl
vendored
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="theme-color" content="rgb(45,52,54)">
|
||||
<meta name="msapplication-navbutton-color" content="rgb(45,52,54)">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<link rel="manifest" href='data:application/manifest+json,{"name":"{{.Title}}","short_name":"{{.Title}}","description":" ","icons":[{"src":"data:image/svg+xml;base64,favicon_will_be_here","sizes":"150x150","type":"image/svg+xml"}],"background":"rgb(45,52,54)","theme_color":"rgb(45,52,54)","display":"standalone"}' />
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
<tr><td>Ctrl/Meta + C</td><td>copy URL to clipboard</td></tr>
|
||||
<tr><td>Ctrl/Meta + E</td><td>rename item</td></tr>
|
||||
<tr><td>Ctrl/Meta + Backspace</td><td>delete item</td></tr>
|
||||
<tr><td>Ctrl/Meta + U</td><td>upload new file/folder</td></tr>
|
||||
<tr><td>Ctrl/Meta/Shift + U</td><td>upload new file/folder</td></tr>
|
||||
<tr><td>Ctrl/Meta + M</td><td>create a new directory</td></tr>
|
||||
<tr><td>Ctrl/Meta + X</td><td>cut selected path</td></tr>
|
||||
<tr><td>Ctrl/Meta + V</td><td>paste previously selected paths to directory</td></tr>
|
||||
|
|
|
|||
Loading…
Reference in a new issue