Added example.
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
|
||||
|
||||
<title>ONLYOFFICE™</title>
|
||||
|
||||
<link href="stylesheet.css" type="text/css" rel="stylesheet">
|
||||
|
||||
<!--Change the address on installed ONLYOFFICE™ Online Editors-->
|
||||
<script id="scriptApi" type="text/javascript" src="https://doc.onlyoffice.com/OfficeWeb/apps/api/documents/api.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="sha256.js"></script>
|
||||
<script type="text/javascript" src="init.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="page">
|
||||
<div class="top-panel"></div>
|
||||
<div id="mainPanel" class="main-panel">
|
||||
<span class="portal-name">ONLYOFFICE™ Online Editors</span>
|
||||
<br />
|
||||
<br />
|
||||
<span class="portal-descr">Get started with a demo-sample of ONLYOFFICE™ Online Editors, the first html5-based editors. You may enter url your own document for testing.</span>
|
||||
<textarea id="documentUrl" class="document-url">http://onlyo.co/1x5REbq?demo.docx</textarea>
|
||||
<br />
|
||||
<br />
|
||||
<div class="button" onclick="document.getElementById('mainPanel').style.display ='none';document.getElementById('placeholder').parentNode.setAttribute('class', 'embedded');initEditor(null, null, null, 'embedded')">Embedded view</div>
|
||||
<div class="button" onclick="document.getElementById('page').style.display ='none';initEditor()">View</div>
|
||||
<div class="button" onclick="document.getElementById('page').style.display ='none';initEditor(null, null, 'edit')">Edit</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div id="placeholder"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
75
OnlineEditorsExample/OnlineEditorsExampleJS/init.js
Normal file
75
OnlineEditorsExample/OnlineEditorsExampleJS/init.js
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
Copyright (c) Ascensio System SIA 2014. All rights reserved.
|
||||
http://www.onlyoffice.com
|
||||
*/
|
||||
function initEditor(docKey, docVkey, mode, type) {
|
||||
//mode for editor
|
||||
window.mode = window.mode || mode || "view";
|
||||
mode = window.mode;
|
||||
|
||||
//mode for editor
|
||||
window.type = window.type || type || "desktop";
|
||||
type = window.type;
|
||||
|
||||
//url for document
|
||||
window.docUrl = document.getElementById("documentUrl").value;
|
||||
|
||||
//key for chaching and collaborate editing
|
||||
window.docKey = window.docKey || docKey || key(docUrl);
|
||||
docKey = window.docKey;
|
||||
|
||||
//vkey parameter is necessary if you use our SaaS based editors only.
|
||||
if (document.getElementById("scriptApi").getAttribute("src").indexOf("doc.onlyoffice.com") != -1
|
||||
&& !docVkey) {
|
||||
if (typeof vkey !== "function") {
|
||||
var script = document.createElement("script")
|
||||
script.setAttribute("src", "vkey.js")
|
||||
document.getElementsByTagName("head")[0].appendChild(script);
|
||||
return;
|
||||
} else {
|
||||
docVkey = vkey(docKey);
|
||||
}
|
||||
}
|
||||
|
||||
//type for document
|
||||
var docType = docUrl.substring(docUrl.lastIndexOf(".") + 1).trim().toLowerCase();
|
||||
//type for editor
|
||||
var documentType = getDocumentType(docType);
|
||||
|
||||
//creating object editing
|
||||
new DocsAPI.DocEditor("placeholder",
|
||||
{
|
||||
type: type,
|
||||
width: (type == "desktop" ? "100%" : undefined),
|
||||
height: (type == "desktop" ? "100%" : undefined),
|
||||
documentType: documentType,
|
||||
document: {
|
||||
title: docUrl,
|
||||
url: docUrl,
|
||||
fileType: docType,
|
||||
key: docKey,
|
||||
vkey: docVkey,
|
||||
permissions: {
|
||||
edit: true
|
||||
}
|
||||
},
|
||||
editorConfig: {
|
||||
mode: mode,
|
||||
},
|
||||
events: {
|
||||
"onSave": function (event) { alert("You can get changed document by url: " + event.data); }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function key(k) {
|
||||
var result = k.replace(new RegExp("[^0-9-.a-zA-Z_=]", "g"), "_") + (new Date()).getTime();
|
||||
return result.substring(result.length - Math.min(result.length, 20));
|
||||
};
|
||||
|
||||
var getDocumentType = function (ext) {
|
||||
if (".docx.doc.odt.rtf.txt.html.htm.mht.pdf.djvu.fb2.epub.xps".indexOf(ext) != -1) return "text";
|
||||
if (".xls.xlsx.ods.csv".indexOf(ext) != -1) return "spreadsheet";
|
||||
if (".pps.ppsx.ppt.pptx.odp".indexOf(ext) != -1) return "presentation";
|
||||
return null;
|
||||
};
|
||||
BIN
OnlineEditorsExample/OnlineEditorsExampleJS/logo.png
Normal file
BIN
OnlineEditorsExample/OnlineEditorsExampleJS/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
25
OnlineEditorsExample/OnlineEditorsExampleJS/sha256.js
Normal file
25
OnlineEditorsExample/OnlineEditorsExampleJS/sha256.js
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
A JavaScript implementation of the SHA family of hashes, as
|
||||
defined in FIPS PUB 180-2 as well as the corresponding HMAC implementation
|
||||
as defined in FIPS PUB 198a
|
||||
|
||||
Copyright Brian Turek 2008-2014
|
||||
Distributed under the BSD License
|
||||
See http://caligatio.github.com/jsSHA/ for more information
|
||||
|
||||
Several functions taken from Paul Johnston
|
||||
*/
|
||||
'use strict';(function(D){function r(a,d,b){var c=0,f=[0],g="",h=null,g=b||"UTF8";if("UTF8"!==g&&"UTF16"!==g)throw"encoding must be UTF8 or UTF16";if("HEX"===d){if(0!==a.length%2)throw"srcString of HEX type must be in byte increments";h=u(a);c=h.binLen;f=h.value}else if("TEXT"===d)h=v(a,g),c=h.binLen,f=h.value;else if("B64"===d)h=w(a),c=h.binLen,f=h.value;else if("BYTES"===d)h=x(a),c=h.binLen,f=h.value;else throw"inputFormat must be HEX, TEXT, B64, or BYTES";this.getHash=function(a,d,b,g){var h=null,
|
||||
e=f.slice(),m=c,k;3===arguments.length?"number"!==typeof b&&(g=b,b=1):2===arguments.length&&(b=1);if(b!==parseInt(b,10)||1>b)throw"numRounds must a integer >= 1";switch(d){case "HEX":h=y;break;case "B64":h=z;break;case "BYTES":h=A;break;default:throw"format must be HEX, B64, or BYTES";}if("SHA-224"===a)for(k=0;k<b;k+=1)e=q(e,m,a),m=224;else if("SHA-256"===a)for(k=0;k<b;k+=1)e=q(e,m,a),m=256;else throw"Chosen SHA variant is not supported";return h(e,B(g))};this.getHMAC=function(a,b,d,h,l){var e,m,
|
||||
k,n,C=[],s=[];e=null;switch(h){case "HEX":h=y;break;case "B64":h=z;break;case "BYTES":h=A;break;default:throw"outputFormat must be HEX, B64, or BYTES";}if("SHA-224"===d)m=64,n=224;else if("SHA-256"===d)m=64,n=256;else throw"Chosen SHA variant is not supported";if("HEX"===b)e=u(a),k=e.binLen,e=e.value;else if("TEXT"===b)e=v(a,g),k=e.binLen,e=e.value;else if("B64"===b)e=w(a),k=e.binLen,e=e.value;else if("BYTES"===b)e=x(a),k=e.binLen,e=e.value;else throw"inputFormat must be HEX, TEXT, B64, or BYTES";
|
||||
a=8*m;b=m/4-1;m<k/8?(e=q(e,k,d),e[b]&=4294967040):m>k/8&&(e[b]&=4294967040);for(m=0;m<=b;m+=1)C[m]=e[m]^909522486,s[m]=e[m]^1549556828;d=q(s.concat(q(C.concat(f),a+c,d)),a+n,d);return h(d,B(l))}}function v(a,d){var b=[],c,f=[],g=0,h;if("UTF8"===d)for(h=0;h<a.length;h+=1)for(c=a.charCodeAt(h),f=[],128>c?f.push(c):2048>c?(f.push(192|c>>>6),f.push(128|c&63)):55296>c||57344<=c?f.push(224|c>>>12,128|c>>>6&63,128|c&63):(h+=1,c=65536+((c&1023)<<10|a.charCodeAt(h)&1023),f.push(240|c>>>18,128|c>>>12&63,128|
|
||||
c>>>6&63,128|c&63)),c=0;c<f.length;c+=1)(g>>>2)+1>b.length&&b.push(0),b[g>>>2]|=f[c]<<24-g%4*8,g+=1;else if("UTF16"===d)for(h=0;h<a.length;h+=1)(g>>>2)+1>b.length&&b.push(0),b[g>>>2]|=a.charCodeAt(h)<<16-g%4*8,g+=2;return{value:b,binLen:8*g}}function u(a){var d=[],b=a.length,c,f;if(0!==b%2)throw"String of HEX type must be in byte increments";for(c=0;c<b;c+=2){f=parseInt(a.substr(c,2),16);if(isNaN(f))throw"String of HEX type contains invalid characters";d[c>>>3]|=f<<24-c%8*4}return{value:d,binLen:4*
|
||||
b}}function x(a){var d=[],b,c;for(c=0;c<a.length;c+=1)b=a.charCodeAt(c),(c>>>2)+1>d.length&&d.push(0),d[c>>>2]|=b<<24-c%4*8;return{value:d,binLen:8*a.length}}function w(a){var d=[],b=0,c,f,g,h,l;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string";c=a.indexOf("=");a=a.replace(/\=/g,"");if(-1!==c&&c<a.length)throw"Invalid '=' found in base-64 string";for(f=0;f<a.length;f+=4){l=a.substr(f,4);for(g=h=0;g<l.length;g+=1)c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[g]),
|
||||
h|=c<<18-6*g;for(g=0;g<l.length-1;g+=1)d[b>>2]|=(h>>>16-8*g&255)<<24-b%4*8,b+=1}return{value:d,binLen:8*b}}function y(a,d){var b="",c=4*a.length,f,g;for(f=0;f<c;f+=1)g=a[f>>>2]>>>8*(3-f%4),b+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return d.outputUpper?b.toUpperCase():b}function z(a,d){var b="",c=4*a.length,f,g,h;for(f=0;f<c;f+=3)for(h=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255,g=0;4>g;g+=1)b=8*f+6*g<=32*a.length?b+
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(h>>>6*(3-g)&63):b+d.b64Pad;return b}function A(a){var d="",b=4*a.length,c,f;for(c=0;c<b;c+=1)f=a[c>>>2]>>>8*(3-c%4)&255,d+=String.fromCharCode(f);return d}function B(a){var d={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(d.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(d.b64Pad=a.b64Pad)}catch(b){}if("boolean"!==typeof d.outputUpper)throw"Invalid outputUpper formatting option";if("string"!==typeof d.b64Pad)throw"Invalid b64Pad formatting option";
|
||||
return d}function l(a,d){return a>>>d|a<<32-d}function I(a,d,b){return a&d^~a&b}function J(a,d,b){return a&d^a&b^d&b}function K(a){return l(a,2)^l(a,13)^l(a,22)}function L(a){return l(a,6)^l(a,11)^l(a,25)}function M(a){return l(a,7)^l(a,18)^a>>>3}function N(a){return l(a,17)^l(a,19)^a>>>10}function O(a,d){var b=(a&65535)+(d&65535);return((a>>>16)+(d>>>16)+(b>>>16)&65535)<<16|b&65535}function P(a,d,b,c){var f=(a&65535)+(d&65535)+(b&65535)+(c&65535);return((a>>>16)+(d>>>16)+(b>>>16)+(c>>>16)+(f>>>16)&
|
||||
65535)<<16|f&65535}function Q(a,d,b,c,f){var g=(a&65535)+(d&65535)+(b&65535)+(c&65535)+(f&65535);return((a>>>16)+(d>>>16)+(b>>>16)+(c>>>16)+(f>>>16)+(g>>>16)&65535)<<16|g&65535}function q(a,d,b){var c,f,g,h,l,q,r,E,u,e,m,k,n,C,s,p,v,w,x,y,z,A,B,F,G,t=[],H,D=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,
|
||||
1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];e=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,
|
||||
1694076839,3204075428];c=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];if("SHA-224"===b||"SHA-256"===b)m=64,C=16,s=1,G=Number,p=O,v=P,w=Q,x=M,y=N,z=K,A=L,F=J,B=I,e="SHA-224"===b?e:c;else throw"Unexpected error in SHA-2 implementation";a[d>>>5]|=128<<24-d%32;a[(d+65>>>9<<4)+15]=d;H=a.length;for(k=0;k<H;k+=C){d=e[0];c=e[1];f=e[2];g=e[3];h=e[4];l=e[5];q=e[6];r=e[7];for(n=0;n<m;n+=1)t[n]=16>n?new G(a[n*s+k],a[n*s+k+1]):v(y(t[n-2]),t[n-7],x(t[n-15]),t[n-16]),
|
||||
E=w(r,A(h),B(h,l,q),D[n],t[n]),u=p(z(d),F(d,c,f)),r=q,q=l,l=h,h=p(g,E),g=f,f=c,c=d,d=p(E,u);e[0]=p(d,e[0]);e[1]=p(c,e[1]);e[2]=p(f,e[2]);e[3]=p(g,e[3]);e[4]=p(h,e[4]);e[5]=p(l,e[5]);e[6]=p(q,e[6]);e[7]=p(r,e[7])}if("SHA-224"===b)a=[e[0],e[1],e[2],e[3],e[4],e[5],e[6]];else if("SHA-256"===b)a=e;else throw"Unexpected error in SHA-2 implementation";return a}"function"===typeof define&&define.amd?define(function(){return r}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=
|
||||
exports=r:exports=r:D.jsSHA=r})(this);
|
||||
92
OnlineEditorsExample/OnlineEditorsExampleJS/stylesheet.css
Normal file
92
OnlineEditorsExample/OnlineEditorsExampleJS/stylesheet.css
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
Copyright (c) Ascensio System SIA 2014. All rights reserved.
|
||||
http://www.onlyoffice.com
|
||||
*/
|
||||
html {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
body {
|
||||
background: #fff;
|
||||
color: #333;
|
||||
font-family: Arial, Tahoma,sans-serif;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
form {
|
||||
height: 100%;
|
||||
}
|
||||
div {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
.top-panel {
|
||||
background: url("logo.png") no-repeat 30px center #3D4A6B;
|
||||
height: 80px;
|
||||
width: 100%;
|
||||
}
|
||||
.main-panel {
|
||||
margin: 105px auto 0;
|
||||
width: 350px;
|
||||
}
|
||||
.portal-name {
|
||||
color: #3D4A6B;
|
||||
font-size: 20px;
|
||||
}
|
||||
.portal-descr {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
margin-bottom: 24px;
|
||||
width: 480px;
|
||||
}
|
||||
.document-url {
|
||||
height: 65px;
|
||||
resize: vertical;
|
||||
width: 350px;
|
||||
}
|
||||
.embedded {
|
||||
margin: 105px auto 0;
|
||||
width: 640px;
|
||||
}
|
||||
|
||||
.button, .button:visited, .button:hover, .button:active {
|
||||
display: inline-block;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
cursor:pointer;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
touch-callout: none;
|
||||
-o-touch-callout: none;
|
||||
-moz-touch-callout: none;
|
||||
-webkit-touch-callout: none;
|
||||
user-select: none;
|
||||
-o-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
padding: 2px 12px;
|
||||
|
||||
color: #fff;
|
||||
|
||||
background: #3D96C6;
|
||||
background: linear-gradient(top, #59B1E2, #3D96C6 50%, #3D96C6 51%, #1A76a6);
|
||||
background: -o-linear-gradient(top, #59B1E2, #3D96C6 50%, #3D96C6 51%, #1A76a6);
|
||||
background: -moz-linear-gradient(top, #59B1E2, #3D96C6 50%, #3D96C6 51%, #1A76a6);
|
||||
background: -webkit-linear-gradient(top, #59B1E2, #3D96C6 50%, #3D96C6 51%, #1A76a6);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#59B1E2', EndColorStr='#1A76a6')";
|
||||
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #4da9dc #4098c9 #2d7399 #4098c9;
|
||||
}
|
||||
238
OnlineEditorsExample/OnlineEditorsExampleJS/vkey.js
Normal file
238
OnlineEditorsExample/OnlineEditorsExampleJS/vkey.js
Normal file
@@ -0,0 +1,238 @@
|
||||
/*
|
||||
Copyright (c) Ascensio System SIA 2014. All rights reserved.
|
||||
http://www.onlyoffice.com
|
||||
*/
|
||||
|
||||
function vkey(document_id) {
|
||||
var tenant_id = "_ContactUs_";
|
||||
var secret_key = "_ContactUs_";
|
||||
var ms = Date.now().valueOf();
|
||||
var primary_key = "{\"expire\":\"\\/Date(" + ms + ")\\/\",\"key\":\"" + document_id + "\",\"key_id\":\"" + tenant_id + "\",\"user_count\":0}";
|
||||
|
||||
return Create(primary_key, secret_key);
|
||||
}
|
||||
|
||||
function Create(primary_key, secret_key) {
|
||||
var secret_hash = GetHashBase64(primary_key + secret_key);
|
||||
|
||||
var payload = secret_hash + "?" + primary_key;
|
||||
var data = Base64.encode(payload);
|
||||
|
||||
var cnt = 0;
|
||||
while (data.indexOf('=') !== -1) {
|
||||
cnt++;
|
||||
data = data.replace('=', '');
|
||||
}
|
||||
|
||||
data = (data + cnt).replace(/\+/g, '/').replace(/-/g, '_').replace(/\//g, '_');
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
function GetHashBase64(t) {
|
||||
var data = new jsSHA(t, 'TEXT').getHash('SHA-256', 'B64', 1)
|
||||
return data
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* Base64 encode / decode
|
||||
* http://www.webtoolkit.info/
|
||||
*
|
||||
**/
|
||||
|
||||
var Base64 = {
|
||||
|
||||
// private property
|
||||
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
||||
|
||||
// public method for encoding
|
||||
encode : function (input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = Base64._utf8_encode(input);
|
||||
|
||||
while (i < input.length) {
|
||||
|
||||
chr1 = input.charCodeAt(i++);
|
||||
chr2 = input.charCodeAt(i++);
|
||||
chr3 = input.charCodeAt(i++);
|
||||
|
||||
enc1 = chr1 >> 2;
|
||||
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
enc4 = chr3 & 63;
|
||||
|
||||
if (isNaN(chr2)) {
|
||||
enc3 = enc4 = 64;
|
||||
} else if (isNaN(chr3)) {
|
||||
enc4 = 64;
|
||||
}
|
||||
|
||||
output = output +
|
||||
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
|
||||
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
|
||||
|
||||
}
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
encode_arr : function (input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = Base64._utf8_encode_arr(input);
|
||||
|
||||
while (i < input.length) {
|
||||
|
||||
chr1 = input[i++];
|
||||
chr2 = input[i++];
|
||||
chr3 = input[i++];
|
||||
|
||||
enc1 = chr1 >> 2;
|
||||
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
||||
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
||||
enc4 = chr3 & 63;
|
||||
|
||||
if (isNaN(chr2)) {
|
||||
enc3 = enc4 = 64;
|
||||
} else if (isNaN(chr3)) {
|
||||
enc4 = 64;
|
||||
}
|
||||
|
||||
output = output +
|
||||
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
|
||||
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
|
||||
|
||||
}
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
// public method for decoding
|
||||
decode : function (input) {
|
||||
var output = "";
|
||||
var chr1, chr2, chr3;
|
||||
var enc1, enc2, enc3, enc4;
|
||||
var i = 0;
|
||||
|
||||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
||||
|
||||
while (i < input.length) {
|
||||
|
||||
enc1 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc2 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc3 = this._keyStr.indexOf(input.charAt(i++));
|
||||
enc4 = this._keyStr.indexOf(input.charAt(i++));
|
||||
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
chr3 = ((enc3 & 3) << 6) | enc4;
|
||||
|
||||
output = output + String.fromCharCode(chr1);
|
||||
|
||||
if (enc3 != 64) {
|
||||
output = output + String.fromCharCode(chr2);
|
||||
}
|
||||
if (enc4 != 64) {
|
||||
output = output + String.fromCharCode(chr3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
output = Base64._utf8_decode(output);
|
||||
|
||||
return output;
|
||||
|
||||
},
|
||||
|
||||
// private method for UTF-8 encoding
|
||||
_utf8_encode : function (string) {
|
||||
string = string.replace(/\r\n/g,"\n");
|
||||
var utftext = "";
|
||||
|
||||
for (var n = 0; n < string.length; n++) {
|
||||
|
||||
var c = string.charCodeAt(n);
|
||||
|
||||
if (c < 128) {
|
||||
utftext += String.fromCharCode(c);
|
||||
}
|
||||
else if((c > 127) && (c < 2048)) {
|
||||
utftext += String.fromCharCode((c >> 6) | 192);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
else {
|
||||
utftext += String.fromCharCode((c >> 12) | 224);
|
||||
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return utftext;
|
||||
},
|
||||
_utf8_encode_arr : function (string) {
|
||||
//string = string.replace(/\r\n/g,"\n");
|
||||
var utftext = "";
|
||||
|
||||
for (var n = 0; n < string.length; n++) {
|
||||
|
||||
var c = string[n];
|
||||
|
||||
if (c < 128) {
|
||||
utftext += String.fromCharCode(c);
|
||||
}
|
||||
else if((c > 127) && (c < 2048)) {
|
||||
utftext += String.fromCharCode((c >> 6) | 192);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
else {
|
||||
utftext += String.fromCharCode((c >> 12) | 224);
|
||||
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
||||
utftext += String.fromCharCode((c & 63) | 128);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return utftext;
|
||||
},
|
||||
|
||||
// private method for UTF-8 decoding
|
||||
_utf8_decode : function (utftext) {
|
||||
var string = "";
|
||||
var i = 0;
|
||||
var c = c1 = c2 = 0;
|
||||
|
||||
while ( i < utftext.length ) {
|
||||
|
||||
c = utftext.charCodeAt(i);
|
||||
|
||||
if (c < 128) {
|
||||
string += String.fromCharCode(c);
|
||||
i++;
|
||||
}
|
||||
else if((c > 191) && (c < 224)) {
|
||||
c2 = utftext.charCodeAt(i+1);
|
||||
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
||||
i += 2;
|
||||
}
|
||||
else {
|
||||
c2 = utftext.charCodeAt(i+1);
|
||||
c3 = utftext.charCodeAt(i+2);
|
||||
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
||||
i += 3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
initEditor(docKey, vkey(docKey));
|
||||
Reference in New Issue
Block a user