mirror of
https://github.com/moparisthebest/user_sql
synced 2024-12-01 05:12:18 -05:00
315 lines
9.6 KiB
JavaScript
315 lines
9.6 KiB
JavaScript
// settings.js of user_sql
|
|
|
|
// declare namespace
|
|
var user_sql = user_sql ||
|
|
{
|
|
};
|
|
|
|
/**
|
|
* init admin settings view
|
|
*/
|
|
user_sql.adminSettingsUI = function()
|
|
{
|
|
|
|
if($('#sqlDiv').length > 0)
|
|
{
|
|
// enable tabs on settings page
|
|
$('#sqlDiv').tabs();
|
|
|
|
// Attach auto-completion to all column fields
|
|
$('#col_username, #col_password, #col_displayname, #col_active, #col_email, #col_gethome').autocomplete({
|
|
source: function(request, response)
|
|
{
|
|
var post = $('#sqlForm').serializeArray();
|
|
var domain = $('#sql_domain_chooser option:selected').val();
|
|
|
|
post.push({
|
|
name: 'function',
|
|
value: 'getColumnAutocomplete'
|
|
});
|
|
|
|
post.push({
|
|
name: 'domain',
|
|
value: domain
|
|
});
|
|
|
|
post.push({
|
|
name: 'request',
|
|
value: request.term
|
|
});
|
|
|
|
// Ajax foobar
|
|
$.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, response, 'json');
|
|
},
|
|
minLength: 0,
|
|
open: function() {
|
|
$(this).attr('state', 'open');
|
|
},
|
|
close: function() {
|
|
$(this).attr('state', 'closed');
|
|
}
|
|
}).focus(function() {
|
|
if($(this).attr('state') != 'open')
|
|
{
|
|
$(this).autocomplete("search");
|
|
}
|
|
});
|
|
|
|
// Attach auto-completion to all table fields
|
|
$('#sql_table').autocomplete({
|
|
source: function(request, response)
|
|
{
|
|
var post = $('#sqlForm').serializeArray();
|
|
var domain = $('#sql_domain_chooser option:selected').val();
|
|
|
|
post.push({
|
|
name: 'function',
|
|
value: 'getTableAutocomplete'
|
|
});
|
|
|
|
post.push({
|
|
name: 'domain',
|
|
value: domain
|
|
});
|
|
|
|
post.push({
|
|
name: 'request',
|
|
value: request.term
|
|
});
|
|
|
|
// Ajax foobar
|
|
$.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, response, 'json');
|
|
},
|
|
minLength: 0,
|
|
open: function() {
|
|
$(this).attr('state', 'open');
|
|
},
|
|
close: function() {
|
|
$(this).attr('state', 'closed');
|
|
}
|
|
}).focus(function() {
|
|
if($(this).attr('state') != 'open')
|
|
{
|
|
$(this).autocomplete("search");
|
|
}
|
|
});
|
|
|
|
// Verify the SQL database settings
|
|
$('#sqlVerify').click(function(event)
|
|
{
|
|
event.preventDefault();
|
|
|
|
var post = $('#sqlForm').serializeArray();
|
|
var domain = $('#sql_domain_chooser option:selected').val();
|
|
|
|
post.push({
|
|
name: 'function',
|
|
value: 'verifySettings'
|
|
});
|
|
|
|
post.push({
|
|
name: 'domain',
|
|
value: domain
|
|
});
|
|
|
|
$('#sql_verify_message').show();
|
|
$('#sql_success_message').hide();
|
|
$('#sql_error_message').hide();
|
|
$('#sql_update_message').hide();
|
|
// Ajax foobar
|
|
$.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function(data)
|
|
{
|
|
$('#sql_verify_message').hide();
|
|
if(data.status == 'success')
|
|
{
|
|
$('#sql_success_message').html(data.data.message);
|
|
$('#sql_success_message').show();
|
|
window.setTimeout(function()
|
|
{
|
|
$('#sql_success_message').hide();
|
|
}, 10000);
|
|
} else
|
|
{
|
|
$('#sql_error_message').html(data.data.message);
|
|
$('#sql_error_message').show();
|
|
}
|
|
}, 'json');
|
|
return false;
|
|
});
|
|
|
|
// Save the settings for a domain
|
|
$('#sqlSubmit').click(function(event)
|
|
{
|
|
event.preventDefault();
|
|
|
|
var post = $('#sqlForm').serializeArray();
|
|
var domain = $('#sql_domain_chooser option:selected').val();
|
|
|
|
post.push({
|
|
name: 'function',
|
|
value: 'saveSettings'
|
|
});
|
|
|
|
post.push({
|
|
name: 'domain',
|
|
value: domain
|
|
});
|
|
|
|
$('#sql_update_message').show();
|
|
$('#sql_success_message').hide();
|
|
$('#sql_verify_message').hide();
|
|
$('#sql_error_message').hide();
|
|
// Ajax foobar
|
|
$.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function(data)
|
|
{
|
|
$('#sql_update_message').hide();
|
|
if(data.status == 'success')
|
|
{
|
|
$('#sql_success_message').html(data.data.message);
|
|
$('#sql_success_message').show();
|
|
window.setTimeout(function()
|
|
{
|
|
$('#sql_success_message').hide();
|
|
}, 10000);
|
|
} else
|
|
{
|
|
$('#sql_error_message').html(data.data.message);
|
|
$('#sql_error_message').show();
|
|
}
|
|
}, 'json');
|
|
return false;
|
|
});
|
|
|
|
// Attach event handler to the domain chooser
|
|
$('#sql_domain_chooser').change(function() {
|
|
user_sql.loadDomainSettings($('#sql_domain_chooser option:selected').val());
|
|
});
|
|
|
|
$('#set_gethome_mode').change(function() {
|
|
user_sql.setGethomeMode();
|
|
});
|
|
|
|
$('#set_enable_gethome').change(function() {
|
|
user_sql.setGethomeMode();
|
|
});
|
|
}
|
|
};
|
|
|
|
user_sql.setGethomeMode = function()
|
|
{
|
|
var enabled = $('#set_enable_gethome').prop('checked');
|
|
if(enabled)
|
|
{
|
|
$('#set_gethome_mode').prop('disabled', false);
|
|
var val = $('#set_gethome_mode option:selected').val();
|
|
if(val === 'query')
|
|
{
|
|
$('#set_gethome').prop('disabled', true);
|
|
$('#col_gethome').prop('disabled', false);
|
|
}
|
|
else if(val === 'static')
|
|
{
|
|
$('#set_gethome').prop('disabled', false);
|
|
$('#col_gethome').prop('disabled', true);
|
|
}
|
|
else
|
|
{
|
|
$('#set_gethome').prop('disabled', true);
|
|
$('#col_gethome').prop('disabled', true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$('#set_gethome_mode').prop('disabled', true);
|
|
$('#set_gethome').prop('disabled', true);
|
|
$('#col_gethome').prop('disabled', true);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Load the settings for the selected domain
|
|
* @param string domain The domain to load
|
|
*/
|
|
user_sql.loadDomainSettings = function(domain)
|
|
{
|
|
$('#sql_success_message').hide();
|
|
$('#sql_error_message').hide();
|
|
$('#sql_verify_message').hide();
|
|
$('#sql_loading_message').show();
|
|
var post = [
|
|
{
|
|
name: 'appname',
|
|
value: 'user_sql'
|
|
},
|
|
{
|
|
name: 'function',
|
|
value: 'loadSettingsForDomain'
|
|
},
|
|
{
|
|
name: 'domain',
|
|
value: domain
|
|
}
|
|
];
|
|
$.post(OC.filePath('user_sql', 'ajax', 'settings.php'), post, function(data)
|
|
{
|
|
$('#sql_loading_message').hide();
|
|
if(data.status == 'success')
|
|
{
|
|
for(key in data.settings)
|
|
{
|
|
if(key == 'set_strip_domain')
|
|
{
|
|
if(data.settings[key] == 'true')
|
|
$('#' + key).prop('checked', true);
|
|
else
|
|
$('#' + key).prop('checked', false);
|
|
}
|
|
else if(key == 'set_allow_pwchange')
|
|
{
|
|
if(data.settings[key] == 'true')
|
|
$('#' + key).prop('checked', true);
|
|
else
|
|
$('#' + key).prop('checked', false);
|
|
}
|
|
else if(key == 'set_active_invert')
|
|
{
|
|
if(data.settings[key] == 'true')
|
|
$('#' + key).prop('checked', true);
|
|
else
|
|
$('#' + key).prop('checked', false);
|
|
}
|
|
else if(key == 'set_enable_gethome')
|
|
{
|
|
if(data.settings[key] == 'true')
|
|
$('#' + key).prop('checked', true);
|
|
else
|
|
$('#' + key).prop('checked', false);
|
|
}
|
|
else
|
|
{
|
|
$('#' + key).val(data.settings[key]);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$('#sql_error_message').html(data.data.message);
|
|
$('#sql_error_message').show();
|
|
}
|
|
user_sql.setGethomeMode();
|
|
}, 'json'
|
|
);
|
|
};
|
|
|
|
// Run our JS if the SQL settings are present
|
|
$(document).ready(function()
|
|
{
|
|
if($('#sqlDiv'))
|
|
{
|
|
user_sql.adminSettingsUI();
|
|
user_sql.loadDomainSettings($('#sql_domain_chooser option:selected').val());
|
|
user_sql.setGethomeMode();
|
|
}
|
|
});
|
|
|