158 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
 | 
						|
    <head>
 | 
						|
        <title>StackEdit - Recovery</title>
 | 
						|
        <link rel="canonical" href="https://stackedit.io/">
 | 
						|
        <link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
 | 
						|
        <link rel="shortcut icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
 | 
						|
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
        <link rel="stylesheet" type="text/css" href="res-min/themes/default.css">
 | 
						|
        <script>
 | 
						|
            // Use http://.../?debug to serve original JavaScript files instead of minified
 | 
						|
            window.baseDir = 'res-min';
 | 
						|
            window.noStart = true;
 | 
						|
            window.require = {
 | 
						|
                baseUrl: window.baseDir,
 | 
						|
                deps: ['main']
 | 
						|
            };
 | 
						|
            var timer = 5;
 | 
						|
            function waitTimer() {
 | 
						|
                try {
 | 
						|
                    document.getElementById('timer').textContent = --timer;
 | 
						|
                }
 | 
						|
                catch(e) {}
 | 
						|
                if(timer) {
 | 
						|
                    return setTimeout(waitTimer, 1000);
 | 
						|
                }
 | 
						|
                var failure = false;
 | 
						|
                try {
 | 
						|
                    // Try to use StackEdit dependencies to save a file
 | 
						|
                    var utils = require('utils');
 | 
						|
                    utils.saveAs(JSON.stringify(localStorage), "StackEdit local storage.json");
 | 
						|
                }
 | 
						|
                catch (e) {
 | 
						|
                    // Try something safer
 | 
						|
                    document.getElementsByTagName('textarea')[0].value = JSON.stringify(localStorage);
 | 
						|
                    failure = true;
 | 
						|
                }
 | 
						|
                listFiles();
 | 
						|
 | 
						|
                // Show finish messages
 | 
						|
                var eltList = document.querySelectorAll(failure ? '.download-failure' : '.download-success');
 | 
						|
                for (var i = 0; i < eltList.length; ++i) {
 | 
						|
                    var elt = eltList[i];
 | 
						|
                    show(elt);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            setTimeout(waitTimer, 1000);
 | 
						|
 | 
						|
            function show(elt) {
 | 
						|
                elt.className = elt.className.replace(/ hide/, '');
 | 
						|
            }
 | 
						|
 | 
						|
            var entityMap = {
 | 
						|
                "&": "&",
 | 
						|
                "<": "<",
 | 
						|
                ">": ">",
 | 
						|
                '"': '"',
 | 
						|
                "'": ''',
 | 
						|
                "/": '/'
 | 
						|
            };
 | 
						|
 | 
						|
            function escapeHtml(string) {
 | 
						|
                return String(string).replace(/[&<>"'\/]/g, function(s) {
 | 
						|
                    return entityMap[s];
 | 
						|
                });
 | 
						|
            }
 | 
						|
 | 
						|
            function listFiles() {
 | 
						|
                // List files
 | 
						|
                var fileListElt = document.querySelector('.file-list');
 | 
						|
                fileListElt.innerHTML = '';
 | 
						|
                var fileIndexList = (localStorage['file.list'] || '').split(';');
 | 
						|
                for (var i = 0; i < fileIndexList.length; ++i) {
 | 
						|
                    var fileIndex = fileIndexList[i];
 | 
						|
                    if(!fileIndex) continue;
 | 
						|
                    var fileTitle = localStorage[fileIndex + '.title'];
 | 
						|
                    var divElt = document.createElement('div');
 | 
						|
                    divElt.innerHTML = [
 | 
						|
                        '<a href="javascript:removeFile(\'',
 | 
						|
                        fileIndex,
 | 
						|
                        '\')" class="icon-trash"></a> ',
 | 
						|
                        escapeHtml(fileTitle),
 | 
						|
                    ].join('');
 | 
						|
                    fileListElt.appendChild(divElt);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            function removeFile(fileIndex) {
 | 
						|
                var ok = confirm('Are you sure you want to remove "' + localStorage[fileIndex + '.title'] + '"?');
 | 
						|
                if(ok) {
 | 
						|
                    // Protect against multiple windows
 | 
						|
                    localStorage.removeItem('frontWindowId');
 | 
						|
                    localStorage['file.list'] = localStorage['file.list'].replace(';' + fileIndex + ';', ';');
 | 
						|
                    for (var key in localStorage){
 | 
						|
                        key.indexOf(fileIndex) === 0 && localStorage.removeItem(key);
 | 
						|
                    }
 | 
						|
                    listFiles();
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            function clearLocalStorage() {
 | 
						|
                var ok = confirm('This will remove all your documents and settings. Are you sure?');
 | 
						|
                if(ok) {
 | 
						|
                    localStorage.clear();
 | 
						|
                    listFiles();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        </script>
 | 
						|
        <script src="res-min/require.js"></script>
 | 
						|
    </head>
 | 
						|
 | 
						|
    <body>
 | 
						|
        <div class="container">
 | 
						|
            <br/>
 | 
						|
            <a href="https://stackedit.io/">
 | 
						|
            <img src="res-min/img/logo.svg" width="320" />
 | 
						|
            </a>
 | 
						|
            <h3>StackEdit recovery</h3>
 | 
						|
            <p>
 | 
						|
                <strong>The download of your documents and settings will start in <span id="timer">5</span> seconds...</strong>
 | 
						|
            </p>
 | 
						|
            <p>To import your documents and settings back in StackEdit:</p>
 | 
						|
            <blockquote>
 | 
						|
                <i class="icon-provider-stackedit"></i>
 | 
						|
                <code>Menu</code>
 | 
						|
                <i class="icon-angle-right"></i>
 | 
						|
                <i class="icon-cog"></i>
 | 
						|
                <code>Settings</code>
 | 
						|
                <i class="icon-angle-right"></i>
 | 
						|
                <code>Utils</code>
 | 
						|
                <i class="icon-angle-right"></i>
 | 
						|
                <i class="icon-cog-alt"></i>
 | 
						|
                <code>Import docs & settings</code>
 | 
						|
            </blockquote>
 | 
						|
            <p class="download-success hide text-primary">
 | 
						|
                <strong>
 | 
						|
                    <i class="icon-ok"></i>Documents and settings have been downloaded successfully.</strong>
 | 
						|
            </p>
 | 
						|
            <p class="download-failure hide text-danger">
 | 
						|
                <strong>
 | 
						|
                    <i class="icon-cancel"></i>Download failed. Please copy/paste the following content in a file:</strong>
 | 
						|
            </p>
 | 
						|
            <p>
 | 
						|
                <textarea class="download-failure hide form-control" rows="10"></textarea>
 | 
						|
            </p>
 | 
						|
            <p class="download-success download-failure hide">To remove one document from the local storage
 | 
						|
                <a href="javascript:void(0)" onclick="show(document.querySelector('.file-list'))">click here</a>.</p>
 | 
						|
            <p class="file-list hide"></p>
 | 
						|
            <p class="download-success download-failure hide">To fully clear the local storage
 | 
						|
                <a href="javascript:void(0)" onclick="clearLocalStorage()">click here</a>.</p>
 | 
						|
            <p class="download-success download-failure hide">To reopen StackEdit
 | 
						|
                <a href="https://stackedit.io/">click here</a>.</p>
 | 
						|
        </div>
 | 
						|
    </body>
 | 
						|
 | 
						|
</html>
 |