Merge pull request #8680 from Atlante45/console

Backup old content on update
This commit is contained in:
Chris Collins 2016-09-29 16:30:58 -07:00 committed by GitHub
commit e165c0515a
8 changed files with 295 additions and 24 deletions

View file

@ -0,0 +1,172 @@
@font-face {
font-family: 'Raleway';
src: url('vendor/Raleway/Raleway-Regular.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Raleway';
src: url('vendor/Raleway/Raleway-ExtraLight.ttf');
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Raleway';
src: url('vendor/Raleway/Raleway-SemiBold.ttf');
font-weight: bold;
font-style: normal;
}
* {
font-family: "Raleway", "Open Sans", Arial, Helvetica, sans-serif;
line-height: 130%;
}
body {
margin: 0;
padding: 0;
color: #808785;
margin: 0 auto;
text-align: left;
font-size: 13.5pt;
-webkit-touch-callout: none; -webkit-user-select: none;
cursor: default;
overflow: hidden;
font-variant-numeric: lining-nums;
-moz-font-feature-settings: "lnum";
-webkit-font-feature-settings: "lnum";
font-feature-settings: "lnum";
}
.selectable {
-webkit-touch-callout: text;
-webkit-user-select: text;
cursor: text;
}
a:link,
a:visited,
a:hover,
a:active {
color: #B4B4B4;
}
a:hover {
color: #2D88A4;
}
.header{
width: 95%;
left: 2.5%
}
.colmask{
width: 95%;
left: 2.5%
}
.colmid{ right: 25% }
.colin{ right: 25% }
.colleft{ right: 25% }
.col1{
width: 23%;
left: 101%
}
.col2{
width: 23%;
left: 53%
}
.col3{
width: 23%;
left: 80%
}
.col4{
width: 23%;
left: 82%
}
.footer{
width: 95%;
left: 2.5%
}
.header{
clear: both;
float: left;
position: relative;
border-bottom: #000 1px solid;
background-color: #b4d2f7
}
.colmask{
clear: both;
float: left;
overflow: hidden;
position: relative;
}
.colmid{
float: left;
width: 100%;
position: relative;
}
.colin{
float: left;
width: 100%;
position: relative;
}
.colleft{
float: left;
width: 100%;
position: relative;
}
.col1{
padding: 0px 0px 1em 0px;
overflow: hidden;
float: left;
position: relative;
}
.col2{
padding: 0px 0px 1em 0px;
overflow: hidden;
float: left;
position: relative;
}
.col3{
padding: 0px 0px 1em 0px;
overflow: hidden;
float: left;
position: relative;
}
.col4{
padding: 0px 0px 1em 0px;
overflow: hidden;
float: left;
position: relative;
}
.footer{
clear: both;
float: left;
position: relative;
padding-top: 8px;
border-top: #000 1px solid;
}
.bottom{
clear: both;
width: 100%;
float: left;
position: relative;
}
body {
border-width: 0px;
padding: 0px;
margin: 0px;
font-size: 90%;
width: 100%;
min-width: 600px;
}

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html>
<head>
<title>Server Backup</title>
<script src="content-update.js"></script>
<link rel="stylesheet" type="text/css" href="content-update.css"></link>
</head>
<body onload="ready()">
<div class="colmask">
<h3>We backed up your old Sandbox content, just in case.</h3>
<p><b>To restore it, follow these steps:</b>
<div class="colmid">
<div class="colin">
<div class="colleft">
<!-- I know the content of the columns are swapped -->
<!-- If you manage to fix the CSS, you get to swap it back! -->
<div class="col1">
<img src="images/step2.jpg" alt="Step 2">
<p><b>2.</b> Go to your backup directory:
<span id="directory"></span>
</div>
<div class="col2">
<img src="images/step1.jpg" alt="Step 1">
<p><b>1.</b> Stop your Sandbox server.
</div>
<div class="col3">
<img src="images/step3.jpg" alt="Step 3">
<p><b>3.</b> Copy the backed up content and paste it into the parent directory.
</div>
<div class="col4">
<img src="images/step4.jpg" alt="Step 4">
<p><b>4.</b> Restart your Sandbox server.
</div>
</div>
</div>
</div>
<div class="footer">
<p>For more information about managing your high Fidelity Sandbox Server, check out our docs: <a href="https://wiki.highfidelity.com/wiki/Sandbox" target="_blank">wiki.highfidelity.com/wiki/Sandbox</a>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
function ready() {
console.log("Ready");
const electron = require('electron');
window.$ = require('./vendor/jquery/jquery-2.1.4.min.js');
electron.ipcRenderer.on('update', function(event, message) {
$('#directory').html(message);
});
electron.ipcRenderer.send('ready');
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View file

@ -408,6 +408,13 @@ var labels = {
logWindow.open();
}
},
restoreBackup: {
label: 'Restore Backup Instructions',
click: function() {
var folder = getRootHifiDataDirectory() + "/Server Backup";
openBackupInstructions(folder);
}
},
share: {
label: 'Share',
click: function() {
@ -443,6 +450,7 @@ function buildMenuArray(serverState) {
menuArray.push(labels.stopServer);
menuArray.push(labels.settings);
menuArray.push(labels.viewLogs);
menuArray.push(labels.restoreBackup);
menuArray.push(separator);
menuArray.push(labels.share);
menuArray.push(separator);
@ -488,27 +496,62 @@ function updateTrayMenu(serverState) {
const httpStatusPort = 60332;
function deleteResourceDirectories() {
const dsResourceDirectory = getDomainServerClientResourcesDirectory();
function backupResourceDirectories(folder) {
try {
fs.removeSync(dsResourceDirectory);
console.log("Deleted directory " + dsResourceDirectory);
} catch (e) {
console.log(e);
}
const acResourceDirectory = getAssignmentClientResourcesDirectory();
try {
fs.removeSync(acResourceDirectory);
console.log("Deleted directory " + acResourceDirectory);
fs.mkdirSync(folder);
console.log("Created directory " + folder);
var dsBackup = path.join(folder, '/domain-server');
fs.renameSync(getDomainServerClientResourcesDirectory(), dsBackup);
console.log("Moved directory " + getDomainServerClientResourcesDirectory());
console.log("to " + dsBackup);
var acBackup = path.join(folder, '/assignment-client');
fs.renameSync(getAssignmentClientResourcesDirectory(), acBackup);
console.log("Moved directory " + getDomainServerClientResourcesDirectory());
console.log("to " + acBackup);
return true;
} catch (e) {
console.log(e);
return false;
}
}
function deleteResourceDirectoriesAndRestart() {
function openBackupInstructions(folder) {
// Explain user how to restore server
var window = new BrowserWindow({
icon: appIcon,
width: 800,
height: 520,
});
window.loadURL('file://' + __dirname + '/content-update.html');
if (!debug) {
window.setMenu(null);
}
window.show();
electron.ipcMain.on('ready', function() {
console.log("got ready");
window.webContents.send('update', folder);
});
}
function backupResourceDirectoriesAndRestart() {
homeServer.stop();
deleteResourceDirectories();
maybeInstallDefaultContentSet(onContentLoaded);
var folder = getRootHifiDataDirectory() + "/Server Backup - " + Date.now();
if (backupResourceDirectories(folder)) {
maybeInstallDefaultContentSet(onContentLoaded);
openBackupInstructions(folder);
} else {
dialog.showMessageBox({
type: 'warning',
buttons: ['Ok'],
title: 'Update Error',
message: 'There was an error updating the content, aborting.'
}, function() {});
}
}
function checkNewContent() {
@ -537,16 +580,7 @@ function checkNewContent() {
message: 'A newer version of the home content set is available.\nDo you wish to update?'
}, function(idx) {
if (idx === 0) {
dialog.showMessageBox({
type: 'question',
buttons: ['Yes', 'No'],
title: 'Are you sure?',
message: 'This action will delete your current sandbox content.\nDo you wish to continue?'
}, function(idx) {
if (idx === 0 && homeServer) {
deleteResourceDirectoriesAndRestart();
}
});
backupResourceDirectoriesAndRestart();
} else {
// They don't want to update, mark content set as current
userConfig.set('homeContentLastModified', new Date());