Browse Source

Merge pull request #9069 from AltruisticCompany/mkpath

Create non-existing path in setLocationAction()
adaptive-webui-19844
Mike Tzou 7 years ago committed by GitHub
parent
commit
383a354700
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      src/webui/api/torrentscontroller.cpp
  2. 2
      src/webui/www/private/scripts/mocha-init.js
  3. 10
      src/webui/www/private/setlocation.html

13
src/webui/api/torrentscontroller.cpp

@ -737,9 +737,16 @@ void TorrentsController::setLocationAction() @@ -737,9 +737,16 @@ void TorrentsController::setLocationAction()
const QStringList hashes {params()["hashes"].split("|")};
const QString newLocation {params()["location"].trimmed()};
// check if the location exists
if (newLocation.isEmpty() || !QDir(newLocation).exists())
return;
if (newLocation.isEmpty())
throw APIError(APIErrorType::BadParams, tr("Save path is empty"));
// try to create the location if it does not exist
if (!QDir(newLocation).mkpath("."))
throw APIError(APIErrorType::Conflict, tr("Cannot make save path"));
// check permissions
if (!QFileInfo(newLocation).isWritable())
throw APIError(APIErrorType::AccessDenied, tr("Cannot write to directory"));
applyToTorrents(hashes, [newLocation](BitTorrent::TorrentHandle *torrent)
{

2
src/webui/www/private/scripts/mocha-init.js

@ -417,7 +417,7 @@ initializeWindows = function() { @@ -417,7 +417,7 @@ initializeWindows = function() {
paddingVertical: 0,
paddingHorizontal: 0,
width: 400,
height: 100
height: 130
});
}
};

10
src/webui/www/private/setlocation.html

@ -31,8 +31,10 @@ @@ -31,8 +31,10 @@
new Event(e).stop();
// check field
var location = $('setLocation').value.trim();
if (location === null || location === "")
if (location === null || location === "") {
$('error_div').set('text', 'QBT_TR(Save path is empty)QBT_TR[CONTEXT=TorrentsController]');
return false;
}
var hashesList = new URI().getData('hashes');
new Request({
@ -42,8 +44,11 @@ @@ -42,8 +44,11 @@
hashes: hashesList,
location: location
},
onComplete: function() {
onSuccess: function() {
window.parent.closeWindows();
},
onFailure: function(xhr) {
$('error_div').set('text', xhr.response);
}
}).send();
});
@ -55,6 +60,7 @@ @@ -55,6 +60,7 @@
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Location)QBT_TR[CONTEXT=TransferListWidget]:</p>
<input type="text" id="setLocation" value="" maxlength="100" style="width: 370px;" />
<div style="float: none; width: 370px;" id="error_div">&nbsp;</div>
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="setLocationButton" />
</div>

Loading…
Cancel
Save