mirror of
https://codeberg.org/scip/digiproof.git
synced 2025-12-16 20:21:00 +01:00
324 lines
8.5 KiB
JavaScript
Executable File
324 lines
8.5 KiB
JavaScript
Executable File
/*
|
|
*
|
|
* This file is part of the digital testament management program
|
|
* DigiProof.
|
|
*
|
|
* By accessing this software, DigiProof, you are duly informed
|
|
* of and agree to be bound by the conditions described below in this
|
|
* notice:
|
|
*
|
|
* This software product, DigiProof, is developed by T. Linden and
|
|
* copyrighted (C) 2013 by T. Linden, with all rights reserved.
|
|
*
|
|
* There is no charge for DigiProof software. You can redistribute
|
|
* it and/or modify it under the terms of the GNU General Public
|
|
* License, which is incorporated by reference herein.
|
|
*
|
|
* DigiProof is distributed WITHOUT ANY WARRANTY, IMPLIED OR EXPRESS,
|
|
* OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE or that
|
|
* the use of it will not infringe on any third party's intellectual
|
|
* property rights.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with DigiProof. Copies can also be obtained from:
|
|
*
|
|
* http://www.gnu.org/licenses/gpl-2.0.html
|
|
*
|
|
* or by writing to:
|
|
*
|
|
* Free Software Foundation, Inc.
|
|
* Inc., 51 Franklin Street, Fifth Floor
|
|
* Boston, MA 02110-1301
|
|
* USA
|
|
*
|
|
* Or contact:
|
|
*
|
|
* "T. Linden" <tlinden@cpan.org>
|
|
*
|
|
* The sourcecode can be found on:
|
|
*
|
|
* https://codeberg.org/scip/digiproof
|
|
*
|
|
*/
|
|
|
|
|
|
/*
|
|
* CURRENTLY UNUSED !!!!!
|
|
*/
|
|
|
|
|
|
//--
|
|
//-- Filesystem code from TiddlyWiki
|
|
//--
|
|
|
|
function convertUTF8ToUnicode(u)
|
|
{
|
|
return window.netscape == undefined ? manualConvertUTF8ToUnicode(u) : mozConvertUTF8ToUnicode(u);
|
|
}
|
|
|
|
function manualConvertUTF8ToUnicode(utf)
|
|
{
|
|
var uni = utf;
|
|
var src = 0;
|
|
var dst = 0;
|
|
var b1, b2, b3;
|
|
var c;
|
|
while(src < utf.length) {
|
|
b1 = utf.charCodeAt(src++);
|
|
if(b1 < 0x80) {
|
|
dst++;
|
|
} else if(b1 < 0xE0) {
|
|
b2 = utf.charCodeAt(src++);
|
|
c = String.fromCharCode(((b1 & 0x1F) << 6) | (b2 & 0x3F));
|
|
uni = uni.substring(0,dst++).concat(c,utf.substr(src));
|
|
} else {
|
|
b2 = utf.charCodeAt(src++);
|
|
b3 = utf.charCodeAt(src++);
|
|
c = String.fromCharCode(((b1 & 0xF) << 12) | ((b2 & 0x3F) << 6) | (b3 & 0x3F));
|
|
uni = uni.substring(0,dst++).concat(c,utf.substr(src));
|
|
}
|
|
}
|
|
return uni;
|
|
}
|
|
|
|
function mozConvertUTF8ToUnicode(u)
|
|
{
|
|
try {
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
|
|
converter.charset = "UTF-8";
|
|
} catch(ex) {
|
|
return manualConvertUTF8ToUnicode(u);
|
|
} // fallback
|
|
var s = converter.ConvertToUnicode(u);
|
|
var fin = converter.Finish();
|
|
return (fin.length > 0) ? s+fin : s;
|
|
}
|
|
|
|
function convertUnicodeToUTF8(s)
|
|
{
|
|
if(window.netscape == undefined)
|
|
return manualConvertUnicodeToUTF8(s);
|
|
else
|
|
return mozConvertUnicodeToUTF8(s);
|
|
}
|
|
|
|
|
|
function manualConvertUnicodeToUTF8(s)
|
|
{
|
|
var re = /[^\u0000-\u007F]/g ;
|
|
return s.replace(re,function($0) {return "&#" + $0.charCodeAt(0).toString() + ";";});
|
|
}
|
|
|
|
function mozConvertUnicodeToUTF8(s)
|
|
{
|
|
try {
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
|
|
converter.charset = "UTF-8";
|
|
} catch(ex) {
|
|
return manualConvertUnicodeToUTF8(s);
|
|
} // fallback
|
|
var u = converter.ConvertFromUnicode(s);
|
|
var fin = converter.Finish();
|
|
return fin.length > 0 ? u + fin : u;
|
|
}
|
|
|
|
function convertUriToUTF8(uri,charSet)
|
|
{
|
|
if(window.netscape == undefined || charSet == undefined || charSet == "")
|
|
return uri;
|
|
try {
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"].getService(Components.interfaces.nsIUTF8ConverterService);
|
|
} catch(ex) {
|
|
return uri;
|
|
}
|
|
return converter.convertURISpecToUTF8(uri,charSet);
|
|
}
|
|
|
|
function saveFile(fileUrl,content)
|
|
{
|
|
var r = mozillaSaveFile(fileUrl,content);
|
|
if(!r)
|
|
r = ieSaveFile(fileUrl,content);
|
|
if(!r)
|
|
r = javaSaveFile(fileUrl,content);
|
|
return r;
|
|
}
|
|
|
|
function loadFile(fileUrl)
|
|
{
|
|
var r = mozillaLoadFile(fileUrl);
|
|
if((r == null) || (r == false))
|
|
r = ieLoadFile(fileUrl);
|
|
if((r == null) || (r == false))
|
|
r = javaLoadFile(fileUrl);
|
|
return r;
|
|
}
|
|
|
|
|
|
function ieCreatePath(path)
|
|
{
|
|
try {
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
} catch(ex) {
|
|
return null;
|
|
}
|
|
|
|
var pos = path.lastIndexOf("\\");
|
|
if(pos!=-1)
|
|
path = path.substring(0, pos+1);
|
|
|
|
var scan = [];
|
|
scan.push(path);
|
|
var i = 0;
|
|
do {
|
|
var parent = fso.GetParentFolderName(scan[i++]);
|
|
if (fso.FolderExists(parent))
|
|
break;
|
|
scan.push(parent);
|
|
} while(true);
|
|
|
|
for(i=scan.length-1;i>=0;i--) {
|
|
if (!fso.FolderExists(scan[i]))
|
|
fso.CreateFolder(scan[i]);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Returns null if it can't do it, false if there's an error, true if it saved OK
|
|
function ieSaveFile(filePath,content)
|
|
{
|
|
ieCreatePath(filePath);
|
|
try {
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
} catch(ex) {
|
|
return null;
|
|
}
|
|
var file = fso.OpenTextFile(filePath,2,-1,0);
|
|
file.Write(content);
|
|
file.Close();
|
|
return true;
|
|
}
|
|
|
|
|
|
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
|
|
function ieLoadFile(filePath)
|
|
{
|
|
try {
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
var file = fso.OpenTextFile(filePath,1);
|
|
var content = file.ReadAll();
|
|
file.Close();
|
|
} catch(ex) {
|
|
return null;
|
|
}
|
|
return content;
|
|
}
|
|
|
|
function ieCopyFile(dest,source)
|
|
{
|
|
ieCreatePath(dest);
|
|
try {
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
fso.GetFile(source).Copy(dest);
|
|
} catch(ex) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Returns null if it can't do it, false if there's an error, true if it saved OK
|
|
function mozillaSaveFile(filePath,content)
|
|
{
|
|
if(window.Components) {
|
|
try {
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(filePath);
|
|
if(!file.exists())
|
|
file.create(0,0664);
|
|
var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
|
|
out.init(file,0x20|0x02,00004,null);
|
|
out.write(content,content.length);
|
|
out.flush();
|
|
out.close();
|
|
return true;
|
|
} catch(ex) {
|
|
return false;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
|
|
function mozillaLoadFile(filePath)
|
|
{
|
|
if(window.Components) {
|
|
try {
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
|
file.initWithPath(filePath);
|
|
if(!file.exists())
|
|
return null;
|
|
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
|
|
inputStream.init(file,0x01,00004,null);
|
|
var sInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
|
|
sInputStream.init(inputStream);
|
|
return sInputStream.read(sInputStream.available());
|
|
} catch(ex) {
|
|
return false;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function javaUrlToFilename(url)
|
|
{
|
|
var f = "//localhost";
|
|
if(url.indexOf(f) == 0)
|
|
return url.substring(f.length);
|
|
var i = url.indexOf(":");
|
|
if(i > 0)
|
|
return url.substring(i-1);
|
|
return url;
|
|
}
|
|
|
|
function javaSaveFile(filePath,content)
|
|
{
|
|
try {
|
|
if(document.applets["TiddlySaver"])
|
|
return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
|
|
} catch(ex) {
|
|
}
|
|
try {
|
|
var s = new java.io.PrintStream(new java.io.FileOutputStream(javaUrlToFilename(filePath)));
|
|
s.print(content);
|
|
s.close();
|
|
} catch(ex) {
|
|
return null;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function javaLoadFile(filePath)
|
|
{
|
|
try {
|
|
if(document.applets["TiddlySaver"])
|
|
return String(document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8"));
|
|
} catch(ex) {
|
|
}
|
|
var content = [];
|
|
try {
|
|
var r = new java.io.BufferedReader(new java.io.FileReader(javaUrlToFilename(filePath)));
|
|
var line;
|
|
while((line = r.readLine()) != null)
|
|
content.push(new String(line));
|
|
r.close();
|
|
} catch(ex) {
|
|
return null;
|
|
}
|
|
return content.join("\n");
|
|
}
|