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#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'],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
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"
|
@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: {},
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import settingsForm from './lib/settingsForm'
|
|||||||
import autoComplete from './lib/autoComplete';
|
import autoComplete from './lib/autoComplete';
|
||||||
import eventHandler from './lib/eventHandler';
|
import eventHandler from './lib/eventHandler';
|
||||||
import aria2Options from './utils/aria2Options';
|
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 helper from './utils/helper';
|
||||||
import './css/autoComplete.css'
|
import './css/autoComplete.css'
|
||||||
'use strict';
|
'use strict';
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user