Build pdf editor

This commit is contained in:
Julia Radzhabova
2023-08-29 00:19:02 +03:00
parent 8507447149
commit 585dc9c93d
8 changed files with 1173 additions and 13 deletions

View File

@ -152,11 +152,11 @@ require([
'ViewTab',
'Search',
'Print',
'Common.Controllers.Fonts'
,'Common.Controllers.Chat'
,'Common.Controllers.Comments'
,'Common.Controllers.Draw'
,'Common.Controllers.Plugins'
'Common.Controllers.Fonts',
'Common.Controllers.Chat',
'Common.Controllers.Comments',
'Common.Controllers.Draw',
'Common.Controllers.Plugins'
]
});
@ -181,11 +181,11 @@ require([
'pdfeditor/main/app/view/FileMenuPanels',
'common/main/lib/util/utils',
'common/main/lib/controller/Fonts',
,'common/main/lib/controller/Comments'
,'common/main/lib/controller/Chat'
'common/main/lib/controller/Comments',
'common/main/lib/controller/Chat',
/** coauthoring end **/
,'common/main/lib/controller/Plugins'
,'common/main/lib/controller/Draw'
'common/main/lib/controller/Plugins',
'common/main/lib/controller/Draw'
], function() {
app.start();
});

View File

@ -172,7 +172,7 @@ require([
'pdfeditor/main/app/view/FileMenuPanels',
'common/main/lib/util/utils',
'common/main/lib/controller/Fonts',
,'common/main/lib/controller/Comments'
'common/main/lib/controller/Comments'
,'common/main/lib/controller/Chat'
,'common/main/lib/controller/Plugins'
,'common/main/lib/controller/Draw'

View File

@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
<title>ONLYOFFICE PDF</title>
<title>ONLYOFFICE PDF 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="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
@ -148,7 +148,7 @@
background: #fff;
background: var(--skeleton-canvas-content-background, #fff);
width: 794px;
margin: 46px auto;
margin: 19px auto 46px;
height: 100%;
border: 1px solid #bbbec2;
border: var(--scaled-one-px-value, 1px) solid var(--skeleton-canvas-page-border, #bbbec2);

View File

@ -0,0 +1,327 @@
<!DOCTYPE html>
<html>
<head>
<title>ONLYOFFICE PDF 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">
.content-theme-dark {
--skeleton-canvas-content-background: #3a3a3a;
--skeleton-canvas-page-border: #2a2a2a;
--skeleton-canvas-line: rgba(255,255,255,.05);
}
.loadmask {
left: 0;
top: 0;
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
border: none;
background: #e2e2e2;
background: var(--canvas-background, #e2e2e2);
z-index: 1002;
}
.loadmask > .brendpanel {
width: 100%;
min-height: 28px;
background: #AA5252;
background: var(--toolbar-header-pdf, #AA5252);
}
.loadmask > .brendpanel > div {
display: flex;
align-items: center;
height: 28px;
}
.loadmask > .brendpanel .spacer {
margin-left: auto;
}
.loadmask > .brendpanel .loading-logo {
padding: 0 24px 0 12px;
max-width: 200px;
height: 20px;
}
.loadmask > .brendpanel .loading-logo > img {
display: inline-block;
max-width: 100px;
max-height: 20px;
opacity: 0;
}
.loadmask > .brendpanel .rect {
vertical-align: middle;
width: 50px;
height: 12px;
border-radius: 3px;
margin: 0 10px;
background: rgba(255,255,255,.2);
background: var(--highlight-header-button-hover, rgba(255,255,255,.2));
}
.loadmask > .brendpanel .circle {
vertical-align: middle;
width: 20px;
height: 20px;
border-radius: 20px;
margin: 0 10px;
background: rgba(255,255,255,.2);
background: var(--highlight-header-button-hover, rgba(255,255,255,.2));
}
.loadmask > .sktoolbar {
background: #f1f1f1;
background: var(--background-toolbar, #f1f1f1);
border-bottom: 1px solid #cbcbcb;
border-bottom: var(--scaled-one-px-value, 1px) solid var(--border-toolbar, #cbcbcb);
height: 46px;
padding: 10px 6px;
box-sizing: content-box;
}
.loadmask > .sktoolbar ul {
margin: 0;
padding: 0;
white-space: nowrap;
position: relative;
}
.loadmask > .sktoolbar li {
background: #d8dadc;
background: var(--highlight-button-hover, #d8dadc);
border-radius: 3px;
width: 20px;
height: 20px;
display: inline-block;
margin-right: 6px;
}
.loadmask > .sktoolbar li.space {
background: none;
width: 0;
}
.loadmask > .sktoolbar li.fat {
position: absolute;
right: 0;
top: 0;
bottom: 0;
left: 587px;
width: inherit;
height: 44px;
}
.loadmask > .placeholder {
background: #fff;
background: var(--skeleton-canvas-content-background, var(--canvas-content-background, #fff));
width: 794px;
margin: 19px auto 46px;
height: 100%;
border: 1px solid #bbbec2;
border: var(--scaled-one-px-value, 1px) solid var(--skeleton-canvas-page-border, var(--canvas-page-border, #bbbec2));
padding-top: 50px;
}
.loadmask > .placeholder > .line {
height: 15px;
margin: 30px 80px;
background: rgba(0,0,0,.05);
background: var(--skeleton-canvas-line, rgba(0,0,0,.05));
overflow: hidden;
position: relative;
-webkit-animation: flickerAnimation 2s infinite ease-in-out;
-moz-animation: flickerAnimation 2s infinite ease-in-out;
-o-animation: flickerAnimation 2s infinite ease-in-out;
animation: flickerAnimation 2s infinite ease-in-out;
}
@keyframes flickerAnimation {
0% { opacity:0.5; }
50% { opacity:1; }
100% { opacity:0.5; }
}
@-o-keyframes flickerAnimation{
0% { opacity:0.5; }
50% { opacity:1; }
100% { opacity:0.5; }
}
@-moz-keyframes flickerAnimation{
0% { opacity:0.5; }
50% { opacity:1; }
100% { opacity:0.5; }
}
@-webkit-keyframes flickerAnimation{
0% { opacity:0.5; }
50% { opacity:1; }
100% { opacity:0.5; }
}
</style>
<script>
// don't add zoom for mobile devices
// if (!(/android|avantgo|playbook|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera)))
// document.getElementsByTagName('html')[0].setAttribute('style', 'zoom: ' + 1 / (window.devicePixelRatio < 2 ? window.devicePixelRatio : window.devicePixelRatio / 2) + ';');
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, PDF 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('html')[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, '&quot;')
.replace(/'/g, '&#39;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
var params = getUrlParams(),
lang = (params["lang"] || 'en').split(/[\-\_]/)[0],
logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null,
logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null;
window.frameEditorId = params["frameEditorId"];
window.parentOrigin = params["parentOrigin"];
</script>
<link rel="stylesheet" type="text/css" href="../../../apps/pdfeditor/main/resources/css/app.css">
<script src="../../../../../apps/common/main/lib/util/desktopinit.js?__inline=true"></script>
<script src="../../../../../apps/common/main/lib/util/themeinit.js?__inline=true"></script>
</head>
<body>
<script src="../../../../../apps/common/main/lib/util/htmlutils.js?__inline=true"></script>
<div id="loading-mask" class="loadmask"><div class="brendpanel" style="display: none;"><div><div class="loading-logo"><img src="../../../apps/common/main/resources/img/header/header-logo_s.svg"></div><div class="spacer"></div><div class="circle"></div></div><div><span class="rect"></span><span class="rect"></span><span class="rect"></span><span class="rect"></span><span class="rect"></span><span class="rect"></span></div></div><div class="sktoolbar" style="display: none;"><ul><li class="compact" style="width: 30px;display: none;"></li><li class="compact space" style="display: none;"></li><li class="compact" style="width: 90px;display: none;"></li><li class="not-compact" style="width: 63px;"></li><li class="space"></li><li style="width: 212px;"></li><li class="space"></li><li style="width: 200px;"></li><li class="space"></li><li style="width: 63px;"></li><li class="fat"></li></ul><ul><li class="compact" style="width: 30px;display: none;"></li><li class="compact space" style="display: none;"></li><li class="compact" style="width: 90px;display: none;"></li><li class="not-compact" style="width: 63px;"></li><li class="space"></li><li style="width: 212px;"></li><li class="space"></li><li style="width: 200px;"></li><li class="space"></li><li style="width: 63px;"></li></ul></div><div class="placeholder" style="display: none;"><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div></div></div>
<div id="viewport"></div>
<script>
if ( window.desktop ) {
var logo = document.getElementsByClassName('loading-logo');
if ( !!logo && logo.length ) {
logo[0].setAttribute('style','display:none;');
}
}
var params = getUrlParams(),
notoolbar = params["toolbar"] == 'false',
compact = params["compact"] == 'true',
view = params["mode"] == 'view',
visible = true;
(compact || view || notoolbar) && document.querySelector('.brendpanel > :nth-child(2)').remove();
if (compact || view) {
if (notoolbar) {
document.querySelector('.brendpanel > :nth-child(1)').remove();
visible = false;
} else
document.querySelector('.brendpanel > :nth-child(1)').style.height = '32px';
} else if (notoolbar) {
document.querySelector('.brendpanel > :nth-child(1)').style.height = '28px';
}
if (compact) {
document.querySelectorAll('.not-compact').forEach(function(item){
item.remove();
});
document.querySelectorAll('.compact').forEach(function(item){
item.style.display = 'inline-block';
});
document.querySelector('.fat').style.left = '655px';
}
visible && (document.querySelector('.brendpanel').style.display = 'block');
!(view && (params["toolbar"] !== 'true') || notoolbar) && (document.querySelector('.sktoolbar').style.display = 'block');
view && (document.querySelector('.placeholder').style.marginTop = '19px');
document.querySelector('.placeholder').style.display = 'block';
if (stopLoading) {
document.body.removeChild(document.getElementById('loading-mask'));
} else {
var elem = document.querySelector('.loading-logo img');
if (elem) {
(logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark);
elem.style.opacity = 1;
}
}
</script>
<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 if ( lang == 'tr') reqerr = 'Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.';
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="../../common/main/resources/img/header/icons.svg" />
<div class="inlined-svg"></div>
<script src="../../../../../../sdkjs/common/device_scale.js?__inline=true"></script>
<script data-main="app" src="../../../vendor/requirejs/require.js"></script>
</body>
</html>

View File

@ -0,0 +1,306 @@
<!doctype html>
<html>
<head>
<title>ONLYOFFICE PDF 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="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="icon" href="resources/img/favicon.ico" type="image/x-icon">
<!-- splash -->
<style type="text/css">
.theme-dark {
--romb-start-color: #555;
}
.loadmask {
left: 0;
top: 0;
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
border: none;
background-color: #f4f4f4;
z-index: 1002;
}
.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: Arial, Helvetica, "Helvetica Neue", sans-serif;
line-height: 20px;
}
.loader-page-text-loading {
font-size: 14px;
}
.loader-page-text-customer {
font-size: 16px;
margin-bottom: 5px;
}
.theme-dark .loadmask {
background-color: #555;
}
.theme-dark .loader-page-text {
color: rgba(255, 255, 255, 0.8);
}
.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; background: var(--romb-start-color,#f4f4f4); top:120px; }
15% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); top:120px; }
15% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); opacity:1; }
15% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); opacity:1; }
20% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); 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; background: var(--romb-start-color,#f4f4f4); opacity:1; }
15% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); opacity:1; }
20% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); 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; background: var(--romb-start-color,#f4f4f4); top:100px; opacity:1; }
15% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:1; }
20% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:0; }
25% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); top:100px; opacity:1; }
15% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:1; }
20% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:0; }
25% { background: #fff; 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, PDF 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, '&quot;')
.replace(/'/g, '&#39;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
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"];
window.parentOrigin = params["parentOrigin"];
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>
<script src="../../common/main/lib/util/themeinit.js"></script>
<!-- debug begin -->
<link rel="stylesheet/less" type="text/css" href="resources/less/app.less" />
<!-- debug end -->
</head>
<body>
<script src="../../common/main/lib/util/htmlutils.js"></script>
<div id="viewport"></div>
<script src="../../../vendor/svg-injector/svg-injector.min.js"></script>
<img class="inline-svg" src="../../common/main/resources/img/header/icons.svg">
<div class="inlined-svg"></div>
<script>
var svgpoints = document.querySelectorAll('img.inline-svg');
SVGInjector(svgpoints);
</script>
<!-- debug begin -->
<script type="text/javascript">var less=less||{};less.env='development';</script>
<script src="../../../vendor/less/dist/less.js" type="text/javascript"></script>
<!-- debug end -->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../vendor/xregexp/xregexp-all-min.js"></script>
<script type="text/javascript" src="../../../../sdkjs/develop/sdkjs/word/scripts.js"></script>
<script>
window.sdk_scripts.forEach(function(item){
document.write('<script type="text/javascript" src="' + item + '"><\/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 if ( lang == 'tr') reqerr = 'Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.';
else reqerr = 'The connection is too slow, some of the components could not be loaded. Please reload the page.';
return reqerr;
};
</script>
<!-- application -->
<script data-main="app_dev" src="../../../vendor/requirejs/require.js"></script>
</body>
</html>

View File

@ -0,0 +1,327 @@
<!DOCTYPE html>
<html>
<head>
<title>ONLYOFFICE PDF 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">
.theme-dark {
--romb-start-color: #555;
}
.loadmask {
left: 0;
top: 0;
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
border: none;
background-color: #f4f4f4;
z-index: 1002;
}
.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;
}
.theme-dark .loadmask {
background-color: #555;
}
.theme-dark .loader-page-text {
color: rgba(255, 255, 255, 0.8);
}
.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; background: var(--romb-start-color,#f4f4f4); top:120px; }
15% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); top:120px; }
15% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); opacity:1; }
15% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); opacity:1; }
20% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); 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; background: var(--romb-start-color,#f4f4f4); opacity:1; }
15% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); opacity:1; }
20% { background: #f4f4f4; top:0; background: var(--romb-start-color,#f4f4f4); 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; background: var(--romb-start-color,#f4f4f4); top:100px; opacity:1; }
15% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:1; }
20% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:0; }
25% { background: #f4f4f4; background: var(--romb-start-color,#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; background: var(--romb-start-color,#f4f4f4); top:100px; opacity:1; }
15% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:1; }
20% { background: #f4f4f4; background: var(--romb-start-color,#f4f4f4); top:0; opacity:0; }
25% { background: #f4f4f4; background: var(--romb-start-color,#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, PDF 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, '&quot;')
.replace(/'/g, '&#39;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
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"];
window.parentOrigin = params["parentOrigin"];
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/pdfeditor/main/resources/css/app.css">
<script src="../../../../../apps/common/main/lib/util/desktopinit.js?__inline=true"></script>
<script src="../../../../../apps/common/main/lib/util/themeinit.js?__inline=true"></script>
</head>
<body>
<script src="../../../../../apps/common/main/lib/util/htmlutils.js?__inline=true"></script>
<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 if ( lang == 'tr') reqerr = 'Bağlantı çok yavaş, bileşenlerin bazıları yüklenemedi. Lütfen sayfayı yenileyin.';
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="../../common/main/resources/img/header/icons.svg" />
<div id="viewport"></div>
<div class="inlined-svg"></div>
<script data-main="app" src="../../../vendor/requirejs/require.js"></script>
</body>
</html>

View File

@ -788,6 +788,7 @@ module.exports = function(grunt) {
doRegisterInitializeAppTask('documenteditor', 'DocumentEditor', 'documenteditor.json');
doRegisterInitializeAppTask('spreadsheeteditor', 'SpreadsheetEditor', 'spreadsheeteditor.json');
doRegisterInitializeAppTask('presentationeditor', 'PresentationEditor', 'presentationeditor.json');
doRegisterInitializeAppTask('pdfeditor', 'PDFEditor', 'pdfeditor.json');
doRegisterInitializeAppTask('testdocumenteditor', 'TestDocumentEditor', 'testdocumenteditor.json');
doRegisterInitializeAppTask('testpresentationeditor', 'TestPresentationEditor', 'testpresentationeditor.json');
@ -808,12 +809,14 @@ module.exports = function(grunt) {
grunt.registerTask('deploy-documenteditor-component', ['init-build-documenteditor', 'deploy-app']);
grunt.registerTask('deploy-spreadsheeteditor-component', ['init-build-spreadsheeteditor', 'deploy-app']);
grunt.registerTask('deploy-presentationeditor-component', ['init-build-presentationeditor', 'deploy-app']);
grunt.registerTask('deploy-pdfeditor-component', ['init-build-pdfeditor', 'deploy-app']);
// This task is called from the Makefile, don't delete it.
grunt.registerTask('deploy-documents-component', ['deploy-common-component']);
grunt.registerTask('deploy-documenteditor', ['deploy-common-component', 'deploy-documenteditor-component']);
grunt.registerTask('deploy-spreadsheeteditor', ['deploy-common-component', 'deploy-spreadsheeteditor-component']);
grunt.registerTask('deploy-presentationeditor', ['deploy-common-component', 'deploy-presentationeditor-component']);
grunt.registerTask('deploy-pdfeditor', ['deploy-common-component', 'deploy-pdfeditor-component']);
grunt.registerTask('deploy-testdocumenteditor', ['init-build-testdocumenteditor', 'deploy-app']);
grunt.registerTask('deploy-testpresentationeditor', ['init-build-testpresentationeditor', 'deploy-app']);
@ -822,5 +825,6 @@ module.exports = function(grunt) {
grunt.registerTask('default', ['deploy-common-component',
'deploy-documenteditor-component',
'deploy-spreadsheeteditor-component',
'deploy-presentationeditor-component']);
'deploy-presentationeditor-component',
'deploy-pdfeditor-component']);
};

196
build/pdfeditor.json Normal file
View File

@ -0,0 +1,196 @@
{
"name": "pdfeditor",
"version": "4.3.0",
"build": 1152,
"homepage": "http://www.onlyoffice.com",
"private": true,
"main": {
"clean": {
"prebuild": [
"../deploy/web-apps/apps/pdfeditor/main"
],
"postbuild": []
},
"js": {
"requirejs": {
"options": {
"name": "../apps/pdfeditor/main/app.js",
"out": "../deploy/web-apps/apps/pdfeditor/main/app.js",
"baseUrl": "../apps/",
"inlineText": true,
"findNestedDependencies": true,
"preserveLicenseComments": false,
"optimizeAllPluginResources": true,
"paths": {
"jquery": "../vendor/jquery/jquery",
"underscore": "../vendor/underscore/underscore",
"backbone": "../vendor/backbone/backbone",
"text": "../vendor/requirejs-text/text",
"bootstrap": "../vendor/bootstrap/dist/js/bootstrap",
"perfectscrollbar": "common/main/lib/mods/perfect-scrollbar",
"jmousewheel": "../vendor/perfect-scrollbar/src/jquery.mousewheel",
"xregexp": "empty:",
"socketio": "empty:",
"coapisettings": "empty:",
"allfonts": "empty:",
"sdk": "empty:",
"api": "empty:",
"core": "common/main/lib/core/application",
"notification": "common/main/lib/core/NotificationCenter",
"keymaster": "common/main/lib/core/keymaster",
"tip": "common/main/lib/util/Tip",
"analytics": "common/Analytics",
"gateway": "common/Gateway",
"locale": "common/locale",
"irregularstack": "common/IrregularStack"
},
"shim": {
"underscore": {
"exports": "_"
},
"backbone": {
"deps": [
"underscore",
"jquery"
],
"exports": "Backbone"
},
"bootstrap": {
"deps": [
"jquery"
]
},
"perfectscrollbar": {
"deps": [
"jmousewheel"
]
},
"notification": {
"deps": [
"backbone"
]
},
"core": {
"deps": [
"backbone",
"notification"
]
},
"sdk": {
"deps": [
"jquery",
"underscore",
"coapisettings",
"allfonts",
"xregexp",
"socketio"
]
},
"gateway": {
"deps": [
"jquery"
]
},
"analytics": {
"deps": [
"jquery"
]
}
}
}
}
},
"less": {
"files": {
"src": "../apps/pdfeditor/main/resources/less/app.less",
"dest": "../deploy/web-apps/apps/pdfeditor/main/resources/css/app.css"
},
"vars": {
"app-image-const-path": "'../img'",
"common-image-const-path": "'../../../../common/main/resources/img'",
"app-image-path": "'../../../../../deploy/web-apps/apps/pdfeditor/main/resources/img'",
"common-image-path": "'../../../../../deploy/web-apps/apps/pdfeditor/main/resources/img'"
}
},
"imagemin": {
"images-app": [
{
"expand": true,
"cwd": "../apps/pdfeditor/main/resources/img/",
"src": [
"**/*.{png,jpg,gif,ico}",
"!toolbar/*x/**/*"
],
"dest": "../deploy/web-apps/apps/pdfeditor/main/resources/img/"
}
],
"images-common": [
{
"expand": true,
"cwd": "../apps/common/main/resources/img/",
"src": [
"**/*.{png,jpg,gif}",
"!toolbar/*x/**/*"
],
"dest": "../deploy/web-apps/apps/pdfeditor/main/resources/img/"
}
]
},
"jsonmin": {
"files": "../deploy/web-apps/apps/pdfeditor/main/**/*.json"
},
"copy": {
"localization": [
{
"expand": true,
"cwd": "../apps/pdfeditor/main/locale/",
"src": "*",
"dest": "../deploy/web-apps/apps/pdfeditor/main/locale/"
}
],
"help": [
{
"expand": true,
"cwd": "../apps/pdfeditor/main/resources/help/",
"src": [
"**",
"!*_/**",
"!**/src/**"
],
"dest": "../deploy/web-apps/apps/pdfeditor/main/resources/help/"
}
],
"indexhtml": [
{
"expand": true,
"cwd": "../apps/pdfeditor/main",
"src": [
"*.html.deploy"
],
"ext": ".html",
"dest": "../deploy/web-apps/apps/pdfeditor/main"
}
]
},
"svgicons": {
"common": [
{
"expand": true,
"cwd": "../apps/pdfeditor/main/resources/img",
"src": "**/*.svg",
"dest": "../deploy/web-apps/apps/pdfeditor/main/resources/img"
}
],
"clean": [
"../deploy/web-apps/apps/pdfeditor/main/resources/img/**/*.svg",
"!../deploy/web-apps/apps/pdfeditor/main/resources/img/**/*_s.svg"
]
}
},
"tasks": {
"deploy": [
"increment-build",
"deploy-app-main"
]
}
}