mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-21 06:52:46 +01:00
72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
$(document).ready(function () {
|
|
var socket,
|
|
loc = document.location,
|
|
port = loc.port == "" ? (loc.protocol == "https:" ? 443 : 80) : loc.port,
|
|
url = loc.protocol + "//" + loc.hostname + ":" + port + "/",
|
|
pathComponents = location.pathname.split('/'),
|
|
// Strip admin/plugins
|
|
baseURL = pathComponents.slice(0,pathComponents.length-2).join('/') + '/',
|
|
resource = baseURL.substring(1) + "socket.io";
|
|
|
|
//connect
|
|
socket = io.connect(url, {resource : resource}).of("/settings");
|
|
|
|
socket.on('settings', function (settings) {
|
|
|
|
/* Check to make sure the JSON is clean before proceeding */
|
|
if(isJSONClean(settings.results))
|
|
{
|
|
$('.settings').append(settings.results);
|
|
$('.settings').focus();
|
|
$('.settings').autosize();
|
|
}
|
|
else{
|
|
alert("YOUR JSON IS BAD AND YOU SHOULD FEEL BAD");
|
|
}
|
|
});
|
|
|
|
/* When the admin clicks save Settings check the JSON then send the JSON back to the server */
|
|
$('#saveSettings').on('click', function(){
|
|
var editedSettings = $('.settings').val();
|
|
if(isJSONClean(editedSettings)){
|
|
// JSON is clean so emit it to the server
|
|
socket.emit("saveSettings", $('.settings').val());
|
|
}else{
|
|
alert("YOUR JSON IS BAD AND YOU SHOULD FEEL BAD")
|
|
$('.settings').focus();
|
|
}
|
|
});
|
|
|
|
/* Tell Etherpad Server to restart */
|
|
$('#restartEtherpad').on('click', function(){
|
|
socket.emit("restartServer");
|
|
});
|
|
|
|
socket.on('saveprogress', function(progress){
|
|
$('#response').show();
|
|
$('#response').text(progress);
|
|
$('#response').fadeOut('slow');
|
|
});
|
|
|
|
socket.emit("load"); // Load the JSON from the server
|
|
|
|
});
|
|
|
|
|
|
function isJSONClean(data){
|
|
var cleanSettings = JSON.minify(data);
|
|
// this is a bit naive. In theory some key/value might contain the sequences ',]' or ',}'
|
|
cleanSettings = cleanSettings.replace(",]","]").replace(",}","}");
|
|
try{
|
|
var response = jQuery.parseJSON(cleanSettings);
|
|
}
|
|
catch(e){
|
|
return false; // the JSON failed to be parsed
|
|
}
|
|
if(typeof response !== 'object'){
|
|
return false;
|
|
}else{
|
|
return true;
|
|
}
|
|
}
|
|
|