');
+ }
+
+ function getTools(name) {
+ return $btnTools.parent().find(name);
+ }
+
+ return {
+ create: createView
+ , tools: {
+ get: getTools
+ },
+
+ txtDownload: 'Download',
+ txtPrint: 'Print',
+ txtShare: 'Share',
+ txtEmbed: 'Embed',
+ txtFullScreen: 'Full Screen',
+ txtFileLocation: 'Open file location',
+ txtSearch: 'Search'
+ }
+})();
diff --git a/apps/visioeditor/embed/js/application.js b/apps/visioeditor/embed/js/application.js
new file mode 100644
index 0000000000..fe18b84c4a
--- /dev/null
+++ b/apps/visioeditor/embed/js/application.js
@@ -0,0 +1,37 @@
+/*
+ * (c) Copyright Ascensio System SIA 2010-2024
+ *
+ * This program is a free software product. You can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License (AGPL)
+ * version 3 as published by the Free Software Foundation. In accordance with
+ * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
+ * that Ascensio System SIA expressly excludes the warranty of non-infringement
+ * of any third-party rights.
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
+ * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
+ *
+ * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
+ * street, Riga, Latvia, EU, LV-1050.
+ *
+ * The interactive user interfaces in modified source and object code versions
+ * of the Program must display Appropriate Legal Notices, as required under
+ * Section 5 of the GNU AGPL version 3.
+ *
+ * Pursuant to Section 7(b) of the License you must retain the original Product
+ * logo when distributing the program. Pursuant to Section 7(e) we decline to
+ * grant you any rights under trademark law for use of our trademarks.
+ *
+ * All the Product's GUI elements, including illustrations and icon sets, as
+ * well as technical writing content are licensed under the terms of the
+ * Creative Commons Attribution-ShareAlike 4.0 International. See the License
+ * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
+ *
+ */
+(function ($) {
+ Common.Locale.apply(function() {
+ VE.ApplicationView.create();
+ VE.ApplicationController.create();
+ });
+})(window.jQuery);
diff --git a/apps/visioeditor/embed/locale/ar.json b/apps/visioeditor/embed/locale/ar.json
new file mode 100644
index 0000000000..0cc6447cac
--- /dev/null
+++ b/apps/visioeditor/embed/locale/ar.json
@@ -0,0 +1,55 @@
+{
+ "common.view.modals.txtCopy": "نسخ إلى الحافظة",
+ "common.view.modals.txtEmbed": "تضمين",
+ "common.view.modals.txtHeight": "طول",
+ "common.view.modals.txtIncorrectPwd": "كلمة المرور غير صحيحة",
+ "common.view.modals.txtOpenFile": "أدخل كلمة المرور لفتح الملف",
+ "common.view.modals.txtShare": "مشاركة الرابط",
+ "common.view.modals.txtTitleProtected": "ملف محمي",
+ "common.view.modals.txtWidth": "العرض",
+ "common.view.SearchBar.textFind": "بحث",
+ "VE.ApplicationController.convertationErrorText": "فشل التحويل.",
+ "VE.ApplicationController.convertationTimeoutText": "استغرق التحويل وقتا طويلا تم تجاوز المهلة",
+ "VE.ApplicationController.criticalErrorTitle": "خطأ",
+ "VE.ApplicationController.downloadErrorText": "فشل التنزيل",
+ "VE.ApplicationController.downloadTextText": "يتم تحميل المستند",
+ "VE.ApplicationController.errorAccessDeny": "أنت تحاول تنفيذ إجراء ليس لديك صلاحيات تنفيذه. الرجاء الاتصال بمسؤول خادم المستندات.",
+ "VE.ApplicationController.errorDefaultMessage": "رمز الخطأ: 1%",
+ "VE.ApplicationController.errorEditingDownloadas": "حدث خطأ اثناء العمل على المستند. استخدم خيار 'التنزيل كـ' لحفظ نسخة احتياطية من الملف ",
+ "VE.ApplicationController.errorFilePassProtect": "الملف محمي بكلمة مرور ولا يمكن فتحه.",
+ "VE.ApplicationController.errorFileSizeExceed": "يتجاوز حجم الملف الحد المحدد في الخادم. يُرجى الاتصال بمسؤول خادم المستندات.",
+ "VE.ApplicationController.errorForceSave": "حدث خطأ أثناء حفظ الملف. استخدم خيار 'التنزيل كـ'لحفظ نسخة احتياطية من الملف ثم حاول مرة أخرى لاحقا.",
+ "VE.ApplicationController.errorInconsistentExt": "حدث خطأ أثناء فتح الملف. محتوى الملف لا يطابق الامتداد",
+ "VE.ApplicationController.errorInconsistentExtDocx": "حدث خطأ أثناء فتح الملف. محتوى الملف متوافق مع المستندات النصية (docx مثلا),لكن الامتداد الحالي(%1) غير متوافق مع المحتوى",
+ "VE.ApplicationController.errorInconsistentExtPdf": "حدث خطأ أثناء فتح الملف. محتوى الملف متوافق مع أحد الامتدادات التالية:pdf/djvu/xps/oxps,لكن الامتداد الحالي(%1) غير متوافق مع المحتوى",
+ "VE.ApplicationController.errorInconsistentExtPptx": "حدث خطأ أثناء فتح الملف. محتوى الملف متوافق مع العروض التقديمية(pptx مثلا),لكن الامتداد الحالي(%1) غير متوافق مع المحتوى",
+ "VE.ApplicationController.errorInconsistentExtXlsx": "حدث خطأ أثناء فتح الملف. محتوى الملف متوافق مع الجداول الحسابية(xlsx مثلا),لكن الامتداد الحالي(%1) غير متوافق مع المحتوى",
+ "VE.ApplicationController.errorLoadingFont": "لم يتم تحميل الخطوط. الرجاء الاتصال بمسؤول خادم المستندات.",
+ "VE.ApplicationController.errorToken": "لم يتم تكوين رمز امان المستند بشكل صحيح. برجاء التواصل مع مسئولك",
+ "VE.ApplicationController.errorTokenExpire": "انتهت صلاحية رمز الأمان الخاص بالمستند. يُرجى الاتصال بمسؤول خادم المستندات.",
+ "VE.ApplicationController.errorUpdateVersionOnDisconnect": "تم استعادة الاتصال بالإنترنت ، وتم تغيير إصدار الملف. قبل أن تتمكن من متابعة العمل، تحتاج إلى تنزيل الملف أو نسخ محتوياته للتأكد من عدم فقدان أي شيء، ثم إعادة تحميل هذه الصفحة.",
+ "VE.ApplicationController.errorUserDrop": "لا يمكن الوصول إلى الملف حاليا.",
+ "VE.ApplicationController.notcriticalErrorTitle": "تحذير",
+ "VE.ApplicationController.openErrorText": "حدث خطأ أثناء فتح الملف.",
+ "VE.ApplicationController.scriptLoadError": "الاتصال بطيء جدًا ولا يمكن تحميل بعض المكونات. يُرجى إعادة تحميل الصفحة.",
+ "VE.ApplicationController.textAnonymous": "مجهول",
+ "VE.ApplicationController.textGuest": "ضيف",
+ "VE.ApplicationController.textLoadingDocument": "يتم تحميل المستند",
+ "VE.ApplicationController.textOf": "من",
+ "VE.ApplicationController.titleLicenseExp": "الترخيص منتهي الصلاحية",
+ "VE.ApplicationController.titleLicenseNotActive": "الترخيص غير مُفعّل",
+ "VE.ApplicationController.txtClose": "إغلاق",
+ "VE.ApplicationController.unknownErrorText": "خطأ غير محدد.",
+ "VE.ApplicationController.unsupportedBrowserErrorText": "المتصفح المستخدم غير مدعوم.",
+ "VE.ApplicationController.waitText": "يُرجى الانتظار...",
+ "VE.ApplicationController.warnLicenseBefore": "الترخيص غير مُفعّل، يُرجى التواصل مع مسؤول الخادم.",
+ "VE.ApplicationController.warnLicenseExp": "إنتهت صلاحية الترخيص. قم بتحديث الترخيص وبعدها قم بتحديث الصفحة.",
+ "VE.ApplicationController.txtPage": "Page",
+ "VE.ApplicationView.txtDownload": "تنزيل",
+ "VE.ApplicationView.txtEmbed": "تضمين",
+ "VE.ApplicationView.txtFileLocation": "فتح موقع الملف",
+ "VE.ApplicationView.txtFullScreen": "ملء الشاشة",
+ "VE.ApplicationView.txtPrint": "طباعة",
+ "VE.ApplicationView.txtSearch": "إيجاد",
+ "VE.ApplicationView.txtShare": "مشاركة"
+}
\ No newline at end of file
diff --git a/apps/visioeditor/embed/locale/en.json b/apps/visioeditor/embed/locale/en.json
new file mode 100644
index 0000000000..2a19c78b98
--- /dev/null
+++ b/apps/visioeditor/embed/locale/en.json
@@ -0,0 +1,56 @@
+{
+ "common.view.modals.txtCopy": "Copy to clipboard",
+ "common.view.modals.txtEmbed": "Embed",
+ "common.view.modals.txtHeight": "Height",
+ "common.view.modals.txtIncorrectPwd": "Password is incorrect",
+ "common.view.modals.txtOpenFile": "Enter a password to open the file",
+ "common.view.modals.txtShare": "Share link",
+ "common.view.modals.txtTitleProtected": "Protected file",
+ "common.view.modals.txtWidth": "Width",
+ "common.view.SearchBar.textFind": "Find",
+ "VE.ApplicationController.convertationErrorText": "Conversion failed.",
+ "VE.ApplicationController.convertationTimeoutText": "Conversion timeout exceeded.",
+ "VE.ApplicationController.criticalErrorTitle": "Error",
+ "VE.ApplicationController.downloadErrorText": "Download failed.",
+ "VE.ApplicationController.downloadTextText": "Downloading document...",
+ "VE.ApplicationController.errorAccessDeny": "You are trying to perform an action you do not have rights for. Please contact your Document Server administrator.",
+ "VE.ApplicationController.errorDefaultMessage": "Error code: %1",
+ "VE.ApplicationController.errorEditingDownloadas": "An error occurred during the work with the document. Use the 'Download as' option to save the file backup copy to a drive.",
+ "VE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.",
+ "VE.ApplicationController.errorFileSizeExceed": "The file size exceeds the limitation set for your server. Please contact your Document Server administrator for details.",
+ "VE.ApplicationController.errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.",
+ "VE.ApplicationController.errorInconsistentExt": "An error has occurred while opening the file. The file content does not match the file extension.",
+ "VE.ApplicationController.errorInconsistentExtDocx": "An error has occurred while opening the file. The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.",
+ "VE.ApplicationController.errorInconsistentExtPdf": "An error has occurred while opening the file. The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.",
+ "VE.ApplicationController.errorInconsistentExtPptx": "An error has occurred while opening the file. The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.",
+ "VE.ApplicationController.errorInconsistentExtXlsx": "An error has occurred while opening the file. The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.",
+ "VE.ApplicationController.errorLoadingFont": "Fonts are not loaded. Please contact your Document Server administrator.",
+ "VE.ApplicationController.errorToken": "The document security token is not correctly formed. Please contact your Document Server administrator.",
+ "VE.ApplicationController.errorTokenExpire": "The document security token has expired. Please contact your Document Server administrator.",
+ "VE.ApplicationController.errorUpdateVersionOnDisconnect": "Connection has been restored, and the file version has been changed. Before you can continue working, you need to download the file or copy its content to make sure nothing is lost, and then reload this page.",
+ "VE.ApplicationController.errorUserDrop": "The file cannot be accessed right now.",
+ "VE.ApplicationController.notcriticalErrorTitle": "Warning",
+ "VE.ApplicationController.openErrorText": "An error has occurred while opening the file.",
+ "VE.ApplicationController.scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please reload the page.",
+ "VE.ApplicationController.textAnonymous": "Anonymous",
+ "VE.ApplicationController.textGuest": "Guest",
+ "VE.ApplicationController.textLoadingDocument": "Loading document",
+ "VE.ApplicationController.textOf": "of",
+ "VE.ApplicationController.titleLicenseExp": "License expired",
+ "VE.ApplicationController.titleLicenseNotActive": "License not active",
+ "VE.ApplicationController.txtClose": "Close",
+ "VE.ApplicationController.txtPressLink": "Click the link to open it",
+ "VE.ApplicationController.unknownErrorText": "Unknown error.",
+ "VE.ApplicationController.unsupportedBrowserErrorText": "Your browser is not supported.",
+ "VE.ApplicationController.waitText": "Please, wait...",
+ "VE.ApplicationController.warnLicenseBefore": "License not active. Please contact your administrator.",
+ "VE.ApplicationController.warnLicenseExp": "Your license has expired. Please update your license and refresh the page.",
+ "VE.ApplicationController.txtPage": "Page",
+ "VE.ApplicationView.txtDownload": "Download",
+ "VE.ApplicationView.txtEmbed": "Embed",
+ "VE.ApplicationView.txtFileLocation": "Open file location",
+ "VE.ApplicationView.txtFullScreen": "Full screen",
+ "VE.ApplicationView.txtPrint": "Print",
+ "VE.ApplicationView.txtSearch": "Find",
+ "VE.ApplicationView.txtShare": "Share"
+}
\ No newline at end of file
diff --git a/apps/visioeditor/embed/resources/less/application.less b/apps/visioeditor/embed/resources/less/application.less
new file mode 100644
index 0000000000..e1810fe233
--- /dev/null
+++ b/apps/visioeditor/embed/resources/less/application.less
@@ -0,0 +1,146 @@
+// Bootstrap core variables and mixins
+@import "../../../../common/embed/resources/less/common.less";
+
+.viewer {
+ display: flex;
+ flex-direction: column;
+
+ .sdk-view {
+ position: relative;
+ flex-grow: 1;
+ }
+
+ .pages-list-container {
+ display: flex;
+ border-top: 1px solid #cacaca;
+ background-color: #f7f7f7;
+
+ .pages-list-buttons {
+ display: flex;
+ padding: 1px 12px;
+ height: 24px;
+ position: fixed;
+ background: #f7f7f7;
+ border-right: 1px solid #c0c0cd;
+ }
+ &.rtl-sheet .pages-list-buttons {
+ border-left: 1px solid #c0c0cd;
+ }
+
+ @media screen and (min--moz-device-pixel-ratio:0) {
+ scrollbar-color: #e8e8e8 #eeeeee;
+ scrollbar-width: thin;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ height: 14px;
+ border: #c0c0c0 1px solid;
+ background-color: #e8e8e8;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13px' stroke ='rgb(173,173,173)' height='5px'>");
+ }
+
+ &:horizontal:increment:hover, &:horizontal:increment:active {
+ background-image: url("data:image/svg+xml;utf8,");
+ }
+
+ &:horizontal:decrement {
+ background-image: url("data:image/svg+xml;utf8,");
+ }
+
+ &:horizontal:decrement:hover, &:horizontal:decrement:active {
+ background-image: url("data:image/svg+xml;utf8,");
+ }
+ }
+
+ ul.pages-list {
+ background-color: #F7F7F7;
+ display: flex;
+ padding: 0;
+ margin: 0;
+ white-space: nowrap;
+ margin-left: 68px;
+
+ li {
+ display: inline-block;
+ border-radius: 0;
+ padding: 0 10px 0;
+ line-height: 24px;
+ margin-right: -1px;
+ margin-left: 0;
+ border-right: 1px solid #cacaca;
+ border-left: 1px solid #cacaca;
+ color: rgba(0, 0, 0, 0.8);
+ font-size: 11px;
+ cursor: pointer;
+ letter-spacing: 0.01em;
+ text-align: center;
+
+ &.active {
+ box-shadow: inset 0 4px 0 #444796;
+ background-color: #ffffff;
+ color: #000;
+ font-weight: bold;
+ }
+
+ &::after {
+ content: attr(tabtitle);
+ font-weight: bold;
+ display: block;
+ height: 0;
+ color: transparent;
+ }
+ }
+ }
+ &.rtl-sheet ul.pages-list {
+ margin-right: 68px;
+ margin-left: 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/visioeditor/main/app/view/Statusbar.js b/apps/visioeditor/main/app/view/Statusbar.js
index eb8f391513..b84f0e8fe0 100644
--- a/apps/visioeditor/main/app/view/Statusbar.js
+++ b/apps/visioeditor/main/app/view/Statusbar.js
@@ -508,9 +508,9 @@ define([
tipZoomFactor : 'Magnification',
txtPage : 'Page',
sheetIndexText : 'Page {0} of {1}',
- tipPrev : 'Previous Page',
- tipNext : 'Next Page',
- tipListOfSheets : 'List of Page',
+ tipPrev : 'Previous page',
+ tipNext : 'Next page',
+ tipListOfSheets : 'List of pages'
}, VE.Views.Statusbar || {}));
}
diff --git a/apps/visioeditor/main/locale/en.json b/apps/visioeditor/main/locale/en.json
index 44f3ecf99e..fc358b9124 100644
--- a/apps/visioeditor/main/locale/en.json
+++ b/apps/visioeditor/main/locale/en.json
@@ -397,6 +397,11 @@
"VE.Views.Statusbar.tipZoomFactor": "Zoom",
"VE.Views.Statusbar.tipZoomIn": "Zoom in",
"VE.Views.Statusbar.tipZoomOut": "Zoom out",
+ "VE.Views.Statusbar.txtPage": "Page",
+ "VE.Views.Statusbar.sheetIndexText": "Page {0} of {1}",
+ "VE.Views.Statusbar.tipPrev": "Previous page",
+ "VE.Views.Statusbar.tipNext": "Next page",
+ "VE.Views.Statusbar.tipListOfSheets": "List of pages",
"VE.Views.Toolbar.textTabFile": "File",
"VE.Views.Toolbar.textTabView": "View",
"VE.Views.ViewTab.textAlwaysShowToolbar": "Always Show Toolbar",
diff --git a/build/visioeditor.json b/build/visioeditor.json
index 08bf6e3672..e6eef877e2 100644
--- a/build/visioeditor.json
+++ b/build/visioeditor.json
@@ -315,11 +315,76 @@
]
}
},
+ "embed": {
+ "clean": {
+ "prebuild": [
+ "../deploy/web-apps/apps/visioeditor/embed"
+ ],
+ "postbuild": [
+ "../deploy/web-apps/apps/visioeditor/embed/resources/img"
+ ]
+ },
+ "js": {
+ "src": [
+ "../apps/common/locale.js",
+ "../apps/common/Gateway.js",
+ "../apps/common/Analytics.js",
+ "../apps/common/main/lib/mods/dropdown.js",
+ "../apps/common/main/lib/mods/modal.js",
+ "../apps/common/main/lib/mods/tooltip.js",
+ "../apps/common/embed/lib/util/LocalStorage.js",
+ "../apps/common/embed/lib/util/utils.js",
+ "../apps/common/embed/lib/view/LoadMask.js",
+ "../apps/common/embed/lib/view/modals.js",
+ "../apps/common/embed/lib/controller/modals.js",
+ "../apps/visioeditor/embed/js/ApplicationView.js",
+ "../apps/visioeditor/embed/js/ApplicationController.js",
+ "../apps/visioeditor/embed/js/application.js"
+ ],
+ "dist": "../deploy/web-apps/apps/visioeditor/embed/app-all.js"
+ },
+ "less": {
+ "files": {
+ "src": "../apps/visioeditor/embed/resources/less/application.less",
+ "dist": "../deploy/web-apps/apps/visioeditor/embed/resources/css/app-all.css"
+ }
+ },
+ "copy": {
+ "localization": [
+ {
+ "expand": true,
+ "cwd": "../apps/visioeditor/embed/locale/",
+ "src": "*",
+ "dest": "../deploy/web-apps/apps/visioeditor/embed/locale/"
+ }
+ ],
+ "indexhtml": [
+ {
+ "expand": true,
+ "cwd": "../apps/visioeditor/embed",
+ "src": [
+ "*.html.deploy"
+ ],
+ "ext": ".html",
+ "dest": "../deploy/web-apps/apps/visioeditor/embed"
+ }
+ ],
+ "images-app": [
+ {
+ "expand": true,
+ "cwd": "../apps/common/embed/resources/img/",
+ "src": "**",
+ "dest": "../deploy/web-apps/apps/visioeditor/embed/resources/img/"
+ }
+ ]
+ }
+ },
"tasks": {
"deploy": [
"increment-build",
"deploy-app-main",
- "deploy-app-mobile"
+ "deploy-app-mobile",
+ "deploy-app-embed"
]
}
}
\ No newline at end of file