Fixed storage stats to be based on current directory

Previously, the storage statistics were always for the root dir.
This means that the upload button would always show the limit for the
root dir, even when uploading to a shared dir or external storage.

This fix adds a "dir" argument to getstoragestats.php.
This commit is contained in:
Vincent Petry 2013-11-06 10:55:19 +01:00
parent 5d9ab6e7ac
commit 31181e4348
3 changed files with 33 additions and 8 deletions

View File

@ -3,7 +3,13 @@
// only need filesystem apps
$RUNTIME_APPTYPES = array('filesystem');
$dir = '/';
if (isset($_GET['dir'])) {
$dir = $_GET['dir'];
}
OCP\JSON::checkLoggedIn();
// send back json
OCP\JSON::success(array('data' => \OCA\Files\Helper::buildFileStorageStatistics('/')));
OCP\JSON::success(array('data' => \OCA\Files\Helper::buildFileStorageStatistics($dir)));

View File

@ -152,6 +152,9 @@ var FileList={
FileActions.display(tr.find('td.filename'), true);
return tr;
},
getCurrentDirectory: function(){
return $('#dir').val() || '/';
},
/**
* @brief Changes the current directory and reload the file list.
* @param targetDir target directory (non URL encoded)
@ -224,6 +227,10 @@ var FileList={
return;
}
// TODO: should rather return upload file size through
// the files list ajax call
Files.updateStorageStatistics(true);
if (result.data.permissions) {
FileList.setDirectoryPermissions(result.data.permissions);
}

View File

@ -2,16 +2,23 @@ Files={
// file space size sync
_updateStorageStatistics: function() {
Files._updateStorageStatisticsTimeout = null;
if (Files.updateStorageStatistics.running){
return;
var currentDir = FileList.getCurrentDirectory(),
state = Files.updateStorageStatistics;
if (state.dir){
if (state.dir === currentDir) {
return;
}
// cancel previous call, as it was for another dir
state.call.abort();
}
Files.updateStorageStatistics.running = true;
$.getJSON(OC.filePath('files','ajax','getstoragestats.php'),function(response) {
Files.updateStorageStatistics.running = false;
state.dir = currentDir;
state.call = $.getJSON(OC.filePath('files','ajax','getstoragestats.php') + '?dir=' + encodeURIComponent(currentDir),function(response) {
state.dir = null;
state.call = null;
Files.updateMaxUploadFilesize(response);
});
},
updateStorageStatistics: function() {
updateStorageStatistics: function(force) {
if (!OC.currentUser) {
return;
}
@ -20,7 +27,12 @@ Files={
if (Files._updateStorageStatisticsTimeout) {
clearTimeout(Files._updateStorageStatisticsTimeout);
}
Files._updateStorageStatisticsTimeout = setTimeout(Files._updateStorageStatistics, 1000);
if (force) {
Files._updateStorageStatistics();
}
else {
Files._updateStorageStatisticsTimeout = setTimeout(Files._updateStorageStatistics, 250);
}
},
updateMaxUploadFilesize:function(response) {