Merge pull request #11552 from owncloud/fix_files_external_flickering

Fix files external flickering
This commit is contained in:
Jörn Friedrich Dreyer 2014-10-17 09:49:52 +02:00
commit e679a4c81c

View file

@ -19,28 +19,28 @@ function getSelection($row) {
return values;
}
function highlightBorder(element, highlight) {
$(element).toggleClass('warning-input', highlight);
function highlightBorder($element, highlight) {
$element.toggleClass('warning-input', highlight);
return highlight;
}
function highlightInput(input) {
if ($(input).attr('type') === 'text' || $(input).attr('type') === 'password') {
return highlightBorder(input,
($(input).val() === '' && !$(input).hasClass('optional')));
function highlightInput($input) {
if ($input.attr('type') === 'text' || $input.attr('type') === 'password') {
return highlightBorder($input,
($input.val() === '' && !$input.hasClass('optional')));
}
}
OC.MountConfig={
saveStorage:function(tr, callback) {
var mountPoint = $(tr).find('.mountPoint input').val();
var oldMountPoint = $(tr).find('.mountPoint input').data('mountpoint');
saveStorage:function($tr, callback) {
var mountPoint = $tr.find('.mountPoint input').val();
var oldMountPoint = $tr.find('.mountPoint input').data('mountpoint');
if (mountPoint === '') {
return false;
}
var statusSpan = $(tr).closest('tr').find('.status span');
var backendClass = $(tr).find('.backend').data('class');
var configuration = $(tr).find('.configuration input');
var statusSpan = $tr.find('.status span');
var backendClass = $tr.find('.backend').data('class');
var configuration = $tr.find('.configuration input');
var addMountPoint = true;
if (configuration.length < 1) {
return false;
@ -62,14 +62,14 @@ OC.MountConfig={
}
});
if ($('#externalStorage').data('admin') === true) {
var multiselect = getSelection($(tr));
var multiselect = getSelection($tr);
}
if (addMountPoint) {
var status = false;
if ($('#externalStorage').data('admin') === true) {
var isPersonal = false;
var oldGroups = $(tr).find('.applicable').data('applicable-groups');
var oldUsers = $(tr).find('.applicable').data('applicable-users');
var oldGroups = $tr.find('.applicable').data('applicable-groups');
var oldUsers = $tr.find('.applicable').data('applicable-users');
var groups = [];
var users = [];
$.each(multiselect, function(index, value) {
@ -102,7 +102,7 @@ OC.MountConfig={
oldMountPoint: oldMountPoint
},
success: function(result) {
$(tr).find('.mountPoint input').data('mountpoint', mountPoint);
$tr.find('.mountPoint input').data('mountpoint', mountPoint);
status = updateStatus(statusSpan, result);
if (callback) {
callback(status);
@ -116,8 +116,8 @@ OC.MountConfig={
}
});
});
$(tr).find('.applicable').data('applicable-groups', groups);
$(tr).find('.applicable').data('applicable-users', users);
$tr.find('.applicable').data('applicable-groups', groups);
$tr.find('.applicable').data('applicable-users', users);
var mountType = 'group';
$.each(oldGroups, function(index, applicable) {
$.ajax({type: 'POST',
@ -163,7 +163,7 @@ OC.MountConfig={
oldMountPoint: oldMountPoint
},
success: function(result) {
$(tr).find('.mountPoint input').data('mountpoint', mountPoint);
$tr.find('.mountPoint input').data('mountpoint', mountPoint);
status = updateStatus(statusSpan, result);
if (callback) {
callback(status);
@ -183,20 +183,23 @@ OC.MountConfig={
};
$(document).ready(function() {
var $externalStorage = $('#externalStorage');
//initialize hidden input field with list of users and groups
$('#externalStorage').find('tr:not(#addMountPoint)').each(function(i,tr) {
var applicable = $(tr).find('.applicable');
if (applicable.length > 0) {
var groups = applicable.data('applicable-groups');
$externalStorage.find('tr:not(#addMountPoint)').each(function(i,tr) {
var $tr = $(tr);
var $applicable = $tr.find('.applicable');
if ($applicable.length > 0) {
var groups = $applicable.data('applicable-groups');
var groupsId = [];
$.each(groups, function () {
groupsId.push(this+"(group)");
groupsId.push(this + '(group)');
});
var users = applicable.data('applicable-users');
var users = $applicable.data('applicable-users');
if (users.indexOf('all') > -1) {
$(tr).find('.applicableUsers').val('');
$tr.find('.applicableUsers').val('');
} else {
$(tr).find('.applicableUsers').val(groupsId.concat(users).join(','));
$tr.find('.applicableUsers').val(groupsId.concat(users).join(','));
}
}
});
@ -221,7 +224,7 @@ $(document).ready(function() {
};
},
results: function (data, page) {
if (data.status === "success") {
if (data.status === 'success') {
var results = [];
var userCount = 0; // users is an object
@ -256,10 +259,10 @@ $(document).ready(function() {
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(users),
dataType: "json"
dataType: 'json'
}).done(function(data) {
var results = [];
if (data.status === "success") {
if (data.status === 'success') {
$.each(data.users, function(user, displayname) {
if (displayname !== false) {
results.push({name:user, displayname:displayname, type:'user'});
@ -294,9 +297,9 @@ $(document).ready(function() {
}
},
escapeMarkup: function (m) { return m; } // we escape the markup in formatResult and formatSelection
}).on("select2-loaded", function() {
$.each($(".avatardiv"), function(i, div) {
$div = $(div);
}).on('select2-loaded', function() {
$.each($('.avatardiv'), function(i, div) {
var $div = $(div);
if ($div.data('type') === 'user') {
$div.avatar($div.data('name'),32);
}
@ -306,21 +309,21 @@ $(document).ready(function() {
}
addSelect2($('tr:not(#addMountPoint) .applicableUsers'));
$('#externalStorage').on('change', '#selectBackend', function() {
var tr = $(this).closest("tr");
$('#externalStorage tbody').append($(tr).clone());
$('#externalStorage tbody tr').last().find('.mountPoint input').val('');
$externalStorage.on('change', '#selectBackend', function() {
var $tr = $(this).closest('tr');
$externalStorage.find('tbody').append($tr.clone());
$externalStorage.find('tbody tr').last().find('.mountPoint input').val('');
var selected = $(this).find('option:selected').text();
var backendClass = $(this).val();
$(tr).find('.backend').text(selected);
if ($(tr).find('.mountPoint input').val() === '') {
$(tr).find('.mountPoint input').val(suggestMountPoint(selected));
$tr.find('.backend').text(selected);
if ($tr.find('.mountPoint input').val() === '') {
$tr.find('.mountPoint input').val(suggestMountPoint(selected));
}
$(tr).addClass(backendClass);
$(tr).find('.status').append('<span></span>');
$(tr).find('.backend').data('class', backendClass);
$tr.addClass(backendClass);
$tr.find('.status').append('<span></span>');
$tr.find('.backend').data('class', backendClass);
var configurations = $(this).data('configurations');
var td = $(tr).find('td.configuration');
var $td = $tr.find('td.configuration');
$.each(configurations, function(backend, parameters) {
if (backend === backendClass) {
$.each(parameters['configuration'], function(parameter, placeholder) {
@ -342,20 +345,20 @@ $(document).ready(function() {
newElement = $('<input type="text" class="added' + class_string + '" data-parameter="'+parameter+'" placeholder="'+placeholder+'" />');
}
highlightInput(newElement);
td.append(newElement);
$td.append(newElement);
});
if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass.replace(/\\/g, '\\\\')).length === 1) {
if (parameters['custom'] && $externalStorage.find('tbody tr.'+backendClass.replace(/\\/g, '\\\\')).length === 1) {
OC.addScript('files_external', parameters['custom']);
}
td.children().not('[type=hidden]').first().focus();
$td.children().not('[type=hidden]').first().focus();
return false;
}
});
$(tr).find('td').last().attr('class', 'remove');
$(tr).find('td').last().removeAttr('style');
$(tr).removeAttr('id');
$tr.find('td').last().attr('class', 'remove');
$tr.find('td').last().removeAttr('style');
$tr.removeAttr('id');
$(this).remove();
addSelect2($('tr:not(#addMountPoint) .applicableUsers'));
addSelect2($tr.find('.applicableUsers'));
});
function suggestMountPoint(defaultMountPoint) {
@ -369,7 +372,7 @@ $(document).ready(function() {
var match = true;
while (match && i < 20) {
match = false;
$('#externalStorage tbody td.mountPoint input').each(function(index, mountPoint) {
$externalStorage.find('tbody td.mountPoint input').each(function(index, mountPoint) {
if ($(mountPoint).val() === defaultMountPoint+append) {
match = true;
return false;
@ -385,54 +388,54 @@ $(document).ready(function() {
return defaultMountPoint+append;
}
$('#externalStorage').on('paste', 'td input', function() {
var tr = $(this).closest("tr");
var me = this;
$externalStorage.on('paste', 'td input', function() {
var $me = $(this);
var $tr = $me.closest('tr');
setTimeout(function() {
highlightInput($(me));
OC.MountConfig.saveStorage(tr);
highlightInput($me);
OC.MountConfig.saveStorage($tr);
}, 20);
});
var timer;
$('#externalStorage').on('keyup', 'td input', function() {
$externalStorage.on('keyup', 'td input', function() {
clearTimeout(timer);
var tr = $(this).closest("tr");
var $tr = $(this).closest('tr');
highlightInput($(this));
if ($(this).val) {
timer = setTimeout(function() {
OC.MountConfig.saveStorage(tr);
OC.MountConfig.saveStorage($tr);
}, 2000);
}
});
$('#externalStorage').on('change', 'td input:checkbox', function() {
OC.MountConfig.saveStorage($(this).closest("tr"));
$externalStorage.on('change', 'td input:checkbox', function() {
OC.MountConfig.saveStorage($(this).closest('tr'));
});
$('#externalStorage').on('change', '.applicable', function() {
OC.MountConfig.saveStorage($(this).closest("tr"));
$externalStorage.on('change', '.applicable', function() {
OC.MountConfig.saveStorage($(this).closest('tr'));
});
$('#externalStorage').on('click', '.status>span', function() {
OC.MountConfig.saveStorage($(this).closest("tr"));
$externalStorage.on('click', '.status>span', function() {
OC.MountConfig.saveStorage($(this).closest('tr'));
});
$('#sslCertificate').on('click', 'td.remove>img', function() {
var $tr = $(this).closest("tr");
var $tr = $(this).closest('tr');
$.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), {cert: $tr.attr('id')});
$tr.remove();
return true;
});
$('#externalStorage').on('click', 'td.remove>img', function() {
var tr = $(this).closest('tr');
var mountPoint = $(tr).find('.mountPoint input').val();
$externalStorage.on('click', 'td.remove>img', function() {
var $tr = $(this).closest('tr');
var mountPoint = $tr.find('.mountPoint input').val();
if ($('#externalStorage').data('admin') === true) {
if ($externalStorage.data('admin') === true) {
var isPersonal = false;
var multiselect = getSelection($(tr));
var multiselect = getSelection($tr);
$.each(multiselect, function(index, value) {
var pos = value.indexOf('(group)');
if (pos != -1) {
@ -450,10 +453,11 @@ $(document).ready(function() {
var isPersonal = true;
$.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal });
}
$(tr).remove();
$tr.remove();
});
$('#allowUserMounting').bind('change', function() {
var $allowUserMounting = $('#allowUserMounting');
$allowUserMounting.bind('change', function() {
OC.msg.startSaving('#userMountingMsg');
if (this.checked) {
OC.AppConfig.setValue('files_external', 'allow_user_mounting', 'yes');
@ -475,8 +479,8 @@ $(document).ready(function() {
// disable allowUserMounting
if(userMountingBackends.length === 0) {
$('#allowUserMounting').prop('checked', false);
$('#allowUserMounting').trigger('change');
$allowUserMounting.prop('checked', false);
$allowUserMounting.trigger('change');
}
});