allowes for setting download folder in downloader bar;other minor chanages

This commit is contained in:
huangjx
2022-05-03 17:30:17 +08:00
parent 11e07132e5
commit d0084197a7
7 changed files with 96 additions and 15 deletions

View File

@@ -24,6 +24,6 @@ return [
['name' => 'Settings#youtubeGet', 'url' => '/personal/youtube-dl/get', 'verb' => 'POST'],
['name' => 'Settings#youtubeSave', 'url' => '/personal/youtube-dl/save', 'verb' => 'POST'],
['name' => 'Settings#youtubeDelete', 'url' => '/personal/youtube-dl/delete', 'verb' => 'POST'],
['name' => 'Settings#getSettings', 'url' => '/getsettings', 'verb' => 'POST'],
],
];

View File

@@ -115,6 +115,7 @@ class MainController extends Controller
'personal_url' => $this->urlGenerator->linkToRoute("settings.PersonalSettings.index", ['section' => 'ncdownloader']),
'ncd_hide_errors' => $this->hideError,
'ncd_disable_bt' => $this->disable_bt_nonadmin,
'ncd_downloader_dir' => Helper::getSettings("ncd_downloader_dir"),
]);
return $params;
}

View File

@@ -25,6 +25,18 @@ class SettingsController extends Controller
//$this->config = \OC::$server->getAppConfig();
}
/**
* @NoAdminRequired
* @NoCSRFRequired
*/
public function getSettings()
{
$name = $this->request->getParam("name");
$type = $this->request->getParam("type") ?? Settings::TYPE['USER'];
$default = $this->request->getParam("default") ?? null;
return new JSONResponse(Helper::getSettings($name, $default, $type));
}
/**
* @NoAdminRequired
* @NoCSRFRequired
@@ -37,6 +49,7 @@ class SettingsController extends Controller
}
return new JSONResponse($resp);
}
/**
* @NoAdminRequired
* @NoCSRFRequired
@@ -128,8 +141,8 @@ class SettingsController extends Controller
try {
$this->settings->save($key, $value);
} catch (\Exception $e) {
return ['error' => $e->getMessage()];
return ['error' => $e->getMessage(), "status" => false];
}
return ['message' => "Saved!"];
return ['message' => "Saved!", "status" => true];
}
}

View File

@@ -0,0 +1,50 @@
<template>
<div
@click="handler"
class="torrent-file-header"
data-tippy-content="Set Download Folder"
:data-path="path"
></div>
</template>
<script>
import Http from "../lib/http";
import helper from "../utils/helper";
export default {
name: "folderSettings",
methods: {
handler(event) {
let element = event.target;
const cb = function (path) {
let dlPath = element.getAttribute("data-path");
if (dlPath == path) {
helper.info("Same folder,No need to update");
return;
}
let data = { ncd_downloader_dir: path };
let url = helper.generateUrl("/apps/ncdownloader/personal/save");
Http.getInstance(url)
.setData(data)
.setHandler((data) => {
if (data.status) {
helper.info("Download folder updated to " + path);
}
})
.send();
};
helper.filepicker(cb);
},
},
props: ["path"],
};
</script>
<style scoped lang="scss">
@import "../css/variables.scss";
.torrent-file-header {
width: 45px;
height: 100%;
background: $bg-color url("../../img/folder.svg") bottom left no-repeat;
background-size: 40px 40px;
background-clip: border-box;
}
</style>

View File

@@ -44,6 +44,7 @@
@uploadfile="uploadFile"
:path="uris.upload_url"
></uploadFile>
<folderSettings :path="dlPath"></folderSettings>
</div>
</div>
<searchInput
@@ -61,6 +62,7 @@ import searchInput from "./searchInput.vue";
import actionButton from "./actionButton";
import uploadFile from "./uploadFile";
import { translate as t } from "@nextcloud/l10n";
import folderSettings from "./folderSettings.vue";
export default {
inject: ["settings", "search_sites"],
@@ -68,6 +70,7 @@ export default {
return {
checkedValue: false,
path: this.uris.aria2_url,
dlPath: this.settings.settings.ncd_downloader_dir,
inputType: "download",
checkboxes: false,
downloadType: "aria2",
@@ -82,6 +85,7 @@ export default {
actionButton,
searchInput,
uploadFile,
folderSettings,
},
created() {},
computed: {},

View File

@@ -7,7 +7,7 @@ import settingsForm from './lib/settingsForm'
import autoComplete from './lib/autoComplete';
import eventHandler from './lib/eventHandler';
import aria2Options from './utils/aria2Options';
import { options as ytdFullOptions,names as ytdOptions } from './utils/youtubedlOptions';
import { options as ytdFullOptions, names as ytdOptions } from './utils/youtubedlOptions';
import helper from './utils/helper';
import './css/autoComplete.css'
'use strict';
@@ -137,19 +137,15 @@ window.addEventListener('DOMContentLoaded', function () {
}
settingsForm.getInstance().setParent("custom-youtube-dl-settings-container").render(input);
}).send();
const filepicker = function (event) {
let element = event.target;
OC.dialogs.filepicker(
t('ncdownloader', 'Select a directory'),
function (path) {
if (element.value !== path) {
element.value = path;
}
},
false,
'httpd/unix-directory',
true
);
const cb = function (path) {
if (this.value !== path) {
this.value = path;
}
}.bind(element);
helper.filepicker(cb)
}
eventHandler.add('click', "#ncd_downloader_dir", filepicker);
eventHandler.add('click', "#ncd_torrents_dir", filepicker);

View File

@@ -286,6 +286,23 @@ const helper = {
let container = document.getElementById("ncdownloader-table-wrapper");
container.setAttribute("type", name);
container.className = "table " + name;
},
filepicker(cb) {
OC.dialogs.filepicker(
t('ncdownloader', 'Select a directory'),
cb,
false,
'httpd/unix-directory',
true
);
},
getSettings(key, defaultValue = null, type = 2) {
let url = helper.generateUrl("/apps/ncdownloader/getsettings");
return new Promise(resolve => {
Http.getInstance(url).setData({ name: key, type: type, default: defaultValue }).setHandler(data => {
resolve(data)
}).send()
})
}
}