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#youtubeGet', 'url' => '/personal/youtube-dl/get', 'verb' => 'POST'],
['name' => 'Settings#youtubeSave', 'url' => '/personal/youtube-dl/save', 'verb' => 'POST'], ['name' => 'Settings#youtubeSave', 'url' => '/personal/youtube-dl/save', 'verb' => 'POST'],
['name' => 'Settings#youtubeDelete', 'url' => '/personal/youtube-dl/delete', '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']), 'personal_url' => $this->urlGenerator->linkToRoute("settings.PersonalSettings.index", ['section' => 'ncdownloader']),
'ncd_hide_errors' => $this->hideError, 'ncd_hide_errors' => $this->hideError,
'ncd_disable_bt' => $this->disable_bt_nonadmin, 'ncd_disable_bt' => $this->disable_bt_nonadmin,
'ncd_downloader_dir' => Helper::getSettings("ncd_downloader_dir"),
]); ]);
return $params; return $params;
} }

View File

@@ -25,6 +25,18 @@ class SettingsController extends Controller
//$this->config = \OC::$server->getAppConfig(); //$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 * @NoAdminRequired
* @NoCSRFRequired * @NoCSRFRequired
@@ -37,6 +49,7 @@ class SettingsController extends Controller
} }
return new JSONResponse($resp); return new JSONResponse($resp);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @NoCSRFRequired * @NoCSRFRequired
@@ -128,8 +141,8 @@ class SettingsController extends Controller
try { try {
$this->settings->save($key, $value); $this->settings->save($key, $value);
} catch (\Exception $e) { } 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" @uploadfile="uploadFile"
:path="uris.upload_url" :path="uris.upload_url"
></uploadFile> ></uploadFile>
<folderSettings :path="dlPath"></folderSettings>
</div> </div>
</div> </div>
<searchInput <searchInput
@@ -61,6 +62,7 @@ import searchInput from "./searchInput.vue";
import actionButton from "./actionButton"; import actionButton from "./actionButton";
import uploadFile from "./uploadFile"; import uploadFile from "./uploadFile";
import { translate as t } from "@nextcloud/l10n"; import { translate as t } from "@nextcloud/l10n";
import folderSettings from "./folderSettings.vue";
export default { export default {
inject: ["settings", "search_sites"], inject: ["settings", "search_sites"],
@@ -68,6 +70,7 @@ export default {
return { return {
checkedValue: false, checkedValue: false,
path: this.uris.aria2_url, path: this.uris.aria2_url,
dlPath: this.settings.settings.ncd_downloader_dir,
inputType: "download", inputType: "download",
checkboxes: false, checkboxes: false,
downloadType: "aria2", downloadType: "aria2",
@@ -82,6 +85,7 @@ export default {
actionButton, actionButton,
searchInput, searchInput,
uploadFile, uploadFile,
folderSettings,
}, },
created() {}, created() {},
computed: {}, computed: {},

View File

@@ -137,19 +137,15 @@ window.addEventListener('DOMContentLoaded', function () {
} }
settingsForm.getInstance().setParent("custom-youtube-dl-settings-container").render(input); settingsForm.getInstance().setParent("custom-youtube-dl-settings-container").render(input);
}).send(); }).send();
const filepicker = function (event) { const filepicker = function (event) {
let element = event.target; let element = event.target;
OC.dialogs.filepicker( const cb = function (path) {
t('ncdownloader', 'Select a directory'), if (this.value !== path) {
function (path) { this.value = path;
if (element.value !== path) {
element.value = path;
} }
}, }.bind(element);
false, helper.filepicker(cb)
'httpd/unix-directory',
true
);
} }
eventHandler.add('click', "#ncd_downloader_dir", filepicker); eventHandler.add('click', "#ncd_downloader_dir", filepicker);
eventHandler.add('click', "#ncd_torrents_dir", filepicker); eventHandler.add('click', "#ncd_torrents_dir", filepicker);

View File

@@ -286,6 +286,23 @@ const helper = {
let container = document.getElementById("ncdownloader-table-wrapper"); let container = document.getElementById("ncdownloader-table-wrapper");
container.setAttribute("type", name); container.setAttribute("type", name);
container.className = "table " + 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()
})
} }
} }