aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/index.php4
-rw-r--r--apps/files/js/filelist.js33
-rw-r--r--apps/files/js/files.js50
-rw-r--r--apps/files/templates/index.php1
-rw-r--r--core/js/js.js49
-rw-r--r--lib/helper.php19
-rw-r--r--settings/js/users.js15
-rw-r--r--settings/personal.php16
8 files changed, 116 insertions, 71 deletions
diff --git a/apps/files/index.php b/apps/files/index.php
index b64bde44cc0..cdbedbba477 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -98,6 +98,9 @@ if (OC_Filesystem::isSharable($dir . '/')) {
$permissions |= OCP\PERMISSION_SHARE;
}
+// information about storage capacities
+$storageInfo=OC_Helper::getStorageInfo();
+
$tmpl = new OCP\Template('files', 'index', 'user');
$tmpl->assign('fileList', $list->fetchPage(), false);
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
@@ -108,4 +111,5 @@ $tmpl->assign('files', $files);
$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize);
$tmpl->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize));
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+$tmpl->assign('usedSpacePercent', $storageInfo['relative']);
$tmpl->printPage();
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 22d701d8ff9..fc37e03ba49 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -195,15 +195,14 @@ var FileList={
},
checkName:function(oldName, newName, isNewFile) {
if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) {
- if (isNewFile) {
- $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
- } else {
- $('#notification').html(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
- }
$('#notification').data('oldName', oldName);
$('#notification').data('newName', newName);
$('#notification').data('isNewFile', isNewFile);
- $('#notification').fadeIn();
+ if (isNewFile) {
+ OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
+ } else {
+ OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
+ }
return true;
} else {
return false;
@@ -245,11 +244,10 @@ var FileList={
FileList.finishReplace();
};
if (isNewFile) {
- $('#notification').html(t('files', 'replaced {new_name}', {new_name: newName})+'<span class="undo">'+t('files', 'undo')+'</span>');
+ OC.Notification.showHtml(t('files', 'replaced {new_name}', {new_name: newName})+'<span class="undo">'+t('files', 'undo')+'</span>');
} else {
- $('#notification').html(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>');
+ OC.Notification.showHtml(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>');
}
- $('#notification').fadeIn();
},
finishReplace:function() {
if (!FileList.replaceCanceled && FileList.replaceOldName && FileList.replaceNewName) {
@@ -279,11 +277,10 @@ var FileList={
} else {
// NOTE: Temporary fix to change the text to unshared for files in root of Shared folder
if ($('#dir').val() == '/Shared') {
- $('#notification').html(t('files', 'unshared {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>');
+ OC.Notification.showHtml(t('files', 'unshared {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>');
} else {
- $('#notification').html(t('files', 'deleted {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>');
+ OC.Notification.showHtml(t('files', 'deleted {files}', {'files': escapeHTML(files)})+'<span class="undo">'+t('files', 'undo')+'</span>');
}
- $('#notification').fadeIn();
}
},
finishDelete:function(ready,sync){
@@ -296,7 +293,7 @@ var FileList={
data: {dir:$('#dir').val(),files:fileNames},
complete: function(data){
boolOperationFinished(data, function(){
- $('#notification').fadeOut('400');
+ OC.Notification.hide();
$.each(FileList.deleteFiles,function(index,file){
FileList.remove(file);
});
@@ -356,16 +353,16 @@ $(document).ready(function(){
FileList.replaceIsNewFile = null;
}
FileList.lastAction = null;
- $('#notification').fadeOut('400');
+ OC.Notification.hide();
});
$('#notification .replace').live('click', function() {
- $('#notification').fadeOut('400', function() {
- FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile'));
- });
+ OC.Notification.hide(function() {
+ FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile'));
+ });
});
$('#notification .suggest').live('click', function() {
$('tr').filterAttr('data-file', $('#notification').data('oldName')).show();
- $('#notification').fadeOut('400');
+ OC.Notification.hide();
});
$('#notification .cancel').live('click', function() {
if ($('#notification').data('isNewFile')) {
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index ba2495eb728..ac47f390826 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -28,13 +28,11 @@ Files={
},
isFileNameValid:function (name) {
if (name === '.') {
- $('#notification').text(t('files', "'.' is an invalid file name."));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', "'.' is an invalid file name."));
return false;
}
if (name.length == 0) {
- $('#notification').text(t('files', "File name cannot be empty."));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', "File name cannot be empty."));
return false;
}
@@ -42,14 +40,23 @@ Files={
var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*'];
for (var i = 0; i < invalid_characters.length; i++) {
if (name.indexOf(invalid_characters[i]) != -1) {
- $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed."));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed."));
return false;
}
}
- $('#notification').fadeOut();
+ OC.Notification.hide();
return true;
- }
+ },
+ displayStorageWarnings: function() {
+ var usedSpacePercent = $('#usedSpacePercent').val();
+ if (usedSpacePercent > 98) {
+ OC.Notification.show(t('files', 'Your storage is full, files can not be updated or synced anymore!'));
+ return;
+ }
+ if (usedSpacePercent > 90) {
+ OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent}));
+ }
+ }
};
$(document).ready(function() {
Files.bindKeyboardShortcuts(document, jQuery);
@@ -183,8 +190,7 @@ $(document).ready(function() {
$('.download').click('click',function(event) {
var files=getSelectedFiles('name').join(';');
var dir=$('#dir').val()||'/';
- $('#notification').text(t('files','generating ZIP-file, it may take some time.'));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files','generating ZIP-file, it may take some time.'));
// use special download URL if provided, e.g. for public shared files
if ( (downloadURL = document.getElementById("downloadURL")) ) {
window.location=downloadURL.value+"&download&files="+files;
@@ -313,8 +319,7 @@ $(document).ready(function() {
var response;
response=jQuery.parseJSON(result);
if(response[0] == undefined || response[0].status != 'success') {
- $('#notification').text(t('files', response.data.message));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', response.data.message));
}
var file=response[0];
// TODO: this doesn't work if the file name has been changed server side
@@ -351,9 +356,7 @@ $(document).ready(function() {
} else {
uploadtext.text(t('files', '{count} files uploading', {count: currentUploads}));
}
- $('#notification').hide();
- $('#notification').text(t('files', 'Upload cancelled.'));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
//TODO test with filenames containing slashes
@@ -376,17 +379,14 @@ $(document).ready(function() {
}
FileList.loadingDone(file.name, file.id);
} else {
- $('#notification').text(t('files', response.data.message));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
}
})
.error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') {
- $('#notification').hide();
- $('#notification').text(t('files', 'Upload cancelled.'));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
uploadingFiles[uniqueName] = jqXHR;
@@ -406,8 +406,7 @@ $(document).ready(function() {
}
FileList.loadingDone(file.name, file.id);
} else {
- $('#notification').text(t('files', response.data.message));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
}
@@ -524,8 +523,7 @@ $(document).ready(function() {
if (type != 'web' && !Files.isFileNameValid($(this).val())) {
return;
} else if( type == 'folder' && $('#dir').val() == '/' && $(this).val() == 'Shared') {
- $('#notification').text(t('files','Invalid folder name. Usage of "Shared" is reserved by Owncloud'));
- $('#notification').fadeIn();
+ OC.Notification.show(t('files','Invalid folder name. Usage of "Shared" is reserved by Owncloud'));
return;
}
if (FileList.lastAction) {
@@ -695,6 +693,10 @@ $(document).ready(function() {
});
resizeBreadcrumbs(true);
+
+ // display storage warnings
+ setTimeout ( "Files.displayStorageWarnings()", 100 );
+ OC.Notification.setDefault(Files.displayStorageWarnings);
});
function scanFiles(force,dir){
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php
index edf048c7e13..5246ff1bea9 100644
--- a/apps/files/templates/index.php
+++ b/apps/files/templates/index.php
@@ -117,3 +117,4 @@
<!-- config hints for javascript -->
<input type="hidden" name="allowZipDownload" id="allowZipDownload" value="<?php echo $_['allowZipDownload']; ?>" />
+<input type="hidden" name="usedSpacePercent" id="usedSpacePercent" value="<?php echo $_['usedSpacePercent']; ?>" />
diff --git a/core/js/js.js b/core/js/js.js
index 610950995db..710ef416b69 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -37,14 +37,14 @@ function t(app,text, vars){
t.cache[app] = [];
}
}
- var _build = function(text, vars) {
- return text.replace(/{([^{}]*)}/g,
- function (a, b) {
- var r = vars[b];
- return typeof r === 'string' || typeof r === 'number' ? r : a;
- }
- );
- }
+ var _build = function (text, vars) {
+ return text.replace(/{([^{}]*)}/g,
+ function (a, b) {
+ var r = vars[b];
+ return typeof r === 'string' || typeof r === 'number' ? r : a;
+ }
+ );
+ };
if( typeof( t.cache[app][text] ) !== 'undefined' ){
if(typeof vars === 'object') {
return _build(t.cache[app][text], vars);
@@ -247,7 +247,6 @@ var OC={
var popup = $('#appsettings_popup');
if(popup.length == 0) {
$('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>');
- popup = $('#appsettings_popup');
popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft');
}
if(popup.is(':visible')) {
@@ -289,6 +288,38 @@ OC.search.lastResults={};
OC.addStyle.loaded=[];
OC.addScript.loaded=[];
+OC.Notification={
+ getDefaultNotificationFunction: null,
+ setDefault: function(callback) {
+ OC.Notification.getDefaultNotificationFunction = callback;
+ },
+ hide: function(callback) {
+ $("#notification").text('');
+ $('#notification').fadeOut('400', function(){
+ if ($("#notification").text() === '') {
+ if (OC.Notification.getDefaultNotificationFunction) {
+ OC.Notification.getDefaultNotificationFunction.call();
+ }
+ }
+ if (callback) {
+ callback.call();
+ }
+ });
+ },
+ showHtml: function(html) {
+ var notification = $('#notification');
+ notification.hide();
+ notification.html(html);
+ notification.fadeIn();
+ },
+ show: function(text) {
+ var notification = $('#notification');
+ notification.hide();
+ notification.text(text);
+ notification.fadeIn();
+ }
+};
+
OC.Breadcrumb={
container:null,
crumbs:[],
diff --git a/lib/helper.php b/lib/helper.php
index 1aba2a38100..4607b1b6436 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -783,4 +783,23 @@ class OC_Helper {
}
return true;
}
+
+ /**
+ * Calculate the disc space
+ */
+ public static function getStorageInfo() {
+ $rootInfo = OC_FileCache::get('');
+ $used = $rootInfo['size'];
+ if ($used < 0) {
+ $used = 0;
+ }
+ $free = OC_Filesystem::free_space();
+ $total = $free + $used;
+ if ($total == 0) {
+ $total = 1; // prevent division by zero
+ }
+ $relative = round(($used / $total) * 10000) / 100;
+
+ return array('free' => $free, 'used' => $used, 'total' => $total, 'relative' => $relative);
+ }
}
diff --git a/settings/js/users.js b/settings/js/users.js
index b0e30feb80c..2ccb56ab0e3 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -26,9 +26,8 @@ var UserList = {
UserList.deleteCanceled = false;
// Provide user with option to undo
- $('#notification').html(t('users', 'deleted') + ' ' + uid + '<span class="undo">' + t('users', 'undo') + '</span>');
$('#notification').data('deleteuser', true);
- $('#notification').fadeIn();
+ OC.Notification.showHtml(t('users', 'deleted') + ' ' + uid + '<span class="undo">' + t('users', 'undo') + '</span>');
},
/**
@@ -53,7 +52,7 @@ var UserList = {
success:function (result) {
if (result.status == 'success') {
// Remove undo option, & remove user from table
- $('#notification').fadeOut();
+ OC.Notification.hide();
$('tr').filterAttr('data-uid', UserList.deleteUid).remove();
UserList.deleteCanceled = true;
if (ready) {
@@ -196,7 +195,7 @@ var UserList = {
checked:checked,
oncheck:checkHandeler,
onuncheck:checkHandeler,
- minWidth:100,
+ minWidth:100
});
}
if ($(element).attr('class') == 'subadminsselect') {
@@ -231,7 +230,7 @@ var UserList = {
checked:checked,
oncheck:checkHandeler,
onuncheck:checkHandeler,
- minWidth:100,
+ minWidth:100
});
}
}
@@ -388,7 +387,7 @@ $(document).ready(function () {
{
username:username,
password:password,
- groups:groups,
+ groups:groups
},
function (result) {
if (result.status != 'success') {
@@ -401,13 +400,13 @@ $(document).ready(function () {
);
});
// Handle undo notifications
- $('#notification').hide();
+ OC.Notification.hide();
$('#notification .undo').live('click', function () {
if ($('#notification').data('deleteuser')) {
$('tbody tr').filterAttr('data-uid', UserList.deleteUid).show();
UserList.deleteCanceled = true;
}
- $('#notification').fadeOut();
+ OC.Notification.hide();
});
UserList.useUndo = ('onbeforeunload' in window)
$(window).bind('beforeunload', function () {
diff --git a/settings/personal.php b/settings/personal.php
index 47dbcc53ebc..4624bda8397 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -15,15 +15,7 @@ OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' );
OC_Util::addStyle( '3rdparty', 'chosen' );
OC_App::setActiveNavigationEntry( 'personal' );
-// calculate the disc space
-$rootInfo=OC_FileCache::get('');
-$sharedInfo=OC_FileCache::get('/Shared');
-$used=$rootInfo['size'];
-if($used<0) $used=0;
-$free=OC_Filesystem::free_space();
-$total=$free+$used;
-if($total==0) $total=1; // prevent division by zero
-$relative=round(($used/$total)*10000)/100;
+$storageInfo=OC_Helper::getStorageInfo();
$email=OC_Preferences::getValue(OC_User::getUser(), 'settings', 'email', '');
@@ -50,9 +42,9 @@ foreach($languageCodes as $lang) {
// Return template
$tmpl = new OC_Template( 'settings', 'personal', 'user');
-$tmpl->assign('usage', OC_Helper::humanFileSize($used));
-$tmpl->assign('total_space', OC_Helper::humanFileSize($total));
-$tmpl->assign('usage_relative', $relative);
+$tmpl->assign('usage', OC_Helper::humanFileSize($storageInfo['used']));
+$tmpl->assign('total_space', OC_Helper::humanFileSize($storageInfo['total']));
+$tmpl->assign('usage_relative', $storageInfo['relative']);
$tmpl->assign('email', $email);
$tmpl->assign('languages', $languages);