Properly encode path links, remove unused password settings
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
|
import { fs_encode_path } from "./FilesystemUtil";
|
||||||
|
|
||||||
export let state = {}
|
export let state = {}
|
||||||
export let fs_navigator
|
export let fs_navigator
|
||||||
</script>
|
</script>
|
||||||
@@ -6,7 +8,7 @@ export let fs_navigator
|
|||||||
{#each state.path as node, i (node.path)}
|
{#each state.path as node, i (node.path)}
|
||||||
{@const shared = node.id !== undefined && node.id !== "me"}
|
{@const shared = node.id !== undefined && node.id !== "me"}
|
||||||
<a
|
<a
|
||||||
href={state.path_root+node.path}
|
href={"/d"+fs_encode_path(node.path)}
|
||||||
class="breadcrumb button"
|
class="breadcrumb button"
|
||||||
class:button_highlight={state.base_index === i}
|
class:button_highlight={state.base_index === i}
|
||||||
on:click|preventDefault={() => {fs_navigator.navigate(node.path, true)}}
|
on:click|preventDefault={() => {fs_navigator.navigate(node.path, true)}}
|
||||||
|
@@ -23,8 +23,6 @@ export const edit = (f, oae = false, t = "file") => {
|
|||||||
|
|
||||||
file_name = file.name
|
file_name = file.name
|
||||||
shared = !(file.id === undefined || file.id === "")
|
shared = !(file.id === undefined || file.id === "")
|
||||||
read_password = file.read_password ? file.read_password : ""
|
|
||||||
write_password = file.write_password ? file.write_password : ""
|
|
||||||
visible = true
|
visible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,8 +31,6 @@ let open_after_edit = false
|
|||||||
|
|
||||||
let file_name = ""
|
let file_name = ""
|
||||||
let shared = false
|
let shared = false
|
||||||
let read_password = ""
|
|
||||||
let write_password = ""
|
|
||||||
|
|
||||||
const save = async () => {
|
const save = async () => {
|
||||||
console.debug("Saving file", file.path)
|
console.debug("Saving file", file.path)
|
||||||
@@ -42,11 +38,7 @@ const save = async () => {
|
|||||||
dispatch("loading", true)
|
dispatch("loading", true)
|
||||||
await fs_update(
|
await fs_update(
|
||||||
file.path,
|
file.path,
|
||||||
{
|
{shared: shared},
|
||||||
shared: shared,
|
|
||||||
read_password: read_password,
|
|
||||||
write_password: write_password,
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (file_name !== file.name) {
|
if (file_name !== file.name) {
|
||||||
@@ -138,10 +130,6 @@ const delete_file = async () => {
|
|||||||
<input bind:checked={shared} id="shared" type="checkbox" class="form_input"/>
|
<input bind:checked={shared} id="shared" type="checkbox" class="form_input"/>
|
||||||
<label for="shared">Share this file or directory</label>
|
<label for="shared">Share this file or directory</label>
|
||||||
</div>
|
</div>
|
||||||
<label for="read_password">Read password:</label>
|
|
||||||
<input bind:value={read_password} id="read_password" type="text" class="form_input"/>
|
|
||||||
<label for="write_password">Write password:</label>
|
|
||||||
<input bind:value={write_password} id="write_password" type="text" class="form_input"/>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</form>
|
</form>
|
||||||
|
@@ -30,14 +30,6 @@ let state = {
|
|||||||
// Shortcuts
|
// Shortcuts
|
||||||
base: window.initial_node.path[window.initial_node.base_index],
|
base: window.initial_node.path[window.initial_node.base_index],
|
||||||
|
|
||||||
// Passwords for accessing this bucket. Passwords are not always required
|
|
||||||
// but sometimes they are
|
|
||||||
read_password: "",
|
|
||||||
write_password: "",
|
|
||||||
|
|
||||||
// Root path of the bucket. Used for navigation by prepending it to a file
|
|
||||||
// path
|
|
||||||
path_root: "/d/"+window.initial_node.path[0].id,
|
|
||||||
shuffle: false,
|
shuffle: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -69,12 +69,6 @@ export const fs_update = async (path, opts) => {
|
|||||||
if (opts.shared !== undefined) {
|
if (opts.shared !== undefined) {
|
||||||
form.append("shared", opts.shared)
|
form.append("shared", opts.shared)
|
||||||
}
|
}
|
||||||
if (opts.read_password !== undefined) {
|
|
||||||
form.append("read_password", opts.read_password)
|
|
||||||
}
|
|
||||||
if (opts.write_password !== undefined) {
|
|
||||||
form.append("write_password", opts.write_password)
|
|
||||||
}
|
|
||||||
|
|
||||||
return await fs_check_response(
|
return await fs_check_response(
|
||||||
await fetch(fs_path_url(path), { method: "POST", body: form })
|
await fetch(fs_path_url(path), { method: "POST", body: form })
|
||||||
|
@@ -15,14 +15,6 @@ export let state = {
|
|||||||
// The part of the path that base_index points to
|
// The part of the path that base_index points to
|
||||||
base: {},
|
base: {},
|
||||||
|
|
||||||
// Passwords for accessing this bucket. Passwords are not always required
|
|
||||||
// but sometimes they are
|
|
||||||
read_password: "",
|
|
||||||
write_password: "",
|
|
||||||
|
|
||||||
// Root path of the bucket. Used for navigation by prepending it to a file
|
|
||||||
// path
|
|
||||||
path_root: "",
|
|
||||||
shuffle: false,
|
shuffle: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { createEventDispatcher } from "svelte";
|
import { createEventDispatcher } from "svelte";
|
||||||
import { fs_search } from "./FilesystemAPI";
|
import { fs_search } from "./FilesystemAPI";
|
||||||
import { fs_thumbnail_url } from "./FilesystemUtil";
|
import { fs_encode_path, fs_thumbnail_url } from "./FilesystemUtil";
|
||||||
|
|
||||||
export let state
|
export let state
|
||||||
export let fs_navigator
|
export let fs_navigator
|
||||||
@@ -117,7 +117,7 @@ const open_result = index => {
|
|||||||
</tr>
|
</tr>
|
||||||
{#each search_results as result, index}
|
{#each search_results as result, index}
|
||||||
<a
|
<a
|
||||||
href={state.path_root+result}
|
href={"/d"+fs_encode_path(result)}
|
||||||
on:click|preventDefault={() => open_result(index)}
|
on:click|preventDefault={() => open_result(index)}
|
||||||
class="node"
|
class="node"
|
||||||
>
|
>
|
||||||
|
@@ -32,6 +32,12 @@ const node_click = e => {
|
|||||||
state.children[index].fm_selected = !state.children[index].fm_selected
|
state.children[index].fm_selected = !state.children[index].fm_selected
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const node_share_click = e => {
|
||||||
|
let index = e.detail
|
||||||
|
|
||||||
|
creating_dir = false
|
||||||
|
fs_navigator.navigate(state.children[index].id, true)
|
||||||
|
}
|
||||||
|
|
||||||
const node_settings = e => {
|
const node_settings = e => {
|
||||||
edit_window.edit(state.children[e.detail], false)
|
edit_window.edit(state.children[e.detail], false)
|
||||||
@@ -198,9 +204,20 @@ onMount(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if directory_view === "list"}
|
{#if directory_view === "list"}
|
||||||
<ListView state={state} show_hidden={show_hidden} on:node_click={node_click} on:node_settings={node_settings}></ListView>
|
<ListView
|
||||||
|
state={state}
|
||||||
|
show_hidden={show_hidden}
|
||||||
|
on:node_click={node_click}
|
||||||
|
on:node_share_click={node_share_click}
|
||||||
|
on:node_settings={node_settings}
|
||||||
|
/>
|
||||||
{:else if directory_view === "gallery"}
|
{:else if directory_view === "gallery"}
|
||||||
<GalleryView state={state} show_hidden={show_hidden} on:node_click={node_click} on:node_settings={node_settings}></GalleryView>
|
<GalleryView
|
||||||
|
state={state}
|
||||||
|
show_hidden={show_hidden}
|
||||||
|
on:node_click={node_click}
|
||||||
|
on:node_settings={node_settings}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { createEventDispatcher } from "svelte"
|
import { createEventDispatcher } from "svelte"
|
||||||
import { fs_node_icon, fs_node_type } from "../FilesystemUtil";
|
import { fs_encode_path, fs_node_icon, fs_node_type } from "../FilesystemUtil";
|
||||||
let dispatch = createEventDispatcher()
|
let dispatch = createEventDispatcher()
|
||||||
|
|
||||||
export let state
|
export let state
|
||||||
@@ -10,7 +10,7 @@ export let show_hidden = false
|
|||||||
<div class="gallery">
|
<div class="gallery">
|
||||||
{#each state.children as child, index (child.path)}
|
{#each state.children as child, index (child.path)}
|
||||||
<a class="file"
|
<a class="file"
|
||||||
href={state.path_root+child.path_uri}
|
href={"/d"+fs_encode_path(child.path)}
|
||||||
on:click|preventDefault={() => {dispatch("node_click", index)}}
|
on:click|preventDefault={() => {dispatch("node_click", index)}}
|
||||||
class:selected={child.fm_selected}
|
class:selected={child.fm_selected}
|
||||||
class:hidden={child.name.startsWith(".") && !show_hidden}
|
class:hidden={child.name.startsWith(".") && !show_hidden}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { createEventDispatcher } from "svelte";
|
import { createEventDispatcher } from "svelte";
|
||||||
import { formatDataVolume } from "../../util/Formatting.svelte";
|
import { formatDataVolume } from "../../util/Formatting.svelte";
|
||||||
import { fs_node_icon } from "../FilesystemUtil";
|
import { fs_encode_path, fs_node_icon } from "../FilesystemUtil";
|
||||||
|
|
||||||
let dispatch = createEventDispatcher()
|
let dispatch = createEventDispatcher()
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ export let show_hidden = false
|
|||||||
</tr>
|
</tr>
|
||||||
{#each state.children as child, index (child.path)}
|
{#each state.children as child, index (child.path)}
|
||||||
<a
|
<a
|
||||||
href={state.path_root+child.path_uri}
|
href={"/d"+fs_encode_path(child.path)}
|
||||||
on:click|preventDefault={() => {dispatch("node_click", index)}}
|
on:click|preventDefault={() => {dispatch("node_click", index)}}
|
||||||
class="node"
|
class="node"
|
||||||
class:node_selected={child.fm_selected}
|
class:node_selected={child.fm_selected}
|
||||||
@@ -37,7 +37,11 @@ export let show_hidden = false
|
|||||||
</td>
|
</td>
|
||||||
<td class="node_icons">
|
<td class="node_icons">
|
||||||
{#if child.id}
|
{#if child.id}
|
||||||
<a href="/d/{child.id}" on:click|stopPropagation class="button small_button">
|
<a
|
||||||
|
href="/d/{child.id}"
|
||||||
|
on:click|preventDefault|stopPropagation={() => {dispatch("node_share_click", index)}}
|
||||||
|
class="button small_button"
|
||||||
|
>
|
||||||
<i class="icon" title="This file / directory is shared. Click to open public link">share</i>
|
<i class="icon" title="This file / directory is shared. Click to open public link">share</i>
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
|
Reference in New Issue
Block a user