219 lines
5.6 KiB
HTML
219 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Open Diagram</title>
|
|
<link rel="stylesheet" type="text/css" href="styles/grapheditor.css" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
</head>
|
|
<script type="text/javascript">
|
|
// Reads files locally
|
|
function handleFiles(files)
|
|
{
|
|
for (var i = 0; i < files.length; i++)
|
|
{
|
|
(function(file)
|
|
{
|
|
// Small hack to support import
|
|
if (window.parent.openNew)
|
|
{
|
|
window.parent.open(window.parent.location.href);
|
|
}
|
|
|
|
var reader = new FileReader();
|
|
reader.onload = function(e)
|
|
{
|
|
window.parent.openFile.setData(e.target.result, file.name);
|
|
};
|
|
reader.onerror = function(e)
|
|
{
|
|
console.log(e);
|
|
};
|
|
reader.readAsText(file);
|
|
})(files[i]);
|
|
}
|
|
};
|
|
|
|
// Handles form-submit by preparing to process response
|
|
function handleSubmit()
|
|
{
|
|
var form = window.openForm || document.getElementById('openForm');
|
|
|
|
// Checks for support of the File API for local file access
|
|
// except for Visio files where the parse is on the server
|
|
if (window.parent.fileSupport && form.upfile.files.length > 0)
|
|
{
|
|
handleFiles(form.upfile.files);
|
|
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
if (/(\.xml)$/i.test(form.upfile.value) || /(\.txt)$/i.test(form.upfile.value) ||
|
|
/(\.mxe)$/i.test(form.upfile.value))
|
|
{
|
|
// Small hack to support import
|
|
if (window.parent.openNew)
|
|
{
|
|
window.parent.open(window.parent.location.href);
|
|
}
|
|
|
|
// NOTE: File is loaded via JS injection into the iframe, which in turn sets the
|
|
// file contents in the parent window. The new window asks its opener if any file
|
|
// contents are available or waits for the contents to become available.
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
window.parent.mxUtils.alert(window.parent.mxResources.get('invalidOrMissingFile'));
|
|
|
|
return false;
|
|
}
|
|
}
|
|
};
|
|
|
|
// Hides this dialog
|
|
function hideWindow()
|
|
{
|
|
window.parent.openFile.cancel();
|
|
}
|
|
|
|
function fileChanged()
|
|
{
|
|
var form = window.openForm || document.getElementById('openForm');
|
|
var openButton = document.getElementById('openButton');
|
|
|
|
if (form.upfile.value.length > 0)
|
|
{
|
|
openButton.removeAttribute('disabled');
|
|
}
|
|
else
|
|
{
|
|
openButton.setAttribute('disabled', 'disabled');
|
|
}
|
|
}
|
|
|
|
function main()
|
|
{
|
|
if (window.parent.useLocalStorage)
|
|
{
|
|
document.body.innerHTML = '';
|
|
var div = document.createElement('div');
|
|
div.style.fontFamily = 'Arial';
|
|
|
|
if (localStorage.length == 0)
|
|
{
|
|
window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles'));
|
|
}
|
|
else
|
|
{
|
|
var keys = [];
|
|
|
|
for (var i = 0; i < localStorage.length; i++)
|
|
{
|
|
keys.push(localStorage.key(i));
|
|
}
|
|
|
|
// Sorts the array by filename (key)
|
|
keys.sort();
|
|
|
|
for (var i = 0; i < keys.length; i++)
|
|
{
|
|
var link = document.createElement('a');
|
|
link.style.fontDecoration = 'none';
|
|
link.style.fontSize = '14pt';
|
|
var key = keys[i];
|
|
window.parent.mxUtils.write(link, key);
|
|
link.setAttribute('href', 'javascript:void(0);');
|
|
div.appendChild(link);
|
|
|
|
var img = document.createElement('span');
|
|
img.className = 'geSprite geSprite-delete';
|
|
img.style.position = 'relative';
|
|
img.style.cursor = 'pointer';
|
|
img.style.display = 'inline-block';
|
|
div.appendChild(img);
|
|
|
|
window.parent.mxUtils.br(div);
|
|
|
|
window.parent.mxEvent.addListener(img, 'click', (function(k)
|
|
{
|
|
return function()
|
|
{
|
|
if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?'))
|
|
{
|
|
localStorage.removeItem(k);
|
|
window.location.reload();
|
|
}
|
|
};
|
|
})(key));
|
|
|
|
window.parent.mxEvent.addListener(link, 'click', (function(k)
|
|
{
|
|
return function()
|
|
{
|
|
try
|
|
{
|
|
window.parent.open(window.parent.location.href);
|
|
window.parent.openFile.setData(localStorage.getItem(k), k);
|
|
}
|
|
catch (e)
|
|
{
|
|
window.parent.mxUtils.alert(e.message);
|
|
}
|
|
};
|
|
})(key));
|
|
}
|
|
}
|
|
|
|
window.parent.mxUtils.br(div);
|
|
window.parent.mxUtils.br(div);
|
|
|
|
div.appendChild(window.parent.mxUtils.button(window.parent.mxResources.get('cancel'), function()
|
|
{
|
|
hideWindow();
|
|
}));
|
|
|
|
document.body.appendChild(div);
|
|
}
|
|
else
|
|
{
|
|
var editLink = document.getElementById('editLink');
|
|
var openButton = document.getElementById('openButton');
|
|
openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open');
|
|
var cancelButton = document.getElementById('cancelButton');
|
|
cancelButton.value = window.parent.mxResources.get('cancel');
|
|
var supportedText = document.getElementById('openSupported');
|
|
supportedText.innerHTML = window.parent.mxResources.get('openSupported');
|
|
var form = window.openForm || document.getElementById('openForm');
|
|
|
|
// FIXME: Adds .html in IE
|
|
form.setAttribute('action', window.parent.OPEN_URL);
|
|
}
|
|
};
|
|
</script>
|
|
<body onload="main();">
|
|
<form method="POST" enctype="multipart/form-data" action="" name="openForm"
|
|
id="openForm" onsubmit="return handleSubmit();" accept-charset="UTF-8">
|
|
<table>
|
|
<tr>
|
|
<td style="height:40px;vertical-align:top;" colspan="2">
|
|
<input type="file" name="upfile" onchange="fileChanged()">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" height="80px" id="openSupported" style="font-family:arial;color:grey;font-size:9pt;vertical-align:top;text-align:left;">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
</td>
|
|
<td style="vertical-align:middle;text-align:right;white-space:nowrap;">
|
|
<input type="submit" id="openButton" value="Open" disabled="disabled">
|
|
<input type="button" id="cancelButton" value="Cancel" onclick="hideWindow();">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</body>
|
|
</html>
|