allowes for setting download folder in downloader bar;other minor chanages
This commit is contained in:
@@ -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'],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
50
src/components/folderSettings.vue
Normal file
50
src/components/folderSettings.vue
Normal 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>
|
||||
@@ -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: {},
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user