Merge branch 'staging' into sfAllow
@ -0,0 +1 @@
|
||||
module.exports = require("../www/common/common-signing-keys");
|
@ -0,0 +1,89 @@
|
||||
(function () {
|
||||
var factory = function () {
|
||||
var Keys = {};
|
||||
|
||||
/* Parse the new format of "Signing Public Keys".
|
||||
If anything about the input is found to be invalid, return;
|
||||
this will fall back to the old parsing method
|
||||
|
||||
|
||||
*/
|
||||
var parseNewUser = function (userString) {
|
||||
if (!/^\[.*?@.*\]$/.test(userString)) { return; }
|
||||
var temp = userString.slice(1, -1);
|
||||
var domain, username, pubkey;
|
||||
|
||||
temp = temp
|
||||
.replace(/\/([a-zA-Z0-9+-]{43}=)$/, function (all, k) {
|
||||
pubkey = k.replace(/-/g, '/');
|
||||
return '';
|
||||
});
|
||||
if (!pubkey) { return; }
|
||||
|
||||
var index = temp.lastIndexOf('@');
|
||||
if (index < 1) { return; }
|
||||
|
||||
domain = temp.slice(index + 1);
|
||||
username = temp.slice(0, index);
|
||||
|
||||
return {
|
||||
domain: domain,
|
||||
user: username,
|
||||
pubkey: pubkey
|
||||
};
|
||||
};
|
||||
|
||||
var isValidUser = function (parsed) {
|
||||
if (!parsed) { return; }
|
||||
if (!(parsed.domain && parsed.user && parsed.pubkey)) { return; }
|
||||
return true;
|
||||
};
|
||||
|
||||
Keys.parseUser = function (user) {
|
||||
var parsed = parseNewUser(user);
|
||||
if (isValidUser(parsed)) { return parsed; }
|
||||
|
||||
var domain, username, pubkey;
|
||||
user.replace(/^https*:\/\/([^\/]+)\/user\/#\/1\/([^\/]+)\/([a-zA-Z0-9+-]{43}=)$/,
|
||||
function (a, d, u, k) {
|
||||
domain = d;
|
||||
username = u;
|
||||
pubkey = k.replace(/-/g, '/');
|
||||
return '';
|
||||
});
|
||||
if (!domain) { throw new Error("Could not parse user id [" + user + "]"); }
|
||||
return {
|
||||
domain: domain,
|
||||
user: username,
|
||||
pubkey: pubkey
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
0. usernames may contain spaces or many other wacky characters, so enclose the whole thing in square braces so we know its boundaries. If the formatted string does not include these we know it is either a _v1 public key string_ or _an incomplete string_. Start parsing by removing them.
|
||||
1. public keys should have a fixed length, so slice them off of the end of the string.
|
||||
2. domains cannot include `@`, so find the last occurence of it in the signing key and slice everything thereafter.
|
||||
3. the username is everything before the `@`.
|
||||
|
||||
*/
|
||||
Keys.serialize = function (origin, username, pubkey) {
|
||||
return '[' +
|
||||
username +
|
||||
'@' +
|
||||
origin.replace(/https*:\/\//, '') +
|
||||
'/' +
|
||||
pubkey.replace(/\//g, '-') +
|
||||
']';
|
||||
// return origin + '/user/#/1/' + username + '/' + pubkey.replace(/\//g, '-');
|
||||
};
|
||||
|
||||
return Keys;
|
||||
};
|
||||
|
||||
if (typeof(module) !== 'undefined' && module.exports) {
|
||||
module.exports = factory();
|
||||
} else if ((typeof(define) !== 'undefined' && define !== null) && (define.amd !== null)) {
|
||||
define([], factory);
|
||||
}
|
||||
}());
|
After Width: | Height: | Size: 207 B |
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 207 B |
After Width: | Height: | Size: 304 B |
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 672 B |
After Width: | Height: | Size: 358 B |
After Width: | Height: | Size: 650 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 432 B |
After Width: | Height: | Size: 231 B |
After Width: | Height: | Size: 364 B |
After Width: | Height: | Size: 115 B |
After Width: | Height: | Size: 170 B |
After Width: | Height: | Size: 111 B |
After Width: | Height: | Size: 158 B |
After Width: | Height: | Size: 193 B |
After Width: | Height: | Size: 345 B |
After Width: | Height: | Size: 174 B |
After Width: | Height: | Size: 306 B |
After Width: | Height: | Size: 314 B |
After Width: | Height: | Size: 584 B |
After Width: | Height: | Size: 261 B |
After Width: | Height: | Size: 519 B |
After Width: | Height: | Size: 133 B |
After Width: | Height: | Size: 186 B |
After Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 166 B |
After Width: | Height: | Size: 154 B |
After Width: | Height: | Size: 220 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 203 B |
@ -0,0 +1,322 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ONLYOFFICE Document Editor</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=IE8"/>
|
||||
<meta name="description" content="" />
|
||||
<meta name="keywords" content="" />
|
||||
<link rel="icon" href="resources/img/favicon.ico" type="image/x-icon" />
|
||||
|
||||
<!-- splash -->
|
||||
|
||||
<style type="text/css">
|
||||
.loadmask {
|
||||
left: 0;
|
||||
top: 0;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
border: none;
|
||||
background-color: #f4f4f4;
|
||||
z-index: 1001;
|
||||
}
|
||||
|
||||
.loader-page {
|
||||
width: 100%;
|
||||
height: 170px;
|
||||
bottom: 42%;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
line-height: 10px;
|
||||
}
|
||||
|
||||
.loader-logo {
|
||||
max-height: 160px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.loader-page-romb {
|
||||
width: 40px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.loader-page-text {
|
||||
width: 100%;
|
||||
bottom: 42%;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
color: #888;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.loader-page-text-loading {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.loader-page-text-customer {
|
||||
font-size: 16px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.romb {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
-webkit-transform: rotate(135deg) skew(20deg, 20deg);
|
||||
-moz-transform: rotate(135deg) skew(20deg, 20deg);
|
||||
-ms-transform: rotate(135deg) skew(20deg, 20deg);
|
||||
-o-transform: rotate(135deg) skew(20deg, 20deg);
|
||||
position: absolute;
|
||||
background: red;
|
||||
border-radius: 6px;
|
||||
-webkit-animation: movedown 3s infinite ease;
|
||||
-moz-animation: movedown 3s infinite ease;
|
||||
-ms-animation: movedown 3s infinite ease;
|
||||
-o-animation: movedown 3s infinite ease;
|
||||
animation: movedown 3s infinite ease;
|
||||
}
|
||||
|
||||
#blue {
|
||||
z-index: 3;
|
||||
background: #55bce6;
|
||||
-webkit-animation-name: blue;
|
||||
-moz-animation-name: blue;
|
||||
-ms-animation-name: blue;
|
||||
-o-animation-name: blue;
|
||||
animation-name: blue;
|
||||
}
|
||||
|
||||
#red {
|
||||
z-index:1;
|
||||
background: #de7a59;
|
||||
-webkit-animation-name: red;
|
||||
-moz-animation-name: red;
|
||||
-ms-animation-name: red;
|
||||
-o-animation-name: red;
|
||||
animation-name: red;
|
||||
}
|
||||
|
||||
#green {
|
||||
z-index: 2;
|
||||
background: #a1cb5c;
|
||||
-webkit-animation-name: green;
|
||||
-moz-animation-name: green;
|
||||
-ms-animation-name: green;
|
||||
-o-animation-name: green;
|
||||
animation-name: green;
|
||||
}
|
||||
|
||||
@-webkit-keyframes red {
|
||||
0% { top:120px; background: #de7a59; }
|
||||
10% { top:120px; background: #F2CBBF; }
|
||||
14% { background: #f4f4f4; top:120px; }
|
||||
15% { background: #f4f4f4; top:0;}
|
||||
20% { background: #E6E4E4; }
|
||||
30% { background: #D2D2D2; }
|
||||
40% { top:120px; }
|
||||
100% { top:120px; background: #de7a59; }
|
||||
}
|
||||
|
||||
@keyframes red {
|
||||
0% { top:120px; background: #de7a59; }
|
||||
10% { top:120px; background: #F2CBBF; }
|
||||
14% { background: #f4f4f4; top:120px; }
|
||||
15% { background: #f4f4f4; top:0; }
|
||||
20% { background: #E6E4E4; }
|
||||
30% { background: #D2D2D2; }
|
||||
40% { top:120px; }
|
||||
100% { top:120px; background: #de7a59; }
|
||||
}
|
||||
|
||||
@-webkit-keyframes green {
|
||||
0% { top:110px; background: #a1cb5c; opacity:1; }
|
||||
10% { top:110px; background: #CBE0AC; opacity:1; }
|
||||
14% { background: #f4f4f4; top:110px; opacity:1; }
|
||||
15% { background: #f4f4f4; top:0; opacity:1; }
|
||||
20% { background: #f4f4f4; top:0; opacity:0; }
|
||||
25% { background: #EFEFEF; top:0; opacity:1; }
|
||||
30% { background:#E6E4E4; }
|
||||
70% { top:110px; }
|
||||
100% { top:110px; background: #a1cb5c; }
|
||||
}
|
||||
|
||||
@keyframes green {
|
||||
0% { top:110px; background: #a1cb5c; opacity:1; }
|
||||
10% { top:110px; background: #CBE0AC; opacity:1; }
|
||||
14% { background: #f4f4f4; top:110px; opacity:1; }
|
||||
15% { background: #f4f4f4; top:0; opacity:1; }
|
||||
20% { background: #f4f4f4; top:0; opacity:0; }
|
||||
25% { background: #EFEFEF; top:0; opacity:1; }
|
||||
30% { background:#E6E4E4; }
|
||||
70% { top:110px; }
|
||||
100% { top:110px; background: #a1cb5c; }
|
||||
}
|
||||
|
||||
@-webkit-keyframes blue {
|
||||
0% { top:100px; background: #55bce6; opacity:1; }
|
||||
10% { top:100px; background: #BFE8F8; opacity:1; }
|
||||
14% { background: #f4f4f4; top:100px; opacity:1; }
|
||||
15% { background: #f4f4f4; top:0; opacity:1; }
|
||||
20% { background: #f4f4f4; top:0; opacity:0; }
|
||||
25% { background: #f4f4f4; top:0; opacity:0; }
|
||||
45% { background: #EFEFEF; top:0; opacity:0.2; }
|
||||
100% { top:100px; background: #55bce6; }
|
||||
}
|
||||
|
||||
@keyframes blue {
|
||||
0% { top:100px; background: #55bce6; opacity:1; }
|
||||
10% { top:100px; background: #BFE8F8; opacity:1; }
|
||||
14% { background: #f4f4f4; top:100px; opacity:1; }
|
||||
15% { background: #f4f4f4; top:0; opacity:1; }
|
||||
20% { background: #f4f4f4; top:0; opacity:0; }
|
||||
25% { background: #f4f4f4; top:0; opacity:0; }
|
||||
45% { background: #EFEFEF; top:0; opacity:0.2; }
|
||||
100% { top:100px; background: #55bce6; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
var userAgent = navigator.userAgent.toLowerCase(),
|
||||
check = function(regex){ return regex.test(userAgent); },
|
||||
stopLoading = false;
|
||||
if (!check(/opera/) && (check(/msie/) || check(/trident/))) {
|
||||
var m = /msie (\d+\.\d+)/.exec(userAgent);
|
||||
if (m && parseFloat(m[1]) < 10.0) {
|
||||
document.write('<div class="app-error-panel">' +
|
||||
'<div class="message-block">' +
|
||||
'<div class="message-inner">' +
|
||||
'<div class="title">Your browser is not supported.</div>' +
|
||||
'<div class="text">Sorry, Document Editor is currently only supported in the latest versions of the Chrome, Firefox, Safari or Internet Explorer web browsers.</div>' +
|
||||
'</div>' +
|
||||
'</div></div>');
|
||||
stopLoading = true;
|
||||
}
|
||||
} else
|
||||
if (check(/windows\snt/i)) {
|
||||
var re = /chrome\/(\d+)/i.exec(userAgent);
|
||||
if (!!re && !!re[1] && !(re[1] > 49)) {
|
||||
setTimeout(function () {
|
||||
document.getElementsByTagName('body')[0].className += "winxp";
|
||||
},0);
|
||||
}
|
||||
}
|
||||
|
||||
function getUrlParams() {
|
||||
var e,
|
||||
a = /\+/g, // Regex for replacing addition symbol with a space
|
||||
r = /([^&=]+)=?([^&]*)/g,
|
||||
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
|
||||
q = window.location.search.substring(1),
|
||||
urlParams = {};
|
||||
|
||||
while (e = r.exec(q))
|
||||
urlParams[d(e[1])] = d(e[2]);
|
||||
|
||||
return urlParams;
|
||||
}
|
||||
|
||||
function encodeUrlParam(str) {
|
||||
return str.replace(/&/g, '&')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
||||
var params = getUrlParams(),
|
||||
lang = (params["lang"] || 'en').split(/[\-\_]/)[0],
|
||||
customer = params["customer"] ? ('<div class="loader-page-text-customer">' + encodeUrlParam(params["customer"]) + '</div>') : '',
|
||||
margin = (customer !== '') ? 50 : 20,
|
||||
loading = 'Loading...',
|
||||
logo = params["logo"] ? ((params["logo"] !== 'none') ? ('<img src="' + encodeUrlParam(params["logo"]) + '" class="loader-logo" />') : '') : null;
|
||||
|
||||
window.frameEditorId = params["frameEditorId"];
|
||||
|
||||
if ( lang == 'de') loading = 'Ladevorgang...';
|
||||
else if ( lang == 'es') loading = 'Cargando...';
|
||||
else if ( lang == 'fr') loading = 'Chargement en cours...';
|
||||
else if ( lang == 'it') loading = 'Caricamento in corso...';
|
||||
else if ( lang == 'pt') loading = 'Carregando...';
|
||||
else if ( lang == 'ru') loading = 'Загрузка...';
|
||||
else if ( lang == 'sl') loading = 'Nalaganje...';
|
||||
else if ( lang == 'tr') loading = 'Yükleniyor...';
|
||||
else if ( lang == 'bg') loading = 'Зареждане...';
|
||||
else if ( lang == 'cs') loading = 'Nahrávám...';
|
||||
else if ( lang == 'hu') loading = 'Betöltés...';
|
||||
else if ( lang == 'ja') loading = '読み込み中...';
|
||||
else if ( lang == 'ko') loading = '로드 중...';
|
||||
else if ( lang == 'lv') loading = 'Ieladēšana ...';
|
||||
else if ( lang == 'nl') loading = 'Laden...';
|
||||
else if ( lang == 'pl') loading = 'Ładowanie...';
|
||||
else if ( lang == 'sk') loading = 'Nahrávam...';
|
||||
else if ( lang == 'uk') loading = 'Завантаження...';
|
||||
else if ( lang == 'vi') loading = 'Đang tải...';
|
||||
else if ( lang == 'zh') loading = '加载中...';
|
||||
|
||||
if ( !stopLoading )
|
||||
document.write(
|
||||
'<div id="loading-mask" class="loadmask">' +
|
||||
'<div class="loader-page" style="margin-bottom: ' + margin + 'px;' + ((logo!==null) ? 'height: auto;' : '') + '">' +
|
||||
((logo!==null) ? logo :
|
||||
'<div class="loader-page-romb">' +
|
||||
'<div class="romb" id="blue"></div>' +
|
||||
'<div class="romb" id="green"></div>' +
|
||||
'<div class="romb" id="red"></div>' +
|
||||
'</div>') +
|
||||
'</div>' +
|
||||
'<div class="loader-page-text">' + customer +
|
||||
'<div class="loader-page-text-loading">' + loading + '</div>' +
|
||||
'</div>' +
|
||||
'</div>');
|
||||
</script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../apps/documenteditor/main/resources/css/app.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
window.requireTimeourError = function(){
|
||||
var reqerr;
|
||||
|
||||
if ( lang == 'de') reqerr = 'Die Verbindung ist zu langsam, einige Komponenten konnten nicht geladen werden. Aktualisieren Sie bitte die Seite.';
|
||||
else if ( lang == 'es') reqerr = 'La conexión es muy lenta, algunos de los componentes no han podido cargar. Por favor recargue la página.';
|
||||
else if ( lang == 'fr') reqerr = 'La connexion est trop lente, certains des composants n\'ons pas pu être chargé. Veuillez recharger la page.';
|
||||
else if ( lang == 'ru') reqerr = 'Слишком медленное соединение, не удается загрузить некоторые компоненты. Пожалуйста, обновите страницу.';
|
||||
else reqerr = 'The connection is too slow, some of the components could not be loaded. Please reload the page.';
|
||||
|
||||
return reqerr;
|
||||
};
|
||||
|
||||
var requireTimeoutID = setTimeout(function(){
|
||||
window.alert(window.requireTimeourError());
|
||||
window.location.reload();
|
||||
}, 30000);
|
||||
|
||||
var require = {
|
||||
waitSeconds: 30,
|
||||
callback: function(){
|
||||
clearTimeout(requireTimeoutID);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<inline src="resources/img/header/buttons.svg" />
|
||||
<inline src="resources/img/doc-formats/docx.svg" />
|
||||
<inline src="resources/img/doc-formats/dotx.svg" />
|
||||
<inline src="resources/img/doc-formats/pdf.svg" />
|
||||
<inline src="resources/img/doc-formats/pdfa.svg" />
|
||||
<inline src="resources/img/doc-formats/txt.svg" />
|
||||
<inline src="resources/img/doc-formats/odt.svg" />
|
||||
<inline src="resources/img/doc-formats/ott.svg" />
|
||||
<inline src="resources/img/doc-formats/rtf.svg" />
|
||||
<inline src="resources/img/doc-formats/html.svg" />
|
||||
<inline src="resources/img/doc-formats/blank.svg" />
|
||||
<inline src="resources/img/toolbar/shapetypes.svg" />
|
||||
|
||||
<div id="viewport"></div>
|
||||
<script data-main="app" src="../../../vendor/requirejs/require.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 471 B |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 354 B |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 925 B |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 282 B |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 215 B |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 504 B |
After Width: | Height: | Size: 454 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |