Compare commits

...

988 Commits

Author SHA1 Message Date
e1e9ad04a3 python-raw: move to the common module 2023-07-10 18:01:22 +04:00
865d071203 python-raw: rename snake case to camel 2023-07-10 17:49:44 +04:00
db48ff64e5 python-raw: rename user_host to address 2023-07-10 17:44:21 +04:00
89a6b94178 python-raw: add missed django_settings_module, DELETE THIS 2023-07-10 17:38:12 +04:00
5ea6d81155 python-raw: continius the history refactoring 2023-07-10 10:47:48 +04:00
72ea75ec02 python-raw: add Rejuvenation Management 2023-07-07 17:28:00 +04:00
89d6917a58 python-raw: add bootstrap 2023-07-07 15:56:54 +04:00
d0354c88f5 python-raw: add http_method 2023-07-07 14:50:24 +04:00
e0ccbd4f93 python-raw: support direct_url 2023-07-07 13:46:56 +04:00
f8194eb459 python-raw: change the save logic, add new endpoints 2023-07-06 18:09:17 +04:00
01f35c9ee4 python-raw: add local development 2023-07-05 12:03:07 +04:00
360c26f7f5 python-raw: fix typo 2023-07-05 12:02:26 +04:00
c4c621d1f2 python-raw: fix server and proxy 2023-07-04 17:55:36 +04:00
14e4904adb python-raw: fix server 2023-07-04 16:29:53 +04:00
69d74d6e8a python-raw: ignore and pylint 2023-07-04 12:15:17 +04:00
00a172f9f2 python-raw: add django-stubs (duplicate) 2023-06-30 14:20:50 +04:00
7a4610ce83 python-raw: codable todo's 2023-06-30 12:34:45 +04:00
8782430bc6 python-raw: codable typo 2023-06-30 11:46:42 +04:00
be8b83929e python-raw: codable 2023-06-30 11:40:01 +04:00
2658bdc783 python-raw: add receipt 2023-06-28 13:59:24 +04:00
d9c9bd6dc3 python-raw: add docker 2023-06-28 13:59:02 +04:00
561117433c python-raw: add support for proxy for the track endpoint 2023-06-28 13:55:54 +04:00
0c8cb2becf python-raw: add the public and private urls 2023-06-28 13:55:08 +04:00
dce9b7911d python-raw: add proxy manager 2023-06-28 13:54:28 +04:00
ae8b32090f python-raw: delete unnecessary index file 2023-06-28 13:52:32 +04:00
82c378f3c3 python-raw: fix test command 2023-06-28 13:50:57 +04:00
5bcc8c0f16 python-raw: fix server secret 2023-06-28 13:50:35 +04:00
478784fbbd python-raw: add recipes to start the server 2023-06-27 16:22:02 +04:00
fb18fc501d python-raw: simplify server configuration 2023-06-27 16:21:39 +04:00
b5941803ee python-raw: set path for static 2023-06-27 13:40:17 +04:00
50e5b6e0f5 python-raw: replace config 2023-06-27 13:33:45 +04:00
e79dcfbf59 python-raw: continius 2023-06-27 11:58:12 +04:00
58855f0cbe python-raw: add configuration 2023-06-26 18:48:57 +04:00
c159ff68ae python: add help, dev, lint, prod recipes to Makefile 2023-06-26 14:09:48 +04:00
88e0411c56 python: add lint dependencies 2023-06-26 14:08:42 +04:00
13be815042 python: pin python version 2023-06-26 14:07:16 +04:00
ccdf599b45 python: pin dependency versions 2023-06-26 14:06:55 +04:00
75b22614cf refresh licenses 2023-06-21 12:29:59 +05:00
6cb15697ab Merge pull request #388 from ONLYOFFICE/feature/ruby-normalize-dependencies
ruby: pin and add new dependencies
2023-06-21 12:12:22 +05:00
39bab74422 Merge pull request #383 from ONLYOFFICE/feature/formats
Feature/formats
2023-06-19 11:47:19 +05:00
665ab6a77d formats to changelog 2023-06-19 11:47:03 +05:00
5663227c55 update formats repo 2023-06-19 11:45:26 +05:00
42ac89e5e5 Merge pull request #370 from ONLYOFFICE/hotfix/headers-charset-on-upload-convert
java: upload and convert fix
2023-06-19 11:33:09 +05:00
c95499536d ruby: add lint recipe to Makefile 2023-06-14 10:38:35 +04:00
5659756c07 ruby: add install recipe to Makefile 2023-06-14 10:38:35 +04:00
038b3b3049 ruby: add help recipe to Makefile 2023-06-14 10:38:35 +04:00
6b555c4d0d ruby: add sorbet as a type-checker dependency 2023-06-14 10:38:27 +04:00
44d49bed62 ruby: add rubocop as a lint dependency 2023-06-14 10:23:02 +04:00
517b130db6 ruby: pin ruby version 2023-06-09 12:13:40 +04:00
0ff435b9bd ruby: pin dependency versions and add support for the arm64 platform 2023-06-09 12:13:14 +04:00
56bc372140 Merge remote-tracking branch 'remotes/origin/release/v7.4.0' into develop
# Conflicts:
#	web/documentserver-example/nodejs/helpers/docManager.js
2023-06-07 18:57:00 +05:00
0068b6d87d Merge pull request #381 from ONLYOFFICE/feature/getServerHost
Fix get server host function
2023-06-07 18:44:17 +05:00
4679804774 Merge pull request #386 from ONLYOFFICE/hotfix/fix-php-readme
php: composer installation added to readme
2023-06-07 16:30:48 +05:00
d03f74087c php: composer installation added to readme 2023-06-07 16:29:57 +05:00
e3a088ccaf nodejs: fix undefined header 2023-06-07 13:29:45 +05:00
5865fedbe7 java: upload and convert fix 2023-06-05 10:19:58 +03:00
68390aa26c php: lossy-edit to getEditExtensions() 2023-06-02 12:31:41 +03:00
744e5203cb nodejs: lossy-edit to getEditExtensions() 2023-06-02 12:29:44 +03:00
7df7af3f47 nodejs, php: update submodule document-formats 2023-06-02 12:21:00 +03:00
bf40cd1249 Merge branch 'develop' into feature/formats 2023-06-02 11:01:19 +03:00
f3cb5adb22 nodejs: fix (668df46ec3) 2023-06-02 11:00:30 +03:00
c8d44199c2 php: fix lint 2023-06-01 16:21:36 +03:00
12bcc0009b nodejs: disable eslint for import onlyoffice-docs-formats.json 2023-06-01 16:14:12 +03:00
be1ea81f82 Merge branch 'develop' into feature/formats 2023-06-01 15:53:41 +03:00
668df46ec3 nodejs: fix(dd3255779f) 2023-06-01 15:53:07 +03:00
43905695e0 nodejs: fix lint 2023-06-01 14:50:06 +03:00
4a49becea1 php: revert composer.lock 2023-05-31 15:34:42 +03:00
c91d3a24b9 update submodule document-formats 2023-05-31 14:39:48 +03:00
d6a4984b84 Merge pull request #382 from ONLYOFFICE/feature/restore-version
Feature/restore version
2023-05-22 15:45:19 +05:00
f1dae06746 changelog: restore file 2023-05-22 15:44:45 +05:00
3cf3bcf2c8 Merge remote-tracking branch 'remotes/origin/develop' into feature/restore-version 2023-05-22 15:44:11 +05:00
aa6e19ebaa Merge pull request #372 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/nokogiri-1.14.3
build(deps): bump nokogiri from 1.13.9 to 1.14.3 in /web/documentserver-example/ruby
2023-05-22 14:01:04 +05:00
24a26fd530 Correct spelling mistake 2023-05-19 12:57:10 +00:00
a5f91bc14f Fix get server host function 2023-05-19 09:07:38 +00:00
d7034c72c9 Merge pull request #379 from ONLYOFFICE/feature/remove-row-without-reload
nodejs: remove row without reload
2023-05-18 18:12:46 +05:00
c0437b152f remove row to changelog 2023-05-18 18:10:44 +05:00
b72b2c6619 Merge branch 'develop' into feature/remove-row-without-reload
# Conflicts:
#	web/documentserver-example/nodejs/public/javascripts/jscript.js
2023-05-18 13:34:34 +03:00
c516631360 nodejs: fix remove for IE 2023-05-18 13:31:50 +03:00
5cc8d7c094 Merge pull request #380 from ONLYOFFICE/feature/get-history-by-request
nodejs: get history data by request
2023-05-18 11:23:10 +05:00
5f4764060c changelog: history request 2023-05-18 11:22:17 +05:00
44832008a8 nodejs: reload the page if deleted line is the last one 2023-05-17 13:24:28 +03:00
d86e737493 nodejs: fix properties for IE, historyObject used in requestRestore 2023-05-17 12:59:55 +03:00
07a1e3101b Merge branch 'feature/get-history-by-request' into feature/restore-version 2023-05-17 12:55:51 +03:00
1ebfe49916 nodejs: fix properties for IE 2023-05-17 12:54:15 +03:00
b1d6f8d652 Merge branch 'feature/get-history-by-request' into feature/restore-version 2023-05-17 12:46:15 +03:00
8f0edf90e6 nodejs: request in onRequestHistory only 2023-05-17 12:43:33 +03:00
7c77389550 build(deps): bump nokogiri in /web/documentserver-example/ruby
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.9 to 1.14.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.9...v1.14.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 12:42:09 +05:00
637731a4d7 Merge pull request #373 from ONLYOFFICE/refactor/collect-params-for-url
Refactor/collect params for url
2023-05-17 12:34:35 +05:00
6fc98a025b Merge branch 'feature/get-history-by-request' into feature/restore-version
# Conflicts:
#	web/documentserver-example/nodejs/app.js
2023-05-12 13:03:31 +03:00
f123cbcce3 nodejs: handler for restore file version 2023-05-12 13:00:48 +03:00
11f166525e nodejs: onRequestRestore method on front 2023-05-12 12:56:24 +03:00
68db498dfd nodejs: get history data by request 2023-05-12 11:12:32 +03:00
f914afcc53 nodejs: remove row without reload 2023-05-11 15:14:07 +03:00
8dcf75f3fb nodejs: get history data by request 2023-05-11 14:06:48 +03:00
3d9e091882 Merge pull request #378 from ONLYOFFICE/hotfix/disable-rule-for-old-nodejs
nodejs: hasOwnProperty() used instead of hasOwn() for NodeJS v.14
2023-05-10 17:36:27 +05:00
a9ca4b3272 Merge remote-tracking branch 'remotes/origin/release/v7.4.0' into develop 2023-05-10 17:32:40 +05:00
a722b04226 Merge pull request #375 from ONLYOFFICE/feature/edited-chinese
edited language name zh
2023-05-10 17:29:49 +05:00
9a1110a56e ruby: edited language name zh 2023-05-10 17:28:40 +05:00
707122013f python: edited language name zh 2023-05-10 17:28:39 +05:00
f9ed5edf89 php: edited language name zh 2023-05-10 17:28:39 +05:00
dbf6766897 java-spring: edited language name zh 2023-05-10 17:28:39 +05:00
a60c594505 java: edited language name zh 2023-05-10 17:28:38 +05:00
2d0e6c0d3f csharp-mvc: edited language name zh 2023-05-10 17:28:38 +05:00
63e7461995 csharp: edited language name zh 2023-05-10 17:28:38 +05:00
d2491ae6b7 edited language name zh 2023-05-10 17:28:38 +05:00
35798a7916 nodejs: hasOwnProperty() used instead of hasOwn() for NodeJS v.14 2023-05-10 11:30:26 +03:00
f7000b51a7 Merge branch 'release/v7.4.0' into develop
# Conflicts:
#	web/documentserver-example/nodejs/app.js
#	web/documentserver-example/nodejs/helpers/users.js
2023-05-10 10:55:24 +05:00
7e36939392 Merge pull request #376 from ONLYOFFICE/feature/region-protect
setUsers for region protection
2023-05-03 17:52:40 +05:00
afec51b296 nodejs: setUsers for region protection 2023-05-03 13:08:11 +05:00
66faaab294 Merge branch 'develop' into refactor/collect-params-for-url
# Conflicts:
#	web/documentserver-example/nodejs/views/index.ejs
#	web/documentserver-example/nodejs/views/wopiIndex.ejs
2023-04-28 11:20:25 +03:00
7be2a5a507 nodejs: remove serverUrl 2023-04-27 16:45:22 +03:00
8cf26de5e2 Merge remote-tracking branch 'remotes/origin/release/v7.4.0' into develop 2023-04-27 15:15:15 +03:00
016611ba52 Merge pull request #374 from ONLYOFFICE/hotfix/nodejs-wopi-jquery-fix
nodejs: jquery fix in WOPI-template
2023-04-27 15:14:42 +03:00
73d1011e8a nodejs: jquery fix in WOPI-template 2023-04-27 15:14:00 +03:00
f2a11a5894 nodejs: WOPI-page fix 2023-04-27 14:54:36 +03:00
c6043d4428 nodejs: fix tabulation 2023-04-27 11:36:04 +03:00
c37ba28ad3 php: added work with onlyoffice-docs-formats.json 2023-04-27 11:33:57 +03:00
53f810fc54 php: added module document-formats 2023-04-27 10:48:48 +03:00
a55875ae1e php: added module document-templates 2023-04-27 10:46:33 +03:00
707a634823 php: removed module document-templates 2023-04-27 10:42:31 +03:00
b511fa872a nodejs: added module document-formats 2023-04-27 10:36:56 +03:00
4a2e7d9a9e nodejs: added module document-templates 2023-04-27 10:32:49 +03:00
e4d5de2c0e removed module document-templates 2023-04-27 10:24:32 +03:00
50dca2e2c0 php: added work with onlyoffice-docs-formats.json 2023-04-26 14:58:00 +03:00
893303c27f nodejs: added work with onlyoffice-docs-formats.json 2023-04-26 11:48:38 +03:00
b543392c62 nodejs: server url to link in logo 2023-04-26 09:22:39 +03:00
adf52c756e nodejs: fix url-params + IE fix 2023-04-21 12:55:02 +03:00
693cc5a951 Merge pull request #369 from ONLYOFFICE/refactor/format-by-linter-nodejs
Refactor/format by linter nodejs
2023-04-21 09:40:20 +05:00
ff9ba7fbf1 Merge pull request #371 from ONLYOFFICE/hotfix/editor-warning-fix
php: editor warnings fix
2023-04-20 17:06:59 +05:00
c2b87959a2 nodejs: collectParams() instead of reload() + input text added 2023-04-19 11:14:45 +03:00
18ee7776ef nodejs: radio elements + "name" attribute instead of "data-param" 2023-04-19 10:06:29 +03:00
c99efda67a nodejs: open window in new tab 2023-04-19 09:25:49 +03:00
d65f970255 nodejs: collectParams() method added 2023-04-18 14:45:31 +03:00
f5442a8a89 nodejs: url params for collectable elements 2023-04-18 14:44:04 +03:00
e347ea36ce nodejs: "params" in links deleted, added class for actions 2023-04-18 11:50:54 +03:00
f0651dabf0 php: editor warnings fix 2023-04-10 12:31:04 +03:00
ccf85c1c0f nodejs: "no-plusplus" - rule excluded for loops 2023-04-05 15:16:33 +03:00
6ea35bf55c Merge branch 'refactor/format-by-linter-nodejs' of https://github.com/ONLYOFFICE/document-server-integration into refactor/format-by-linter-nodejs 2023-04-05 15:05:05 +03:00
f6afde346a nodejs: await in loops excluded from check 2023-04-05 15:04:50 +03:00
ce4074bcce nodejs: change order 2023-04-05 11:46:06 +05:00
5697b58aa2 nodejs: radix parameters for parseInt() 2023-04-04 12:57:32 +03:00
d5e6301211 nodejs: no restricted syntax 2023-04-04 12:50:45 +03:00
9048082cb7 nodejs: no shadow vars 2023-04-04 11:05:29 +03:00
63526226be typo in changelog 2023-04-04 12:40:10 +05:00
fb07785b0e Merge pull request #368 from ONLYOFFICE/feature/fix-lang
Feature/fix lang
2023-04-04 12:31:08 +05:00
91638382d3 lang code to changelog 2023-04-04 12:30:14 +05:00
56e46466b2 nodejs: useless rules deleted, autofixed spaces before parenthesis, arrow functions syntax, and comma after arguments added 2023-04-03 17:05:26 +03:00
fa9731ab57 nodejs: no unnamed functions 2023-04-03 16:44:48 +03:00
c2ba46ce85 nodejs: no await in loops 2023-04-03 15:25:43 +03:00
4c5780f1d6 nodejs: default param last 2023-04-03 15:20:26 +03:00
0419611a62 nodejs: no prototype builtins 2023-04-03 15:17:57 +03:00
bcc1011ddd nodejs: no constant condition 2023-04-03 15:04:57 +03:00
91a4fe1e52 nodejs: no throw literal 2023-04-03 12:51:30 +03:00
21fed8a81e nodejs: off unused airbnb-base rules 2023-03-31 14:29:59 +03:00
f2fc63c24f nodejs: default cases required 2023-03-31 14:03:14 +03:00
521608fa15 nodejs: no unused else blocks 2023-03-31 13:55:35 +03:00
e16ad4e53d nodejs: define vars is required 2023-03-31 13:48:11 +03:00
7205e383c8 nodejs: no new RegExp() 2023-03-31 13:40:47 +03:00
9bf317b3e0 nodejs: camelCase used 2023-03-31 13:38:38 +03:00
ac668a41c5 nodejs: declaration of methods before use 2023-03-31 13:32:20 +03:00
606f4255dc nodejs: no useless return statements + ';' in the end 2023-03-31 13:03:15 +03:00
22a64dd932 nodejs: no mixed tabs 2023-03-31 12:34:05 +03:00
dd3255779f nodejs: required the use of === and !== 2023-03-31 12:30:04 +03:00
89c7e63ab8 nodejs: object curly spacing 2023-03-31 11:04:35 +03:00
447c604fe9 nodejs: no multiple empty lines 2023-03-31 10:54:40 +03:00
dff9602852 nodejs: require correct order 2023-03-31 10:00:32 +03:00
f4d7915dd6 nodejs: 'use strict' is unnecessary inside of modules 2023-03-31 09:35:57 +03:00
01204d544e nodejs: const declarations for variables that are never reassigned after declared 2023-03-30 17:03:40 +03:00
a06aa8c8b3 nodejs: max-length of lines - 120 2023-03-30 16:31:39 +03:00
7977427038 nodejs: no unused variables 2023-03-30 13:47:33 +03:00
0b8d0ed10a nodejs: disallowed spacing around embedded expressions of template strings 2023-03-30 12:33:52 +03:00
efec141039 nodejs: disallowed padding within blocks 2023-03-30 12:29:39 +03:00
6736555ff3 nodejs: constructor names to begin with a capital letter 2023-03-30 12:20:50 +03:00
d94fe30a3e nodejs: fix no nested ternary expressions 2023-03-30 12:12:04 +03:00
3079320534 nodejs: no multi spaces 2023-03-30 10:57:00 +03:00
4f3af51e54 nodejs: newline after each call in a method chain 2023-03-30 10:52:48 +03:00
d19c81c944 nodejs: EOL last 2023-03-30 10:48:34 +03:00
bc3cbbbb82 nodejs: spacing around infix operators 2023-03-30 10:47:14 +03:00
8ee3ddc925 nodejs: space before the opening parenthesis in control statements 2023-03-30 10:44:00 +03:00
173c05dbf3 nodejs: consistent indentation (2 spaces) 2023-03-30 10:41:27 +03:00
b13c548c4d nodejs: 1 space before comment text 2023-03-30 10:30:18 +03:00
ef8237adfd nodejs: disallowed else blocks after return statements in if statements 2023-03-30 10:24:06 +03:00
c80379da31 nodejs: braces for multi-line blocks with if and else 2023-03-30 10:22:04 +03:00
a54c43c0c2 nodejs: braces with all multi-line blocks 2023-03-30 10:19:25 +03:00
5e524aa148 nodejs: disallow bitwise operators 2023-03-30 10:12:41 +03:00
e84ee9e01b nodejs: no unneeded ternary operators 2023-03-30 09:32:01 +03:00
27ceb1e6c6 nodejs: no nested ternary expressions 2023-03-29 17:23:50 +03:00
508b0d913c nodejs: disallow the unary operators ++ and -- 2023-03-29 16:35:32 +03:00
5999b070dc nodejs: dot notation whenever possible 2023-03-29 15:43:55 +03:00
3ed13f3975 nodejs: braces around arrow function bodies 2023-03-29 13:33:51 +03:00
1789f7c9fd nodejs: parentheses around arrow function arguments 2023-03-29 13:31:33 +03:00
a05ea11dd7 nodejs: spacing before and after the arrow in arrow functions 2023-03-29 13:29:34 +03:00
c6dd46a004 nodejs: linebreaks inside function parentheses if any of the parameters/arguments have a line break between them 2023-03-29 13:27:07 +03:00
bf04979c31 nodejs: reassigning function parameters disallowed 2023-03-29 13:20:33 +03:00
e9274b7303 nodejs: spacing before blocks 2023-03-29 12:52:36 +03:00
03022c5b45 nodejs: spacing before function definition opening parenthesis 2023-03-29 12:50:35 +03:00
ce4ccdd5b0 nodejs: rest parameters instead of arguments 2023-03-29 12:32:28 +03:00
07eba65458 nodejs: used named function expressions instead of function declarations 2023-03-29 10:56:17 +03:00
072b082240 nodejs: require using arrow functions for callbacks 2023-03-29 09:49:21 +03:00
c664bc4ee9 nodejs: template literals instead of string concatenation 2023-03-28 17:38:41 +03:00
f113d7eeb1 nodejs: require destructuring from arrays and objects 2023-03-28 16:52:27 +03:00
9409bf0785 nodejs: quote only properties that are invalid identifiers 2023-03-28 15:41:02 +03:00
d51e724130 nodejs: method and property shorthand syntax for object literals 2023-03-28 15:35:27 +03:00
9489b4dcde nodejs: variables with block scope used 2023-03-28 14:46:09 +03:00
d9c139a42b nodejs: const declarations for variables that are never reassigned after declared 2023-03-28 14:08:15 +03:00
534f1d8284 nodejs: single quotes used 2023-03-28 14:02:31 +03:00
f177af8791 nodejs: added max-length (120) to ruleset 2023-03-28 13:57:52 +03:00
0b1a100be7 Merge pull request #367 from ONLYOFFICE/feature/format-fix-by-linter
java-spring: formatting by linter
2023-03-28 10:00:07 +05:00
3932aeabed java-spring: formatting by linter 2023-03-27 15:31:15 +03:00
be1dd93627 Merge remote-tracking branch 'remotes/origin/master' into develop
# Conflicts:
#	web/documentserver-example/php/index.php
2023-03-27 15:49:06 +05:00
fd75d3ce17 csharp: no, si lang code 2023-03-27 13:38:58 +03:00
eac69c683d csharp-mvc: no, si lang code 2023-03-27 13:37:29 +03:00
4351de8ec7 java: no, si lang code 2023-03-27 13:35:37 +03:00
4c4092634a java-spring: no, si lang code 2023-03-27 13:33:41 +03:00
efac4d4a66 php: no, si lang code 2023-03-27 13:30:04 +03:00
1afb1db3d5 python: no, si lang code 2023-03-27 13:28:08 +03:00
6b63d8298c ruby: no, si lang code 2023-03-27 13:24:58 +03:00
2a6e5e44bf Merge pull request #363 from ONLYOFFICE/hotfix/1.5.1
Hotfix/1.5.1
2023-03-27 15:23:02 +05:00
c76d93966f nodejs: no, si lang code 2023-03-27 14:34:51 +05:00
a74fef732e nodejs: change size on mobile only (a9d261a0ad)
Fix Bug 51285
2023-03-26 18:02:18 +05:00
06a692326e Merge pull request #366 from ONLYOFFICE/feature/convert-to-ooxml-on-upload
Feature/convert to ooxml on upload
2023-03-26 17:34:12 +05:00
cc73e6b42b convert to ooxml to changelog 2023-03-26 17:27:33 +05:00
7b926f1e11 Merge remote-tracking branch 'remotes/origin/develop' into feature/convert-to-ooxml-on-upload 2023-03-26 17:26:50 +05:00
bbb81f9bf1 conversation response to changelog 2023-03-26 17:24:17 +05:00
2b19d96646 Merge pull request #365 from ONLYOFFICE/feature/save-files-format
Feature/save files format
2023-03-26 17:21:49 +05:00
bfae48f32f python: save file in response type 2023-03-26 17:18:07 +05:00
a2a9fb3d25 php: save file in response type 2023-03-26 17:17:58 +05:00
5b9d4a7eb2 csharp-mvc: convert to .ooxlm 2023-03-24 12:48:35 +03:00
0f9144bb12 csharp: convert to .ooxlm 2023-03-24 12:47:06 +03:00
76dde2fac8 java: convert to .ooxlm 2023-03-24 12:44:19 +03:00
75f44a79d3 java-spring: convert to .ooxlm 2023-03-24 12:41:34 +03:00
d874ba0096 nodejs: convert to .ooxlm 2023-03-24 12:34:39 +03:00
7495ae9c15 ruby: convert to .ooxlm 2023-03-24 12:33:17 +03:00
ee5c892e2d php: convert to .ooxlm 2023-03-24 12:29:32 +03:00
c464e658fc python: convert to .ooxlm 2023-03-24 12:27:54 +03:00
575b68a8cf Merge pull request #364 from ONLYOFFICE/feature/ie11-horizontal-scroll-fix
Feature/ie11 horizontal scroll fix
2023-03-23 18:31:01 +05:00
16e39b5535 java: fix dockerfile path 2023-03-23 15:11:40 +03:00
5c3d64df54 java-spring: fix setCookie after open page 2023-03-23 14:29:23 +03:00
dcf0b500ec nodejs: save file in response type 2023-03-23 11:28:02 +03:00
a1fd64af8f php: jQuery path fix in template 2023-03-22 17:43:52 +03:00
e76f06fbd7 horizontal scroll fix for IE10-11 to changelog 2023-03-22 16:58:38 +03:00
dcac8cbbde ruby: horizontal scroll fix for IE10-11 2023-03-22 16:57:20 +03:00
497a7dc98f python: horizontal scroll fix for IE10-11 2023-03-22 16:56:33 +03:00
a3db74a449 php: horizontal scroll fix for IE10-11 2023-03-22 16:55:59 +03:00
7d74726b07 java-spring: horizontal scroll fix for IE10-11 2023-03-22 16:55:24 +03:00
36169cbaa8 java: horizontal scroll fix for IE10-11 2023-03-22 16:54:32 +03:00
1dcc0cb3b9 csharp-mvc: horizontal scroll fix for IE10-11 2023-03-22 16:53:45 +03:00
69cc5de02a csharp: horizontal scroll fix for IE10-11 2023-03-22 16:52:09 +03:00
a2cacd983e nodejs: horizontal scroll fix for IE10-11 2023-03-22 16:51:19 +03:00
be1616d6b6 ruby: save file in response type 2023-03-22 12:12:46 +05:00
d9a79e20d7 csharp-mvc: save file in response type 2023-03-22 12:12:29 +05:00
6aa80c4a8c csharp: save file in response type 2023-03-22 12:12:09 +05:00
8bf38e39ac java: save file in response type 2023-03-22 12:10:27 +05:00
35017c341d java-spring: save file in response type 2023-03-22 11:59:26 +05:00
2f91bdd1b8 Merge pull request #361 from ONLYOFFICE/bugfix/jwt
added: getters for FileModel, fix (4a902dff94a4c1139d2f820a9e42499d57…
2023-03-22 11:34:10 +05:00
f5c6fe76d3 Merge pull request #362 from ONLYOFFICE/feature/update-jquery
Feature/update jquery
2023-03-22 11:31:41 +05:00
e1d6bac33a Merge remote-tracking branch 'remotes/origin/hotfix/1.5.1' into feature/update-jquery
# Conflicts:
#	CHANGELOG.md
#	web/documentserver-example/php/config.php
#	web/documentserver-example/php/index.php
#	web/documentserver-example/python/licenses/jQuery.license
2023-03-22 11:29:45 +05:00
2724f007db 1.5.1 2023-03-22 11:13:14 +05:00
8744e79b62 update jquery to changelog 2023-03-22 11:09:28 +05:00
a0abfb39a7 license: update jquery license text 2023-03-22 11:05:42 +05:00
ccd5584b0c ruby: licenses for jQuery.Migrate 2023-03-21 21:32:05 +05:00
a871b29d7c ruby: jquery-3.6.4 instead of 1.8.2 2023-03-21 21:32:05 +05:00
4f5c38be87 java-spring: licenses for jQuery.Migrate 2023-03-21 21:32:05 +05:00
cc1b3cdbe8 java=spring: jquery-3.6.4 instead of 1.8.2 2023-03-21 21:32:05 +05:00
0387b80843 java: licenses for jQuery.Migrate 2023-03-21 21:32:05 +05:00
2c1a160215 java: jquery-3.6.4 instead of 1.8.2 2023-03-21 21:32:05 +05:00
5c773cb5e6 csharp-mvc: licenses for jQuery.Migrate 2023-03-21 21:32:04 +05:00
5b666247cc csharp-mvc: jquery-3.6.4 instead of 1.8.2 2023-03-21 21:32:04 +05:00
7c0b67215e nodejs: license for jQuery.Migrate to main 3rd-Party.license 2023-03-21 21:32:04 +05:00
18650f7da2 csharp: licenses for jQuery.Migrate 2023-03-21 21:32:04 +05:00
b62214a416 csharp: jquery-3.6.4 instead of 1.9.0 2023-03-21 21:32:04 +05:00
d4ed01196e nodejs: licenses for jQuery.Migrate 2023-03-21 21:32:04 +05:00
9ec9cd4912 nodejs: jquery-3.6.4 instead of 1.8.2 2023-03-21 21:32:03 +05:00
547da16760 python: licenses for jQuery.Migrate 2023-03-21 21:32:03 +05:00
51be4d06d8 python: jquery-3.6.4 instead of 1.9.0 2023-03-21 21:32:03 +05:00
456b27e4c3 php: licenses for jQuery.Migrate 2023-03-21 21:32:03 +05:00
3f9f0d01f6 php: jquery-3.6.4 instead of 1.9.0 2023-03-21 21:32:03 +05:00
60222f3068 python: licenses list added 2023-03-21 21:27:37 +05:00
49084614cd added: getters for FileModel, fix (4a902dff94) 2023-03-21 10:18:44 +03:00
e5b8628760 ruby: licenses for jQuery.Migrate 2023-03-20 10:16:14 +03:00
f0dbf0f9a0 ruby: jquery-3.6.4 instead of 1.8.2 2023-03-20 10:14:53 +03:00
072ba012ab java-spring: licenses for jQuery.Migrate 2023-03-20 10:13:22 +03:00
01f7f18cd4 java=spring: jquery-3.6.4 instead of 1.8.2 2023-03-20 09:43:41 +03:00
e6511a5b69 java: licenses for jQuery.Migrate 2023-03-20 09:40:56 +03:00
43b9f31aa6 java: jquery-3.6.4 instead of 1.8.2 2023-03-20 09:39:26 +03:00
eb5b4f42c7 csharp-mvc: licenses for jQuery.Migrate 2023-03-20 09:36:29 +03:00
12f5528d90 csharp-mvc: jquery-3.6.4 instead of 1.8.2 2023-03-20 09:30:31 +03:00
ae58966ef0 nodejs: format 2023-03-18 21:37:03 +05:00
a0e22c1304 nodejs: license for jQuery.Migrate to main 3rd-Party.license 2023-03-17 14:36:18 +03:00
3fc916e8da csharp: licenses for jQuery.Migrate 2023-03-17 14:35:07 +03:00
084e9cfca2 csharp: jquery-3.6.4 instead of 1.9.0 2023-03-17 14:30:45 +03:00
d943bf26cc nodejs: licenses for jQuery.Migrate 2023-03-17 14:27:10 +03:00
1983f170d3 nodejs: jquery-3.6.4 instead of 1.8.2 2023-03-17 14:23:21 +03:00
22a3608238 python: licenses for jQuery.Migrate 2023-03-17 13:50:03 +03:00
40c4a37e4a python: jquery-3.6.4 instead of 1.9.0 2023-03-17 13:46:46 +03:00
03d0068038 php: licenses for jQuery.Migrate 2023-03-17 13:24:48 +03:00
d8771a877b php: jquery-3.6.4 instead of 1.9.0 2023-03-17 13:13:19 +03:00
1e2ac3e23c Merge branch 'master' into develop 2023-03-17 12:02:40 +05:00
1683a08660 artifact on master only 2023-03-17 12:02:27 +05:00
459c7cd233 Merge pull request #359 from ONLYOFFICE/feature/prevent-anonymous-edit
Feature/prevent anonymous edit
2023-03-17 12:00:32 +05:00
c0241a84be onRequestEditRights to changelog 2023-03-17 11:56:54 +05:00
0df40f97ea Merge pull request #360 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/rack-2.2.6.4
build(deps): bump rack from 2.2.4 to 2.2.6.4 in /web/documentserver-example/ruby
2023-03-17 11:54:03 +05:00
b7aa93e628 Merge branch 'develop' into dependabot/bundler/web/documentserver-example/ruby/rack-2.2.6.4 2023-03-17 11:53:47 +05:00
d47ec1820a build(deps): bump rack in /web/documentserver-example/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.4.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.4)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-16 11:17:15 +00:00
3952663302 php: re-hide edit icon on view screen for anonymous 2023-03-15 11:18:32 +05:00
9e39adddcc php: hide edit icon on view screen for anonymous 2023-03-14 16:26:32 +05:00
f79fb213f1 ruby: hide edit icon on view screen for anonymous 2023-03-14 16:16:01 +05:00
c236f2902e python: hide edit icon on view screen for anonymous 2023-03-14 15:53:34 +05:00
96368f871c java-spring: hide edit icon on view screen for anonymous 2023-03-14 15:51:33 +05:00
5831c7f651 java: hide edit icon on view screen for anonymous 2023-03-14 15:50:03 +05:00
52706402a2 csharp-mvc: hide edit icon on view screen for anonymous 2023-03-14 15:42:12 +05:00
90be38c240 csharp: hide edit icon on view screen for anonymous 2023-03-14 13:30:49 +05:00
19f75a0646 nodejs: hide edit icon on view screen for anonymous 2023-03-14 13:02:14 +05:00
4fd38856fd Merge pull request #358 from ONLYOFFICE/feature/csharp-close-history
Feature/csharp close history
2023-03-13 14:17:58 +05:00
593ad9559f csharp-mvc: add close history button 2023-03-13 13:39:13 +05:00
8d06c0afcb csharp: add close history button 2023-03-13 13:36:46 +05:00
4b3b44d828 Merge pull request #356 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/rack-2.2.6.3
build(deps): bump rack from 2.2.4 to 2.2.6.3 in /web/documentserver-example/ruby
2023-03-13 11:29:11 +05:00
bb9d73610e build(deps): bump rack in /web/documentserver-example/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.3)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 11:28:41 +05:00
8468c87170 Merge remote-tracking branch 'remotes/origin/master' into develop 2023-03-08 13:14:15 +05:00
3427554bf0 Merge pull request #355 from ONLYOFFICE/fix/gitignore
chore: remove .gitignore from spring,ruby
2023-03-08 13:13:30 +05:00
ec2845af5e chore: remove .gitignore from spring,ruby 2023-03-06 12:27:58 +05:00
976dfc9276 Merge pull request #353 from ONLYOFFICE/feature/formats
Feature/formats
2023-03-06 10:45:39 +05:00
da7cc3e65d Merge pull request #344 from hunimuni/patch-1
Fixed links
2023-03-05 18:36:42 +05:00
3283e14c01 Merge pull request #354 from ONLYOFFICE/feature/artifact-actions
ci: artifact and release actions
2023-03-05 17:20:23 +05:00
17f336a156 ci: artifact and release actions 2023-03-03 18:11:58 +05:00
3d7ea8715a ruby: changed format list 2023-03-03 17:11:01 +05:00
487467cbed python: changed format list 2023-03-03 17:09:15 +05:00
cb71e3fb35 java-spring: changed format list 2023-03-03 16:57:35 +05:00
5749ad8db2 java: changed format list 2023-03-03 16:55:59 +05:00
f3d03c6011 csharp-mvc: changed format list 2023-03-03 16:53:56 +05:00
16b1a90cb1 csharp: changed format list 2023-03-03 16:51:47 +05:00
a29d98eb10 php: changed format list 2023-03-03 16:44:20 +05:00
82cb492bb7 python: unused import 2023-03-03 14:12:51 +05:00
6fde4de187 nodejs: changed format list 2023-03-03 01:12:05 +05:00
ad073bb2f8 Merge remote-tracking branch 'remotes/origin/master' into develop 2023-03-02 22:10:19 +05:00
827b315bff Merge pull request #345 from ONLYOFFICE/refactor/php-example-refactoring
Refactor/php example refactoring
2023-03-02 18:12:01 +05:00
33c093f7a6 Revert "fix: remove on develop pull request"
This reverts commit 2d9a7ed502.
2023-03-02 18:11:27 +05:00
855dfb4736 php: format 2023-03-02 18:09:10 +05:00
50eeaf0db4 php: formatting by linter 2023-03-02 15:16:25 +03:00
8d3afb7ad0 Merge branch 'develop' into refactor/php-example-refactoring 2023-03-02 14:10:32 +03:00
830fa87e27 fix reload page with cached checkbox status in FireFox 2023-03-02 14:35:54 +05:00
4d8a893326 Merge branch 'feature/wopi-mobile' into develop 2023-03-02 14:22:36 +05:00
7f371699b1 nodejs: remove empty media style 2023-03-02 14:22:20 +05:00
76a2bfd9f9 Margin of icons in WOPI-template. New actions included. (#351)
* nodejs: WOPI - margin of icons = 8px, media-queries changed.

* nodejs: WOPI - margin of icons for new actions.
2023-03-02 14:04:21 +05:00
9c88f86e80 Merge pull request #346 from ONLYOFFICE/feature/referenceData
Feature/reference data
2023-03-02 13:47:40 +05:00
4d4951f184 referenceData to changelog 2023-03-02 13:22:00 +05:00
251f48ee1e nodejs: do not check oform param in ie11 2023-02-28 17:40:37 +05:00
bdca343550 Copyright 2023 2023-02-28 12:26:45 +05:00
dcc7bdfcae nodejs: icons for mobile actions in wopi 2023-02-28 00:07:58 +05:00
469a8c087b Merge branch 'develop' into feature/referenceData 2023-02-27 10:17:41 +03:00
61a8490d4f csharp: check of empty filename-string (logical error fixed) 2023-02-27 10:10:37 +03:00
4fa2049adc csharp-mvc: names of helpers fixed + check of empty filename-string (logical error fixed) 2023-02-27 10:08:47 +03:00
060f28e404 csharp-mvc: unnecessary replace of symbols deleted 2023-02-27 09:30:44 +03:00
82bc0e6496 csharp: unnecessary replace of symbols deleted. 2023-02-27 09:25:32 +03:00
beaab91223 Merge pull request #350 from ONLYOFFICE/feature/permissions-protect-for-anonymous
Feature/permissions protect for anonymous
2023-02-23 17:44:30 +05:00
49953199d4 protect to changelog 2023-02-23 17:44:11 +05:00
9c7b39bd5a protect field to information 2023-02-23 17:43:09 +05:00
c2f653bbde nodejs: "protect" permission is added 2023-02-22 16:06:28 +03:00
d3d3121d51 java-spring: "protect" permission is added 2023-02-22 15:27:39 +03:00
ebd252f42c java: "protect" permission is added 2023-02-22 14:53:24 +03:00
586d7767b4 csharp-mvc: "protect" permission is added 2023-02-22 14:42:21 +03:00
ea8b0c0fa3 csharp: "protect" permission is added 2023-02-22 14:39:27 +03:00
055f548056 ruby: "protect" permission is added 2023-02-22 14:30:59 +03:00
78752275fd python: "protect" permission is added 2023-02-22 14:20:00 +03:00
c26a17f29e php: "protect" permission is added 2023-02-22 14:04:11 +03:00
61d64e909b java-spring: fix - search for filename by path 2023-02-22 12:22:41 +03:00
21d1fd962f java: fix - search for filename by path 2023-02-22 11:55:13 +03:00
4eff2e7d89 ruby: fix - search for filename by path 2023-02-21 11:49:42 +03:00
2b6b48720e python: apache 2 license 2023-02-21 11:56:15 +05:00
4f26ff64c6 csharp-mvc: fix - search for filename by path 2023-02-21 09:31:50 +03:00
d23e139272 csharp: fix - search for filename by path 2023-02-21 09:29:52 +03:00
e6ec9acc96 Merge pull request #349 from ONLYOFFICE/feature/python-licenses-list
python: licenses list added
2023-02-21 11:02:59 +05:00
9d54ec748a python: fix - search for filename by path 2023-02-20 17:06:56 +03:00
8d2cbca12f php: fix - search for filename by path 2023-02-20 16:49:44 +03:00
20c51ea577 python: licenses list added 2023-02-20 12:34:35 +03:00
23f2837c66 php: removed unused "use" statements 2023-02-17 16:05:45 +03:00
9faf540f8c php: docEditor template added 2023-02-17 15:44:48 +03:00
5bb8719e00 php: README.md updated 2023-02-17 15:44:21 +03:00
2bb01fbfff php: building an docEditorView from a templates + formatting by linter 2023-02-17 14:58:13 +03:00
de9f27465f Merge pull request #348 from ONLYOFFICE/feature/add-oform-parameter
nodejs: disable oform module
2023-02-17 16:10:02 +05:00
66ab02199b Merge pull request #347 from ONLYOFFICE/bugfix/wopi-language
nodejs: wopi: fix language
2023-02-17 16:02:16 +05:00
d77be1fcbd nodejs: wopi: refactor wopi params 2023-02-17 13:26:18 +03:00
e729afdd05 java-spring: search for fileName by path added + json-data fix 2023-02-17 12:59:09 +03:00
e88c2e9c68 java: search for fileName by path added + json-data fix 2023-02-17 12:20:25 +03:00
63b7641c47 csharp: fix - "Path not found" - error handled 2023-02-17 11:46:17 +03:00
54f501c82b csharp-mvc: search for fileName by path added 2023-02-17 11:43:15 +03:00
c291b1059c nodejs: wopi: fix language 2023-02-17 11:35:25 +03:00
ee0a167708 csharp: search for fileName by path added 2023-02-17 11:15:33 +03:00
f76c611033 ruby: search for fileName by path added 2023-02-17 10:40:03 +03:00
7d1c3a994d python: search for fileName by path added 2023-02-17 10:13:43 +03:00
42b7c8353e php: search for fileName by path added 2023-02-17 09:34:22 +03:00
584dd720de php: dictionary of templates names deleted 2023-02-16 16:21:37 +03:00
aa5d6fce47 php: common methods are collected in the parent class View, changed methods visibility 2023-02-16 16:17:35 +03:00
32c64daa4d php: building an IndexView from a templates 2023-02-16 15:55:20 +03:00
1b1d07ebc5 python: referenceData 2023-02-16 12:19:33 +03:00
55734a1458 ruby: referenceData 2023-02-16 10:10:23 +03:00
43875b06bf java-spring: ReferenceData 2023-02-15 15:33:07 +03:00
97ba0da3c2 java: referenceData 2023-02-15 14:54:12 +03:00
8147608d3b csharp-mvc: fix referenceData - path-parameter in ajax-handler added 2023-02-15 14:24:44 +03:00
9213143e14 chsarp: fix referenceData - path-parameter in ajax-handler added 2023-02-15 14:20:40 +03:00
f1a9a84777 php: new methods for views, IndexStoredListView added 2023-02-14 17:18:09 +03:00
75046b80c6 csharp-mvc: referenceData 2023-02-14 15:42:36 +03:00
69caf53646 csharp: referenceData 2023-02-14 15:20:27 +03:00
6f69350183 php: views-classes added 2023-02-13 16:30:00 +03:00
2e75037b4e php: referenceData 2023-02-13 14:56:09 +03:00
bba6473b95 Merge branch 'develop' into refactor/php-example-refactoring 2023-02-10 13:38:03 +03:00
2aaa32449a Merge pull request #341 from ONLYOFFICE/feature/config-request-jwt
Feature/config request jwt
2023-02-10 13:09:09 +03:00
1a44d6d415 token.useforrequest to changelog 2023-02-10 15:07:52 +05:00
7a3025c548 php: ajax-handlers transferred from functions.php to ajax.php 2023-02-10 11:33:02 +03:00
cdd816ef35 php: deleted declarations of variables without values 2023-02-10 09:33:04 +03:00
f69097b209 php: header comment fixed 2023-02-09 17:05:12 +03:00
9896be023e php: sendlog() returned into ExampleUsers 2023-02-09 16:01:43 +03:00
1d99c8f58e php: objects of helpers used instead of functions 2023-02-09 14:51:41 +03:00
835e10ed4b Fixed links
The paths were not formed correctly, the symbol '/' was missing
2023-02-09 13:41:48 +03:00
e4439bfc3e php: "\r\n" replaced with "\n" 2023-02-09 11:05:06 +03:00
5ad77a855b Merge remote-tracking branch 'remotes/origin/develop' into feature/config-request-jwt
# Conflicts:
#	web/documentserver-example/php/config.php
#	web/documentserver-example/php/functions.php
#	web/documentserver-example/php/jwtmanager.php
#	web/documentserver-example/php/trackmanager.php
2023-02-09 12:32:06 +05:00
5933aa83ad Merge remote-tracking branch 'remotes/origin/master' into develop 2023-02-09 12:27:46 +05:00
2e1854f6c1 Merge pull request #342 from ONLYOFFICE/fix/actions-on
fix: remove on develop pull request
2023-02-09 10:27:10 +03:00
2d9a7ed502 fix: remove on develop pull request 2023-02-09 11:49:50 +05:00
78bd037486 Merge pull request #340 from ONLYOFFICE/refactor/linter-formatting
Refactor/linter formatting
2023-02-09 09:31:32 +03:00
17beef45f4 php: linter to changelog 2023-02-09 11:30:13 +05:00
37f49af588 Revert "php: PSR1.Files.SideEffects disabled in ruleset.xml"
This reverts commit b11a1be481.
2023-02-09 09:19:58 +03:00
f86c09b19d Merge branch 'refactor/linter-formatting' into refactor/php-example-refactoring 2023-02-09 09:18:16 +03:00
b11a1be481 php: PSR1.Files.SideEffects disabled in ruleset.xml 2023-02-09 09:16:46 +03:00
a3e140981d php: correct license type 2023-02-08 22:53:48 +05:00
3112be387e php: helpers used in functions 2023-02-08 17:49:20 +03:00
383d7c27c0 php: helpers fixed 2023-02-08 16:50:47 +03:00
7190725726 php: TrackManager class added 2023-02-08 14:31:44 +03:00
065da92d65 php: FileUtility and Utils added 2023-02-08 12:33:43 +03:00
5c877cf902 php: classes JwtManager and ConfigManager used instead of included functions and GLOBALS array 2023-02-08 11:24:45 +03:00
726808813a php: config.json default values 2023-02-08 11:07:13 +03:00
7af4c16b35 php: JwtManager class added 2023-02-08 10:51:58 +03:00
e7fc9bb8c2 php: ConfigManager class added, config.json for ConfigManager added (instead of $GLOBALS array in future) 2023-02-08 10:36:43 +03:00
baf429a0d0 php: methods of ExampleUsers class used instead of functions 2023-02-07 16:44:46 +03:00
00b2d948dc php: class users converted to classes Users(user entity) and ExampleUsers(users-collection entity) 2023-02-07 16:37:21 +03:00
81258cc717 php: created parameters for composer autoloader 2023-02-07 16:34:37 +03:00
9db426ffe5 php: tokenUseForRequest() function used instead of $GLOBALS array value 2023-02-06 16:33:26 +03:00
a6ee7d28d0 php: added tokenUseForRequest() method into jwtmanager 2023-02-06 16:25:41 +03:00
7a50b8fda2 ruby: config request JWT used in functions 2023-02-06 16:14:53 +03:00
5f7f8d66d5 ruby: added use_for_request method into jwt_helper 2023-02-06 16:11:41 +03:00
d514acf32e python: config request JWT used in functions 2023-02-06 15:44:59 +03:00
d3df1499d2 python: added useForRequest() method into jwtManager 2023-02-06 15:37:29 +03:00
f7682b12ae java-spring: config request JWT used in functions 2023-02-06 15:22:06 +03:00
8c2d62d917 java-spring: added tokenUseForRequest method and field into DefaultJwtManager class and JwtManager interface 2023-02-06 15:10:47 +03:00
f0d9c54038 java: config request JWT used in functions 2023-02-06 14:52:33 +03:00
fbe5b1de37 java: added tokenUseForRequest methods into DocumentManager 2023-02-06 14:24:02 +03:00
dccfbb2edf csharp-mvc: config request JWT used in functions 2023-02-06 12:46:11 +03:00
0f2b5305e3 csharp-mvc: added SignatureUseForRequest field into JwtManager 2023-02-06 12:39:38 +03:00
c69a7c92a5 csharp: config request JWT used in functions 2023-02-06 12:30:43 +03:00
6fa3aab99c csharp: added SignatureUseForRequest field into JwtManager 2023-02-06 12:13:49 +03:00
02f4777058 php: config request JWT used in functions 2023-02-06 11:12:14 +03:00
e0386f7cf9 php: added licenses of new dependency (PHP_CodeSniffer) 2023-02-03 17:25:17 +03:00
0521f20413 php: deleted unused ruleset (uses - ruleset.xml) 2023-02-03 17:23:02 +03:00
61b5746ddf php: deleted dependency: cs-fixer 2023-02-03 17:17:40 +03:00
57d823acb1 Merge branch 'develop' into refactor/linter-formatting 2023-02-03 14:47:29 +03:00
4d99e2e406 php: example namespace for class User (users.php) added 2023-02-03 12:01:22 +03:00
bec48ed834 php: spaces in "mixed"-php files auto-fixed 2023-02-03 11:17:45 +03:00
e856f5bcb1 php: fixed spaces and new lines for multi-line functions 2023-02-03 11:06:05 +03:00
c57a710bca Merge pull request #339 from ONLYOFFICE/fix/phpcs-ruleset
ci: custom ruleset
2023-02-03 09:09:39 +03:00
248e9213a1 ci: custom ruleset 2023-02-03 11:06:55 +05:00
a035adcbd9 php: function names converted to camelCase (exclude mime_content_type) 2023-02-02 17:23:42 +03:00
7fd1b65fec php: fixed doc comments and multi-line assignments 2023-02-02 16:48:58 +03:00
8ee0aa45b9 php: line exceeds maximum limit of 120 characters 2023-02-02 15:28:05 +03:00
dfcf244dc8 php: comments for functions are standardized to PEAR Docblock Comment standards 2023-02-02 14:14:57 +03:00
0563795494 php: spaces and new lines around operators fixed 2023-02-02 11:27:14 +03:00
b6b6e80ffb php: no additional blank lines at end of doc comment 2023-02-02 10:53:15 +03:00
bd3b91d02f php: include/require and file path should be divided with a single space 2023-02-02 10:34:58 +03:00
555f8d43cd php: braces after functions and oop constructs on the next line 2023-02-01 16:46:31 +03:00
3f48a8d492 php: trailing whitespace at the end of blank line removed 2023-02-01 15:57:27 +03:00
bb921e7eff php: method argument spaces normalized 2023-02-01 14:48:48 +03:00
13d5e6fa94 php: binary operators should be surrounded by single space 2023-02-01 14:12:28 +03:00
cbfcf5de96 php: no spaces after function name 2023-02-01 14:06:41 +03:00
4771d96819 php: unary operators should be placed adjacent to their operands 2023-02-01 13:47:04 +03:00
d2aa6f0653 php: used null coalescing operator ?? where possible 2023-02-01 13:44:26 +03:00
cf2a00a374 php: used operator ?: where possible 2023-02-01 13:39:40 +03:00
bdfb75dc84 php: standardized spaces around ternary operator 2023-02-01 13:37:03 +03:00
66cbb64039 php: require user address on download
nodejs: require token on download
2023-02-01 15:00:10 +05:00
879ee1f750 java-spring: token and user address required on download 2023-02-01 15:00:10 +05:00
90449fff3a java: token and address required on download 2023-02-01 15:00:09 +05:00
893c6306f2 csharp-mvc: user address required on download 2023-02-01 15:00:09 +05:00
aa3806f1dd c-sharp: user address required on download 2023-02-01 15:00:09 +05:00
4000117811 ruby: user address required on download 2023-02-01 15:00:09 +05:00
3319e6428a python: user address required on download 2023-02-01 15:00:08 +05:00
9e21ca625c Merge pull request #334 from ONLYOFFICE/feature/token-and-address-required-on-download
Feature/token and address required on download
2023-02-01 12:59:22 +03:00
02def07f23 php: require user address on download 2023-02-01 14:30:54 +05:00
fc4dac6c4b java-spring: token and user address required on download 2023-02-01 14:29:52 +05:00
486a09f3b2 java: token and address required on download 2023-02-01 14:28:28 +05:00
9a22fc854b csharp-mvc: user address required on download 2023-02-01 14:27:32 +05:00
ac4d5561a2 c-sharp: user address required on download 2023-02-01 14:26:37 +05:00
98cdda06c4 ruby: user address required on download 2023-02-01 14:25:24 +05:00
744fccf913 python: user address required on download 2023-02-01 14:24:34 +05:00
349ff5d61d php: all classes must be final, except abstract ones and doctrine entities 2023-02-01 11:22:29 +03:00
dbba22df23 php: array_push() converted to short usage 2023-02-01 09:21:35 +03:00
2ddd822b24 php: replace non multibyte-safe functions with corresponding mb function 2023-02-01 09:09:58 +03:00
6b4d6baf4b php: short scalar cast 2023-01-31 17:29:58 +03:00
2c8d151cc7 php: there must be no trailing spaces inside comment or PHPDoc 2023-01-31 17:10:22 +03:00
60c7c025a3 Merge remote-tracking branch 'remotes/origin/hotfix/v7.3.1' into develop 2023-01-31 18:44:33 +05:00
7aaf5243cb Merge pull request #337 from ONLYOFFICE/feature/add-oform-parameter
nodejs: disable oform module
2023-01-31 16:15:43 +03:00
44b0f4d53d php: There must not be a space after the opening parenthesis 2023-01-31 16:05:35 +03:00
b765d43612 nodejs: disable oform module 2023-01-31 18:01:46 +05:00
70b63636e3 php: there must not be spaces around offset brace 2023-01-31 16:00:00 +03:00
8d4582e379 php: each statement must be indented 2023-01-31 15:54:07 +03:00
a1ec2cf366 php: remove trailing whitespace at the end of non-blank lines 2023-01-31 15:46:55 +03:00
4907e9d3c8 php: header comment needed 2023-01-31 15:43:37 +03:00
88f3d6da59 php: closing ?> tag must be omitted from files containing only PHP 2023-01-31 15:20:22 +03:00
481b111cb2 php: multi-line arrays must have a trailing comma 2023-01-31 15:14:01 +03:00
a1e13f3315 php: visibility must be declared on all methods 2023-01-31 14:58:18 +03:00
d1dd289c77 php: replace control structure alternative syntax to use braces 2023-01-31 14:52:04 +03:00
7b4e40c4e4 php: keyword elseif should be used instead of else if 2023-01-31 12:56:57 +03:00
6d4cad2215 php: curly opening braces after control structures and oop-structures on the same line 2023-01-31 12:31:33 +03:00
f43a4471ef php: whitespace after each comma in array declaration 2023-01-31 11:42:13 +03:00
0cf90e86c7 php: trim array spaces 2023-01-31 11:32:59 +03:00
406de99b01 php: single space or none should be between cast and variable 2023-01-31 10:30:26 +03:00
f4bcb15d33 php: each element of an array must be indented exactly once 2023-01-31 10:17:54 +03:00
d2a0164738 Merge branch 'refactor/linter-formatting' of https://github.com/ONLYOFFICE/document-server-integration into refactor/linter-formatting 2023-01-31 10:02:56 +03:00
a49ef4cc13 php: lower case for constants "true", "false" and "null" 2023-01-31 09:59:37 +03:00
3ca29cd402 Merge branch 'feature/deploy' into develop 2023-01-31 00:48:16 +05:00
c398b30e33 build: exclude packages from csharp examples 2023-01-31 00:45:02 +05:00
8caea9fab0 java: fix dockerfile path 2023-01-31 00:45:02 +05:00
f44c62540c php: lower case for constants "true", "false" and "null" 2023-01-30 17:33:48 +03:00
7644db80e3 php: no multiple statements per line 2023-01-30 17:26:31 +03:00
880497cd01 php: curly opening braces on the same line 2023-01-30 17:18:37 +03:00
34f8174d9d php: no mixed "print" and "echo" 2023-01-30 17:02:09 +03:00
99bc9d3fdf php: useless "else" deleted 2023-01-30 16:36:58 +03:00
165c292ab8 php: extra blank lines deleted 2023-01-30 16:26:04 +03:00
8fe41cd8e6 php: used short syntax for arrays 2023-01-30 15:23:00 +03:00
705ea097e2 php: used PSR-2 standart for linter 2023-01-30 14:56:32 +03:00
f4799bebb4 php: added needed dependencies 2023-01-30 14:42:05 +03:00
4ffa524de0 Merge pull request #336 from ONLYOFFICE/bugfix/java-dockerfile
java: fix dockerfile path
2023-01-30 13:16:21 +03:00
cd055317e0 java: fix dockerfile path 2023-01-30 09:46:27 +00:00
b1941c5980 Merge branch 'develop' of https://github.com/ONLYOFFICE/document-server-integration into develop 2023-01-30 08:58:52 +03:00
83bc0fed5e Merge remote-tracking branch 'remotes/origin/master' into develop 2023-01-27 18:54:25 +05:00
8b71bb0433 Merge pull request #335 from ONLYOFFICE/release/1.5.0
Release/1.5.0
2023-01-27 13:48:34 +03:00
5620f49f8f Merge pull request #321 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/loofah-2.19.1
build(deps): bump loofah from 2.19.0 to 2.19.1 in /web/documentserver-example/ruby
2023-01-27 11:53:41 +03:00
d9fefef834 Merge branch 'develop' into dependabot/bundler/web/documentserver-example/ruby/loofah-2.19.1 2023-01-27 10:40:40 +03:00
37591d847c Merge pull request #323 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/rails-html-sanitizer-1.4.4
build(deps): bump rails-html-sanitizer from 1.4.3 to 1.4.4 in /web/documentserver-example/ruby
2023-01-26 17:36:27 +03:00
77290d88f3 build(deps): bump rails-html-sanitizer
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.4.3...v1.4.4)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 19:35:36 +05:00
6befd87761 Merge pull request #330 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/rack-2.2.6.2
build(deps): bump rack from 2.2.4 to 2.2.6.2 in /web/documentserver-example/ruby
2023-01-26 17:13:57 +03:00
f3e270c1ad Merge pull request #332 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/globalid-1.0.1
build(deps): bump globalid from 1.0.0 to 1.0.1 in /web/documentserver-example/ruby
2023-01-26 17:13:11 +03:00
f5f1e4b391 Merge pull request #333 from ONLYOFFICE/bugfix/saving-file
Bugfix/saving file
2023-01-26 15:20:30 +03:00
8ba389d02f Merge pull request #328 from ONLYOFFICE/bugfix/php-example-warnings
php: empty GET parameters warnings fixed
2023-01-25 22:33:06 +03:00
45910ff1f3 php: empty GET parameters warnings fixed
Empty GET-parameters "user", "directUrl",  "fileUrl", "fileExt" no longer give a warning, the example can work without them.
2023-01-26 00:11:03 +05:00
3bd6f51edc 1.5.0 2023-01-24 00:55:41 +05:00
fe9791f03d Merge pull request #320 from ONLYOFFICE/feature/putRelativeFile
Feature/put relative file
2023-01-22 11:57:22 +03:00
531137dca4 nodejs: log X-WOPI-FileConversion header 2023-01-22 13:57:01 +05:00
e267b30b26 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2023-01-22 13:14:39 +05:00
8733baa04b Merge pull request #327 from ONLYOFFICE/dependabot/npm_and_yarn/web/documentserver-example/nodejs/jsonwebtoken-9.0.0
build(deps): bump jsonwebtoken from 8.5.1 to 9.0.0 in /web/documentserver-example/nodejs
2023-01-22 11:11:08 +03:00
8cec9fc465 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2023-01-22 12:57:46 +05:00
7ec969f4d9 ruby: check file availability when saving 2023-01-22 12:51:46 +05:00
c7e13ef8a8 python: check file availability when saving 2023-01-22 12:51:46 +05:00
3d488f89b2 java: check file availability when saving 2023-01-22 12:50:30 +05:00
cc00af1510 java-spring: check file availability when saving 2023-01-22 12:23:07 +05:00
f8aa55143c csharp: check file availability when saving 2023-01-22 02:16:20 +05:00
1b44c04893 csharp-mvc: check file availability when saving 2023-01-22 02:16:20 +05:00
1585d1821e Merge pull request #325 from ONLYOFFICE/refactor/java-linter
Refactor/java linter
2023-01-22 00:01:26 +03:00
e996c4d265 Merge remote-tracking branch 'remotes/origin/develop' into refactor/java-linter
# Conflicts:
#	web/documentserver-example/java/src/main/java/entities/CommentGroups.java
#	web/documentserver-example/java/src/main/java/helpers/TrackManager.java
2023-01-22 01:59:44 +05:00
cc0c6189bd Merge pull request #324 from ONLYOFFICE/refactor/java-spring-linter
Refactor/java spring linter
2023-01-21 23:47:25 +03:00
ef7662c069 java-spring: Header formatting 2023-01-22 01:46:01 +05:00
79ff84a4cc Merge remote-tracking branch 'remotes/origin/develop' into refactor/java-spring-linter
# Conflicts:
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/managers/callback/DefaultCallbackManager.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/managers/history/DefaultHistoryManager.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/models/filemodel/Template.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/storage/FileStorageMutator.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/storage/FileStoragePathBuilder.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/util/Misc.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/util/SSLUtils.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/ChangesHistory.java
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/ChangesUser.java
2023-01-22 01:40:46 +05:00
e4bab17b08 Merge pull request #326 from ONLYOFFICE/fix/java-spring-example-link
Java Spring example fix in Readme
2023-01-21 23:20:53 +03:00
c734f5dd69 Merge pull request #322 from ONLYOFFICE/feature/remove-parsing-url
Feature/remove parsing url
2023-01-21 22:14:07 +03:00
d79feca18c remove parsing url for getting ext 2023-01-22 00:11:47 +05:00
3181c7449d Copyright 2023 2023-01-20 15:27:03 +05:00
8ea2edefb9 python: apache (8050ec572a) 2023-01-20 15:25:28 +05:00
1a51759154 build(deps): bump globalid in /web/documentserver-example/ruby
Bumps [globalid](https://github.com/rails/globalid) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rails/globalid/releases)
- [Commits](https://github.com/rails/globalid/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: globalid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 23:00:11 +00:00
77c4caa26f Merge branch 'feature/referenceData' into release/v7.3.0
# Conflicts:
#	web/documentserver-example/nodejs/app.js
#	web/documentserver-example/nodejs/views/editor.ejs
2023-01-19 10:27:07 +05:00
5944e41cb4 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2023-01-19 10:26:40 +05:00
09ccde3f84 nodejs: token in referenceData 2023-01-19 10:25:28 +05:00
b27e532a83 nodejs: referenceData 2023-01-19 10:15:41 +05:00
e9632eb5e2 nodejs: fileType in empty history (a7db14811f) 2023-01-19 10:03:31 +05:00
8807328180 build(deps): bump rack in /web/documentserver-example/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.2.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.2)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 01:22:30 +00:00
827e96c506 Merge branch 'develop' into release/v7.3.0 2023-01-17 13:45:43 +05:00
491cbbc843 nodejs: require token on download 2023-01-17 13:45:29 +05:00
68d26c9c66 Merge branch 'release/v7.3.0' into feature/putRelativeFile 2023-01-14 12:26:35 +05:00
80924be536 Merge branch 'develop' into release/v7.3.0 2023-01-14 12:25:50 +05:00
0ca829181c nodejs: convert icon
# Conflicts:
#	web/documentserver-example/nodejs/views/wopiIndex.ejs
2023-01-14 12:24:53 +05:00
64f085d4b7 build(deps): bump jsonwebtoken in /web/documentserver-example/nodejs
Bumps [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) from 8.5.1 to 9.0.0.
- [Release notes](https://github.com/auth0/node-jsonwebtoken/releases)
- [Changelog](https://github.com/auth0/node-jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jsonwebtoken/compare/v8.5.1...v9.0.0)

---
updated-dependencies:
- dependency-name: jsonwebtoken
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 03:15:32 +00:00
39c2267468 fixed commands for Java Spring example 2023-01-09 18:22:57 +03:00
22af4e097f java: MissingJavadocMethod suppress 2022-12-22 11:22:15 +03:00
1a1cde0f67 java: JavadocVariable suppress 2022-12-22 11:21:14 +03:00
1265ecdee1 java-spring: removed constant EXT_LENGTH_PART 2022-12-22 11:18:18 +03:00
19d11a97f9 java-spring: MissingJavadocMethod suppress 2022-12-22 11:15:58 +03:00
bf6f3373a6 java-spring: JavadocVariable suppress 2022-12-22 11:14:51 +03:00
1fb4d759a3 java-spring: JavadocPackage suppress 2022-12-22 10:49:28 +03:00
de33efa599 java: suppress JavadocPackage 2022-12-22 10:25:00 +03:00
6fa150ade6 java-spring: LineLength formatting 2022-12-22 09:49:09 +03:00
88f4b6327d java-spring: changing LineLength rules 2022-12-22 01:45:17 +03:00
82905fca6c java: LineLength formatting 2022-12-22 01:39:33 +03:00
ccb67ad73d java: changing fileExtensions rules
Max length lines is 120
2022-12-21 17:30:38 +03:00
5a233b8dc7 Revert "java: adding check files by ext"
This reverts commit 8924304bdb.
2022-12-21 17:00:40 +03:00
127183bb16 java: Header formatting 2022-12-21 16:55:10 +03:00
8924304bdb java: adding check files by ext 2022-12-21 16:51:09 +03:00
68dd1fc369 java: filling onlyoffice.header 2022-12-21 16:49:47 +03:00
7251cb1681 java: enable Header rule with template 2022-12-21 16:41:47 +03:00
a82e4b6bdf java: AvoidStarImport formatting 2022-12-21 16:36:32 +03:00
d2f2031fa7 java: HideUtilityClassConstructor formatting 2022-12-21 16:31:04 +03:00
4a902dff94 java: VisibilityModifier formatting 2022-12-21 16:22:54 +03:00
f26220683c java: MagicNumber formatting 2022-12-21 13:14:47 +03:00
c3e4533d1a java: suppress DesignForExtension 2022-12-21 12:15:00 +03:00
f6618c8c92 java: suppress ParameterNumber 2022-12-21 12:14:11 +03:00
efd710c6c0 java: added checkstyle-suppressions.xml 2022-12-21 12:12:06 +03:00
e106677efb java: FinalParameters formatting 2022-12-21 12:08:52 +03:00
ecd02e07c0 java: HiddenField formatting 2022-12-21 11:36:42 +03:00
847902fad9 java: ConstantName formatting 2022-12-21 11:29:45 +03:00
d4b5f86822 java: LocalVariableName formatting 2022-12-21 11:24:50 +03:00
7c35d8127d java: MethodName formatting 2022-12-21 11:03:59 +03:00
d023b23fc9 java: StaticVariableName formatting 2022-12-20 22:04:46 +03:00
8b10c5ac2e java: RegexpSingleline formatting 2022-12-20 22:00:15 +03:00
54bc536329 java: MethodParamPad formatting 2022-12-20 21:54:33 +03:00
07d7e5d887 java: ParenPad formatting 2022-12-20 21:50:49 +03:00
009577b52e java: NoWhitespaceAfter formatting 2022-12-20 21:49:05 +03:00
c1fd896be4 java: WhitespaceAfter formatting 2022-12-20 21:45:04 +03:00
033126583b java: WhitespaceAround formatting 2022-12-20 21:40:20 +03:00
3140d31e9c java: UpperEll formatting 2022-12-20 19:18:05 +03:00
92ea5151ad java: ParameterName formatting 2022-12-20 19:16:33 +03:00
ae4e4c14ad java: OperatorWrap formatting 2022-12-20 19:14:57 +03:00
9a9d3c0b35 java: NewlineAtEndOfFile formatting 2022-12-20 19:12:53 +03:00
13d3fe97d9 java: RightCurly formatting 2022-12-20 19:10:43 +03:00
5bfe32f796 java: MemberName formatting 2022-12-20 19:05:07 +03:00
5a1ad9139f java: SimplifyBooleanExpression formatting 2022-12-20 19:00:54 +03:00
91fbc384f3 java: MissingSwitchDefault formatting 2022-12-20 18:58:27 +03:00
9d275ebe6c java: NeedBraces formatting 2022-12-20 18:56:18 +03:00
09a5d802ec java: InnerAssignment formatting 2022-12-20 18:30:27 +03:00
b548ffb97e java: LeftCurly formatting 2022-12-20 18:23:24 +03:00
50b0c3d29e java: UnusedImports formatting 2022-12-20 16:40:47 +03:00
93b4560c31 java: EmptyBlock formatting 2022-12-20 16:38:24 +03:00
2e9807814a java: used custom checkstyle rules 2022-12-20 16:36:48 +03:00
d0cfd03bf8 java: updated maven-checkstyle-plugin to 3.2.0 2022-12-20 16:34:51 +03:00
72c14a4e7b java: used oracle rules for linter 2022-12-20 16:16:51 +03:00
44a3f29a79 java-spring: Header formatting 2022-12-20 12:09:37 +03:00
98dceacc4c java-spring: add header rule template 2022-12-20 12:08:50 +03:00
05f4063ba6 java-spring: enable Header rule 2022-12-20 12:07:19 +03:00
d5797f7c02 java-spring: HiddenField formatting 2022-12-20 11:41:06 +03:00
5f40faac2a java-spring: AvoidStarImport formatting 2022-12-20 11:34:36 +03:00
c062e554db java-spring: suppress ParameterNumber 2022-12-20 11:23:42 +03:00
41e44985d6 java-spring: suppress DesignForExtension 2022-12-20 11:22:35 +03:00
95e1135e86 java-spring: MagicNumber formatting 2022-12-20 11:18:57 +03:00
cafb79c8d5 java-spring: RegexpSingleline formatting 2022-12-19 18:50:55 +03:00
1dbc275a57 java-spring: FinalParameters formatting 2022-12-19 18:46:30 +03:00
6dd44d2094 java-spring: WhitespaceAfter formatting 2022-12-19 16:20:47 +03:00
b74a3c5565 java-spring: LocalVariableName formatting 2022-12-19 15:41:06 +03:00
27e5fa8482 java-spring: MemberName formatting 2022-12-19 12:35:04 +03:00
46dab40432 java-spring: UpperEll formatting 2022-12-19 12:27:20 +03:00
ebd4ead751 java-spring: NoWhitespaceAfter formatting 2022-12-19 12:23:37 +03:00
9014f96da3 java-spring: FileTabCharacter formatting 2022-12-19 12:19:59 +03:00
273e4d5b77 java-spring: OperatorWrap formatting 2022-12-19 12:14:07 +03:00
d8b6cdcf78 java-spring: TodoComment formatting 2022-12-19 11:57:33 +03:00
6e0899daaf java-spring: NewlineAtEndOfFile formatting 2022-12-19 11:49:15 +03:00
a5d459a744 java-spring: ParenPad formatting 2022-12-19 11:43:41 +03:00
dcb48f3849 java-spring: VisibilityModifier formatting 2022-12-19 11:36:09 +03:00
c8b3ed761e java-spring: WhitespaceAround formatting 2022-12-19 11:23:28 +03:00
01c8b23d1d java-spring: suppress HideUtilityClassConstructor 2022-12-16 16:32:16 +03:00
bf9373842b java-spring: added checkstyle-suppressions.xml 2022-12-16 16:30:19 +03:00
7eaf4f5ae7 java-spring: SimplifyBooleanExpression formatting 2022-12-16 16:22:22 +03:00
e09f258f25 java-spring: EqualsHashCode formatting 2022-12-16 16:16:17 +03:00
054e144d93 java-spring: EmptyStatement formatting 2022-12-16 16:12:00 +03:00
3b698eb974 java-spring: RightCurly formatting 2022-12-16 16:11:11 +03:00
c356d952be java-spring: LeftCurly formatting 2022-12-16 16:04:04 +03:00
b1f3704624 java-spring: NeedBraces formatting 2022-12-16 15:47:51 +03:00
1dd545dc9c java-spring: removed nested blocks 2022-12-16 15:07:25 +03:00
1f6dfb0677 java-spring: removed unused imports 2022-12-16 15:03:26 +03:00
b59874f54b java-spring: updated maven-checkstyle-plugin to 3.2.0 2022-12-16 14:46:43 +03:00
4d9f02c606 java-spring: used oracle rules for linter 2022-12-16 14:37:13 +03:00
c344a1d6a6 Merge branch 'feature/referenceData' into release/v7.3.0
# Conflicts:
#	web/documentserver-example/nodejs/app.js
#	web/documentserver-example/nodejs/views/config.ejs
2022-12-15 17:24:42 +03:00
a53f36eca3 nodejs: referenceData 2022-12-15 17:22:30 +03:00
ca49e5bdda build(deps): bump loofah in /web/documentserver-example/ruby
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.19.0...v2.19.1)

---
updated-dependencies:
- dependency-name: loofah
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-13 20:48:42 +00:00
4882459f51 Merge branch 'feature/referenceData' into release/v7.3.0
# Conflicts:
#	web/documentserver-example/nodejs/app.js
2022-12-13 16:28:15 +03:00
0a0f5b556c nodejs: referenceData 2022-12-13 16:27:18 +03:00
fdefc25479 Merge branch 'release/v7.3.0' into feature/putRelativeFile
# Conflicts:
#	web/documentserver-example/nodejs/views/wopiIndex.ejs
2022-12-12 17:34:05 +03:00
2502c2a979 Merge branch 'develop' into release/v7.3.0 2022-12-12 17:31:17 +03:00
be85920ce4 nodejs: rename wopi icons 2022-12-12 17:30:24 +03:00
7d7c10b3bc nodejs: update wopi editnew icon 2022-12-12 17:26:34 +03:00
1cbc6eca2e nodejs: wopi embedview icon 2022-12-12 17:25:10 +03:00
df83585352 nodejs: putRelativeFile to changelog 2022-12-09 14:37:35 +03:00
6979ec815e Merge remote-tracking branch 'remotes/origin/release/v7.3.0' into feature/putRelativeFile
# Conflicts:
#	web/documentserver-example/nodejs/views/wopiIndex.ejs
2022-12-09 14:36:02 +03:00
d007b0a969 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2022-12-09 14:34:36 +03:00
63f032d924 nodejs: revert editnew for existing file (ee46a77684) 2022-12-09 14:34:19 +03:00
96a9dd7990 [wopi] proper putRelativeFile realizaion 2022-12-09 13:35:45 +03:00
91d8fc2487 [wopi] Add putRelativeFile handler 2022-12-09 13:35:12 +03:00
ae64081f97 nodejs: convert icon 2022-12-09 11:44:06 +03:00
820cafe202 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.3.0 2022-12-09 11:24:36 +03:00
e0d7e416d3 nodejs: format condition 2022-12-09 11:23:33 +03:00
806aba967c csharp: replace equal("") 2022-12-09 10:45:41 +03:00
3ec226109e Merge remote-tracking branch 'remotes/origin/feature/referenceData' into release/v7.3.0 2022-12-01 12:14:12 +03:00
b1f0fa6ecc nodejs: referenceData 2022-12-01 11:55:32 +03:00
b02ffff33e nodejs: do not send link in referenceData 2022-12-01 11:17:49 +03:00
f74f0ba376 Merge branch 'develop' into release/v7.3.0
# Conflicts:
#	.github/workflows/lint-python.yml
#	.github/workflows/lint-ruby.yml
#	CHANGELOG.md
#	web/documentserver-example/nodejs/app.js
2022-12-01 10:54:40 +03:00
96d3bf2e63 Merge remote-tracking branch 'remotes/origin/master' into develop
# Conflicts:
#	.github/workflows/lint-python.yml
#	.github/workflows/lint-ruby.yml
2022-12-01 10:49:29 +03:00
daf4f62acd nodejs: normal wopi url after release v7.1 (fd456f59e8) 2022-12-01 10:46:35 +03:00
ade8a07e95 nodejs: fix wopi after restart 2022-12-01 10:46:34 +03:00
8b613627d1 ci: github actions 2022-12-01 10:46:34 +03:00
3d3a10005c lang to changelog 2022-12-01 10:46:34 +03:00
801c451899 tooltip to changelog 2022-12-01 10:46:34 +03:00
df034c2af2 csharp-mvc: fixed tooltip 2022-12-01 10:46:33 +03:00
9726c06c84 csharp: fixed tooltip 2022-12-01 10:46:33 +03:00
3a45e1b0f3 python: fixed tooltip 2022-12-01 10:46:33 +03:00
ed8d0194b7 ruby: fixed tooltip 2022-12-01 10:46:32 +03:00
a59da2d5df php: fixed tooltip 2022-12-01 10:46:32 +03:00
f5c9a9e924 java: fixed tooltip 2022-12-01 10:46:32 +03:00
7b12b970c0 java-spring: fixed tooltip 2022-12-01 10:46:32 +03:00
87a11c8633 ruby: deleting uid cookie 2022-12-01 10:46:31 +03:00
01e0cefae5 ruby: deleting uid cookie 2022-12-01 10:46:31 +03:00
98d42249fa node: added fake language 2022-12-01 10:46:31 +03:00
fd9454dd5f csharp: added fake language 2022-12-01 10:46:30 +03:00
fbf4153dea csharp-mvc: added fake language 2022-12-01 10:46:30 +03:00
83b0411a4d php: added fake language 2022-12-01 10:46:30 +03:00
c60e4e25e2 python: added fake language 2022-12-01 10:46:30 +03:00
4ebbecf580 ruby: added fake language 2022-12-01 10:46:29 +03:00
6dbf383e2d java-spring: added fake language 2022-12-01 10:46:29 +03:00
1012bf13a6 java: added fake language 2022-12-01 10:46:29 +03:00
a24e081564 php: added request timeout for download 2022-12-01 10:46:28 +03:00
187ee212a9 csharp-mvc: added request timeout for download 2022-12-01 10:46:28 +03:00
106d9bfed3 csharp: added request timeout for download 2022-12-01 10:46:28 +03:00
13e243f900 python: added request status check for file 2022-12-01 10:46:28 +03:00
4ccc3fa35e ruby: added request status check for file 2022-12-01 10:46:27 +03:00
be1fa2da14 java: added request status check for file 2022-12-01 10:46:27 +03:00
b6645427a8 java-spring: added request status check for file 2022-12-01 10:46:27 +03:00
39d7c366e3 nodejs: init type argument (fix ab03bb5490) 2022-12-01 10:46:26 +03:00
075f464701 fix changelog about directUrl task 2022-12-01 10:46:26 +03:00
9414dff70c Change CHANGELOG.md 2022-12-01 10:46:26 +03:00
05b8989a87 csharp: option to send directUrl 2022-12-01 10:46:26 +03:00
43b6f53652 csharp-mvc: fix label for aspx 2022-12-01 10:46:25 +03:00
c22c0d72aa Change CHANGELOG.md 2022-12-01 10:46:25 +03:00
d61c112aa2 Change CHANGELOG.md 2022-12-01 10:46:25 +03:00
ae3def67f5 python: option to send directUrl 2022-12-01 10:46:24 +03:00
7c22ba4e9e csharp-mvc: option to send directUrl 2022-12-01 10:46:24 +03:00
320881f1cf Change CHANGELOG.md 2022-12-01 10:46:24 +03:00
90c31eb887 php: option to send directUrl 2022-12-01 10:46:24 +03:00
702d0f1aa8 Change CHANGELOG.md 2022-12-01 10:46:23 +03:00
dbf1047f29 ruby: option to send directUrl 2022-12-01 10:46:23 +03:00
0d27d142d4 Change CHANGELOG.md 2022-12-01 10:46:23 +03:00
807cbbf236 java: option to send directUrl 2022-12-01 10:46:23 +03:00
e6b0bfd0be Change CHANGELOG.md 2022-12-01 10:46:22 +03:00
943d059c7c java-spring: fix option to send directUrl 2022-12-01 10:46:22 +03:00
399ab0714d java-spring: option to send directUrl 2022-12-01 10:46:22 +03:00
8cabbe9c71 java-spring: tooltip fix 2022-12-01 10:46:21 +03:00
e40b6b2e28 java-spring: option to send directUrl 2022-12-01 10:46:21 +03:00
0a390094e5 java-spring: option to send directUrl 2022-12-01 10:46:21 +03:00
f7bb668f8b Merge pull request #317 from ONLYOFFICE/feature/fix-linter
Feature/fix linter
2022-12-01 09:52:11 +03:00
808712ad34 fix: rubocop 2022-12-01 09:48:00 +03:00
2b0ba914dc fix: pylint 2022-12-01 09:48:00 +03:00
249adaab48 fix: java linter 2022-12-01 09:48:00 +03:00
ee99a80ead fix: nodejs eslint 2022-12-01 09:48:00 +03:00
d61fdaaa53 nodejs: normal wopi url after release v7.1 (fd456f59e8) 2022-11-30 11:04:27 +03:00
270cbee160 nodejs: fix wopi after restart 2022-11-30 10:37:34 +03:00
e9721dd655 ci: github actions 2022-11-29 13:14:57 +03:00
a31a24a871 Merge pull request #313 from ONLYOFFICE/feature/actions
feature/actions
2022-11-29 13:13:50 +03:00
df0e197cb5 Merge pull request #315 from ONLYOFFICE/feature/fake-language
Feature/fake language
2022-11-28 16:53:24 +03:00
09802afc6f lang to changelog 2022-11-28 16:52:06 +03:00
1c43679d87 Merge remote-tracking branch 'remotes/origin/develop' into feature/fake-language 2022-11-28 16:50:53 +03:00
573eeb6e18 node: added fake language 2022-11-28 16:49:47 +03:00
78cf6c35f8 csharp: added fake language 2022-11-28 16:49:47 +03:00
c7f5003d69 csharp-mvc: added fake language 2022-11-28 16:49:46 +03:00
19baff4340 php: added fake language 2022-11-28 16:49:46 +03:00
cc5c912658 Merge pull request #312 from ONLYOFFICE/bugfix/tooltip-fix
Bugfix/tooltip fix
2022-11-28 16:34:22 +03:00
64f2d605c2 tooltip to changelog 2022-11-28 16:33:43 +03:00
c9fca685bf Merge pull request #311 from ONLYOFFICE/bugfix/delete-uid-cookie
ruby: deleting uid cookie
2022-11-28 16:22:37 +03:00
820883a584 python: added fake language 2022-11-24 13:15:33 +03:00
05a00a33a3 ruby: added fake language 2022-11-24 13:14:19 +03:00
613cb713cc java-spring: added fake language 2022-11-24 13:13:45 +03:00
9216ff3a97 java: added fake language 2022-11-24 13:12:51 +03:00
dbaa7c5113 Merge pull request #310 from ONLYOFFICE/bugfix/file-request-status
Bugfix/file request status
2022-11-21 13:25:47 +03:00
d6ad145111 nodejs: init type argument (fix ab03bb5490) 2022-11-18 13:51:11 +03:00
456df162e6 ci: github actions 2022-11-16 17:53:02 +05:00
50fd47cf7c csharp-mvc: fixed tooltip 2022-11-15 14:33:15 +03:00
f9c0da1696 csharp: fixed tooltip 2022-11-15 14:31:57 +03:00
a7807513c6 python: fixed tooltip 2022-11-15 13:55:25 +03:00
128430d698 ruby: fixed tooltip 2022-11-15 13:52:52 +03:00
8077a66f16 php: fixed tooltip 2022-11-15 13:51:15 +03:00
b3d8695a26 java: fixed tooltip 2022-11-15 13:23:24 +03:00
00872758ee java-spring: fixed tooltip 2022-11-15 13:00:15 +03:00
3301c24de5 ruby: deleting uid cookie 2022-11-15 12:09:03 +03:00
dd0c049a70 ruby: deleting uid cookie 2022-11-15 10:55:02 +03:00
44fb3a089c php: added request timeout for download 2022-11-11 14:58:36 +03:00
513bf99adb csharp-mvc: added request timeout for download 2022-11-11 12:23:39 +03:00
6f92633ef8 csharp: added request timeout for download 2022-11-11 12:23:28 +03:00
b67e768dce python: added request status check for file 2022-11-10 19:07:17 +03:00
751a886bfa ruby: added request status check for file 2022-11-10 19:06:29 +03:00
66ea4b144b java: added request status check for file 2022-11-10 19:05:32 +03:00
7a73422231 java-spring: added request status check for file 2022-11-10 19:04:49 +03:00
5319e18fb5 Merge pull request #309 from ONLYOFFICE/release/1.4.0
Release/1.4.0
2022-11-08 16:37:37 +03:00
93accdac7c nodejs: do not send key in referenceData 2022-11-08 16:33:19 +03:00
def268f5f2 Merge remote-tracking branch 'remotes/origin/release/1.4.0' into develop 2022-11-08 10:42:00 +03:00
6054bffb3f Merge pull request #305 from ONLYOFFICE/dependabot/maven/web/documentserver-example/java-spring/com.fasterxml.jackson.core-jackson-databind-2.13.4.1
build(deps): bump jackson-databind from 2.12.6.1 to 2.13.4.1 in /web/documentserver-example/java-spring
2022-11-08 10:31:57 +03:00
a7c917db3f Merge remote-tracking branch 'remotes/origin/release/1.4.0' into develop 2022-11-08 09:18:02 +03:00
30481005a1 removed enum Language (Fix Bug 59624) 2022-11-08 09:17:30 +03:00
5544768500 set language from cookies (Fix Bug 59352) 2022-11-08 09:17:22 +03:00
14e53970c8 update pyjwt=2.6.0 (Fix Bug 59369) 2022-11-08 09:16:37 +03:00
82efd0f18a fix 848cfb20bc 2022-11-07 14:23:01 +03:00
8ce90d89ed removed enum Language (Fix Bug 59624) 2022-11-07 13:07:34 +03:00
2b184972dc Merge pull request #306 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/nokogiri-1.13.9
build(deps): bump nokogiri from 1.13.8 to 1.13.9 in /web/documentserver-example/ruby
2022-11-03 14:46:55 +03:00
0fb9da4d89 update pom.xml 2022-11-03 14:11:05 +03:00
9277d3de58 Merge branch 'feature/optionDirectUrl' into develop 2022-11-03 13:34:47 +03:00
baf7a1e5dd fix changelog about directUrl task 2022-11-03 13:34:15 +03:00
e2a14a74db Merge pull request #308 from ONLYOFFICE/feature/optionDirectUrl
Feature/option direct url
2022-11-03 13:33:20 +03:00
848cfb20bc set language from cookies (Fix Bug 59352) 2022-11-03 12:05:53 +03:00
ddd3ec82a8 update pyjwt=2.6.0 (Fix Bug 59369) 2022-11-03 10:47:39 +03:00
0ed08fd7b2 Change CHANGELOG.md 2022-11-02 14:58:12 +03:00
e1c5907003 csharp: option to send directUrl 2022-11-02 14:54:33 +03:00
9dd2d7c0db csharp-mvc: fix label for aspx 2022-11-02 14:49:40 +03:00
8f0cbb78af Change CHANGELOG.md 2022-11-02 13:10:39 +03:00
72e48914aa Merge branch 'feature/optionDirectUrl' of https://github.com/ONLYOFFICE/document-server-integration into feature/optionDirectUrl 2022-11-02 13:05:45 +03:00
82a282029a csharp-mvc: option to send directUrl 2022-11-02 13:05:08 +03:00
9b7c12b5c0 Change CHANGELOG.md 2022-11-01 23:10:46 +03:00
6ea5546099 python: option to send directUrl 2022-11-01 23:09:36 +03:00
92fbd1e293 Change CHANGELOG.md 2022-10-28 16:48:05 +03:00
855c1ed9f9 php: option to send directUrl 2022-10-28 16:47:08 +03:00
7e60ec15fd Change CHANGELOG.md 2022-10-28 13:56:28 +03:00
3697a4a888 ruby: option to send directUrl 2022-10-28 13:55:48 +03:00
0b8107d167 Change CHANGELOG.md 2022-10-28 13:52:11 +03:00
885850ee33 java: option to send directUrl 2022-10-27 14:32:21 +03:00
98c61250a6 Change CHANGELOG.md 2022-10-26 16:54:16 +03:00
457487844c java-spring: fix option to send directUrl 2022-10-26 16:47:43 +03:00
ff72956b68 java-spring: option to send directUrl 2022-10-26 16:41:59 +03:00
1593df6aec build(deps): bump nokogiri in /web/documentserver-example/ruby
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.8 to 1.13.9.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.8...v1.13.9)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 10:46:51 +00:00
cda8a86c2a Merge remote-tracking branch 'remotes/origin/release/1.4.0' into develop 2022-10-26 13:40:30 +03:00
16584c0abb Merge remote-tracking branch 'remotes/origin/hotfix/1.3.1' into release/1.4.0
# Conflicts:
#	CHANGELOG.md
#	web/documentserver-example/csharp/settings.config
#	web/documentserver-example/ruby/config/application.rb
2022-10-26 13:39:29 +03:00
1ddda89001 Merge pull request #307 from ONLYOFFICE/hotfix/1.3.1
Hotfix/1.3.1
2022-10-26 13:37:19 +03:00
5b76d798fb 1.3.1 2022-10-26 13:28:18 +03:00
e96200df85 java-spring: tooltip fix 2022-10-26 11:53:50 +03:00
de75b11e18 java-spring: option to send directUrl 2022-10-26 11:48:11 +03:00
f27afe1535 java-spring: option to send directUrl 2022-10-25 19:44:39 +03:00
59e17079ff build(deps): bump jackson-databind
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.6.1 to 2.13.4.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-19 07:08:15 +00:00
1bdb3c03bc Merge remote-tracking branch 'remotes/origin/feature/referenceData' into develop 2022-10-14 10:22:24 +03:00
111dc14f2b nodejs: referenceData 2022-10-14 10:20:45 +03:00
4a656c025f 1.4.0 2022-10-14 10:12:48 +03:00
ce9930e5bc java-spring: fixed footer positioning 2022-10-12 11:12:59 +03:00
9da22d7803 java-spring: fixed sorting of the list of languages 2022-10-12 11:00:01 +03:00
d78c677c99 java: fixed sorting of the list of languages 2022-10-12 10:59:41 +03:00
b204142c13 csharp: include assets 2022-10-11 18:04:21 +03:00
fd1c26ab9f csharp-mvc: reload refs 2022-10-11 17:53:14 +03:00
5993d10bee csharp-mvc: fix ref 2022-10-11 17:23:16 +03:00
c5771c9008 sharp-mvc: Fix merge 24aee6d194 2022-10-11 17:22:49 +03:00
2fad227272 Merge remote-tracking branch 'remotes/origin/release/v7.2.0' into develop 2022-10-05 13:33:43 +03:00
ada438ff0b Merge remote-tracking branch 'remotes/origin/develop' into release/v7.2.0 2022-09-28 09:13:23 +03:00
0dbd65a577 ruby: rails 7.0.3.1 2022-09-27 19:03:26 +03:00
48e5b8d4e0 Merge pull request #304 from ONLYOFFICE/dependabot/nuget/web/documentserver-example/csharp/Newtonsoft.Json-13.0.1
build(deps): bump Newtonsoft.Json from 10.0.3 to 13.0.1 in /web/documentserver-example/csharp
2022-09-27 18:26:31 +03:00
7f08a96681 Merge remote-tracking branch 'remotes/origin/develop' into dependabot/nuget/web/documentserver-example/csharp/Newtonsoft.Json-13.0.1
# Conflicts:
#	web/documentserver-example/csharp/packages.config
2022-09-27 18:26:07 +03:00
3549b4bc2a csharp: Newtonsoft.Json update 2022-09-27 18:24:53 +03:00
c9265d9ddc csharp-mvc: fix dep path 2022-09-27 18:08:47 +03:00
44d9ca88c6 build(deps): bump Newtonsoft.Json in /web/documentserver-example/csharp
Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 10.0.3 to 13.0.1.
- [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)
- [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/10.0.3...13.0.1)

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-27 14:59:15 +00:00
d964b43087 Merge pull request #303 from ONLYOFFICE/develop
Release/v1.3.0
2022-09-27 17:58:46 +03:00
5a0debd9e8 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.2.0 2022-09-27 17:55:26 +03:00
3b0f942eee Merge pull request #302 from ONLYOFFICE/feature/ruby-3.0.0
support ruby v.3
2022-09-27 17:54:59 +03:00
4ee110c2d5 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.2.0
# Conflicts:
#	web/documentserver-example/nodejs/views/config.ejs
#	web/documentserver-example/ruby/app/models/document_helper.rb
2022-09-15 17:17:24 +03:00
ad1d93dd20 Merge pull request #301 from ONLYOFFICE/bugfix/file-request
added request status check for file
2022-09-15 14:43:19 +03:00
d2d98df5ab support ruby v.3 2022-09-01 16:56:38 +03:00
7805f7dc91 added request status check for file 2022-09-01 09:34:30 +03:00
51ec27d67c nodejs: removed trailing comma 2022-08-25 15:47:10 +03:00
9e94716df0 nodejs: reorder config items 2022-08-16 10:15:39 +03:00
988a8339b1 ruby: ERB::Util.url instead URI::encode 2022-08-15 11:10:02 +03:00
a482635e3f Merge branch 'feature/directUrl' into release/v7.2.0 2022-08-03 12:20:57 +03:00
d2c679f6b1 nodejs: option to send directUrl 2022-08-03 12:20:39 +03:00
1da452d857 Merge branch 'feature/directUrl' into release/v7.2.0 2022-08-03 12:20:18 +03:00
d9b8d2b7e9 directUrl to changelog 2022-08-03 12:14:16 +03:00
24aee6d194 Merge branch 'release/v7.2.0' into feature/directUrl
# Conflicts:
#	web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs
#	web/documentserver-example/csharp/DocEditor.aspx.cs
2022-08-03 12:13:12 +03:00
bd108a9c77 fix changelog 2022-08-03 12:11:01 +03:00
e737e8ed48 Merge remote-tracking branch 'remotes/origin/develop' into release/v7.2.0 2022-08-03 12:10:20 +03:00
b425d15f0a Merge branch 'feature/tooltip' into develop 2022-08-03 12:09:47 +03:00
0f8dec1e6e nodejs: revert tooltip for language (e1753a154d) 2022-08-03 12:08:10 +03:00
193b31fe75 nodejs: id to info block 2022-08-03 11:59:58 +03:00
583403cf78 update empty files (Fix Bug 58202) 2022-08-02 16:50:01 +03:00
641e45e24f 1.3.0 2022-08-02 15:35:18 +03:00
53c30fbb7d Merge branch 'develop' into release/v7.2.0
# Conflicts:
#	CHANGELOG.md
#	web/documentserver-example/csharp-mvc/Helpers/Users.cs
#	web/documentserver-example/csharp/Users.cs
#	web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/ExampleData.java
#	web/documentserver-example/java/src/main/java/helpers/Users.java
#	web/documentserver-example/nodejs/app.js
#	web/documentserver-example/nodejs/helpers/users.js
#	web/documentserver-example/php/users.php
#	web/documentserver-example/python/src/utils/users.py
#	web/documentserver-example/ruby/app/models/users.rb
2022-08-02 15:04:09 +03:00
87a1755729 Merge pull request #300 from ONLYOFFICE/feature/ruby-bundle-update
ruby: bundle update
2022-08-02 14:32:40 +03:00
752a2a2364 Merge pull request #298 from ONLYOFFICE/fix/notification-incorrect-file-size
Fix/notification incorrect file size
2022-08-02 14:32:40 +03:00
d1affa2911 Merge pull request #297 from ONLYOFFICE/feature/refactoring-jwt-manager
Feature/refactoring jwt manager
# Conflicts:
#	CHANGELOG.md
2022-08-02 14:32:31 +03:00
0ef2a4f3fd Merge pull request #292 from ONLYOFFICE/Build(deps)/bot-recommendations
changes - ruby - raise gem version
2022-08-02 14:25:18 +03:00
675d3f318a Merge pull request #294 from ONLYOFFICE/dependabot/nuget/web/documentserver-example/csharp-mvc/Newtonsoft.Json-13.0.1
build(deps): bump Newtonsoft.Json from 12.0.3 to 13.0.1 in /web/documentserver-example/csharp-mvc
2022-08-02 14:25:18 +03:00
05512ffa23 Merge pull request #288 from ONLYOFFICE/feature/localhost-for-client
Localhost for client urls
2022-08-02 14:25:17 +03:00
2eeed5d26d Fix #287 Fix #285 Fix #284 Fix #280
Build(deps)/bot recommendations
2022-08-02 14:24:11 +03:00
9e3dbd5eb5 Merge pull request #290 from ONLYOFFICE/fix/php-convert-manager
fix - php - add substrings to string
2022-08-02 14:21:09 +03:00
efbab7c113 nodejs: fix embed link for client request 2022-08-02 14:20:48 +03:00
b8f0f6447c nodejs: remove getlocalFileUri 2022-08-02 14:20:48 +03:00
8779a90433 nodejs: fix history url for server request 2022-08-02 14:20:48 +03:00
b3162ee410 Merge pull request #278 from ONLYOFFICE/dependabot/maven/web/documentserver-example/java-spring/com.fasterxml.jackson.core-jackson-databind-2.12.6.1
build(deps): bump jackson-databind from 2.12.2 to 2.12.6.1 in /web/documentserver-example/java-spring
2022-08-02 14:18:23 +03:00
42edd5e208 Merge pull request #276 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/nokogiri-1.13.4
build(deps): bump nokogiri from 1.12.5 to 1.13.4 in /web/documentserver-example/ruby
2022-08-02 14:18:23 +03:00
e041baeef7 Merge branch 'feature/extension-on-rename' into develop 2022-08-02 14:18:22 +03:00
5bf682a007 nodejs: package lock 2022-08-02 14:18:22 +03:00
6dacf49faa ruby: fix (23e616aade) 2022-08-02 14:18:22 +03:00
63c9c4242e Merge pull request #291 from ONLYOFFICE/feature/chat
Feature/chat
# Conflicts:
#	CHANGELOG.md
2022-08-02 14:18:21 +03:00
b5e345ed50 Merge branch 'feature/chat' into develop 2022-08-02 14:18:21 +03:00
33f8436d42 changelog 2022-08-02 14:18:20 +03:00
c5217242ab Merge pull request #300 from ONLYOFFICE/feature/ruby-bundle-update
ruby: bundle update
2022-08-01 14:34:39 +03:00
c910d5193b Merge remote-tracking branch 'remotes/origin/dependabot/bundler/web/documentserver-example/ruby/rails-html-sanitizer-1.4.3' into feature/ruby-bundle-update
# Conflicts:
#	web/documentserver-example/ruby/Gemfile.lock
2022-08-01 14:34:05 +03:00
58c27f8f2f ruby: bundle update 2022-08-01 12:56:57 +03:00
1ec831789b Merge pull request #298 from ONLYOFFICE/fix/notification-incorrect-file-size
Fix/notification incorrect file size
2022-07-29 17:37:36 +03:00
0510fd1354 [fix] - node.js - don't send file size limit to incoming form
Revert "nodejs: upload big file"
This reverts commit fa4c3e3258.
2022-07-29 17:31:22 +03:00
25238b5614 Merge pull request #293 from ONLYOFFICE/feature/liveview
Feature/liveview
2022-07-29 17:23:48 +03:00
901bb61883 Merge remote-tracking branch 'remotes/origin/develop' into feature/liveview
# Conflicts:
#	CHANGELOG.md
2022-07-29 17:21:54 +03:00
7f3e6c6364 Merge pull request #291 from ONLYOFFICE/feature/chat
Feature/chat
2022-07-29 17:18:24 +03:00
b3512ea0ce Merge remote-tracking branch 'remotes/origin/develop' into feature/chat
# Conflicts:
#	CHANGELOG.md
2022-07-29 17:16:54 +03:00
642a1bd19a Merge pull request #297 from ONLYOFFICE/feature/refactoring-jwt-manager
Feature/refactoring jwt manager
2022-07-29 17:13:08 +03:00
ac471588de jwt to changelog 2022-07-29 17:12:20 +03:00
17674ef5bc ruby: licenses 2022-07-29 17:12:12 +03:00
dc2ee2a997 php: jwt 2022-07-29 17:12:02 +03:00
c358fa814a csharp-mvc: jwt 2022-07-29 17:11:05 +03:00
143a73e083 csharp: jwt 2022-07-29 17:10:37 +03:00
c266592434 Merge pull request #292 from ONLYOFFICE/Build(deps)/bot-recommendations
changes - ruby - raise gem version
2022-07-29 11:55:36 +03:00
19ed666d56 Merge pull request #294 from ONLYOFFICE/dependabot/nuget/web/documentserver-example/csharp-mvc/Newtonsoft.Json-13.0.1
build(deps): bump Newtonsoft.Json from 12.0.3 to 13.0.1 in /web/documentserver-example/csharp-mvc
2022-07-29 11:53:18 +03:00
84b9202af0 Merge pull request #288 from ONLYOFFICE/feature/localhost-for-client
Localhost for client urls
2022-07-29 11:51:09 +03:00
8fb698bb75 Basque (Spain), Armenian and Malay (Malaysia) lang 2022-07-29 11:38:25 +03:00
00f46ef080 build(deps): bump rails-html-sanitizer
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.4.2...v1.4.3)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 12:11:57 +00:00
5c194da95d [add] - java - directUrl 2022-07-04 19:46:34 +03:00
0d5cebe28e [add] - java spring - directUrl 2022-07-04 19:45:37 +03:00
dacf72cae2 [add] - csharp mvc - directUrl 2022-07-01 19:29:52 +03:00
208b8926be [add] - csharp - directUrl 2022-07-01 19:28:55 +03:00
55c4853f04 [add] - php - directUrl 2022-07-01 17:30:18 +03:00
ccae7c6a06 [add] - python - directUrl 2022-06-30 20:29:04 +03:00
dc84dd3b29 [add] - ruby - fix 2022-06-30 19:53:44 +03:00
65d3671b09 [add] - ruby - directUrl 2022-06-30 19:15:15 +03:00
1fb5ef8bfd build(deps): bump Newtonsoft.Json
Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 12.0.3 to 13.0.1.
- [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)
- [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/12.0.3...13.0.1)

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 00:47:07 +00:00
b630c3802b fix - ruby - coEditing from permissions to editorConfig 2022-06-16 16:56:18 +03:00
ad3993b532 fix - ruby - coEditing from permissions to editorConfig 2022-06-16 16:52:51 +03:00
35ee61e011 fix - python - checking mode view insert edit 2022-06-16 16:48:01 +03:00
ee59ab3dfd fix - python - coEditing from permissions to editorConfig 2022-06-16 16:43:48 +03:00
500f076e38 fix - csharp - coEditing from permissions to editorConfig 2022-06-16 16:36:51 +03:00
e578f29d9d fix - csharp mvc - coEditing from permissions to editorConfig 2022-06-16 16:35:57 +03:00
9de9bc90a4 fix - java - checking mode view insert edit 2022-06-16 16:32:36 +03:00
7a9ebdbbe5 fix - java - coEditing from permissions to editorConfig 2022-06-16 16:26:03 +03:00
887089bcad add - java spring - anonymous without liveview 2022-06-16 16:11:29 +03:00
680e53823a add - java - anonymous without liveview 2022-06-15 21:08:18 +03:00
33e1489cd6 add - charp mvc - anonymous without liveview 2022-06-15 20:41:32 +03:00
8c90737bf6 add - charp - anonymous without liveview 2022-06-15 20:38:16 +03:00
e5f1bc8ed6 add - php - anonymous without liveview 2022-06-15 20:23:52 +03:00
985b179475 add - python - anonymous without liveview 2022-06-15 20:03:07 +03:00
775d15132f add - ruby - json transform 2022-06-15 19:39:00 +03:00
4a4298ca10 add - ruby - anonymous without liveview 2022-06-15 19:30:36 +03:00
cdbd264ed5 Merge branch 'feature/chat' into feature/liveview
# Conflicts:
#	CHANGELOG.md
2022-06-15 19:21:30 +03:00
e61f6cae89 changes - ruby - raise gem version 2022-06-15 19:10:58 +03:00
22039078ef Merge remote-tracking branch 'remotes/origin/develop' into feature/chat 2022-06-15 18:38:12 +03:00
62793a42ab add - java spring - anonymous without permissions.chat 2022-06-15 18:09:14 +03:00
f49f96a2c2 add - java - anonymous without permissions.chat 2022-06-14 20:16:06 +03:00
2031d65adb add - csharp mvc - anonymous without permissions.chat 2022-06-14 19:53:12 +03:00
7f54659d3b add - csharp - anonymous without permissions.chat 2022-06-14 19:50:44 +03:00
a3bc13bb6e add - php - anonymous without permissions.chat 2022-06-14 19:45:46 +03:00
29ea16c124 add - python - anonymous without permissions.chat 2022-06-14 19:37:42 +03:00
6d4c8b926e add - ruby - anonymous without permissions.chat 2022-06-14 19:25:53 +03:00
22d2031426 fix - csharp - replace with regex 2022-06-14 18:10:18 +03:00
fcc51e8154 fix - csharp-mvc - check if '/' exist + replace with regex 2022-06-14 18:08:46 +03:00
8cd85ad63c Fix #287 Fix #285 Fix #284 Fix #280
Build(deps)/bot recommendations
2022-06-14 17:20:47 +03:00
1d51688884 Merge pull request #290 from ONLYOFFICE/fix/php-convert-manager
fix - php - add substrings to string
2022-06-14 17:05:02 +03:00
2c63a85b00 fix - php - add substrings to string 2022-06-14 16:55:12 +03:00
d1545c4db4 csharp-mvc-fix folder display for localhost 2022-06-10 18:37:17 +03:00
bd8e4d6ec7 csharp-fix goback 2022-06-10 18:31:22 +03:00
e1c815b574 Fix folder display for localhost 2022-06-10 18:29:44 +03:00
4042d2bb8a Merge remote-tracking branch 'remotes/origin/dependabot/maven/web/documentserver-example/java-spring/com.google.code.gson-gson-2.8.9' into build(deps)/bot-recommendations 2022-06-10 16:14:14 +03:00
8c9d2d80bd Merge remote-tracking branch 'remotes/origin/dependabot/maven/web/documentserver-example/java/com.google.code.gson-gson-2.8.9' into build(deps)/bot-recommendations 2022-06-10 16:13:53 +03:00
3a9259d713 Merge remote-tracking branch 'remotes/origin/dependabot/bundler/web/documentserver-example/ruby/rack-2.2.3.1' into build(deps)/bot-recommendations
# Conflicts:
#	web/documentserver-example/ruby/Gemfile.lock
2022-06-10 16:13:02 +03:00
39129a537e Merge remote-tracking branch 'remotes/origin/dependabot/bundler/web/documentserver-example/ruby/nokogiri-1.13.6' into build(deps)/bot-recommendations
# Conflicts:
#	web/documentserver-example/ruby/Gemfile.lock
2022-06-10 16:07:32 +03:00
dfaf552bf8 ruby-fix - use client URL in goBack 2022-06-09 19:30:43 +03:00
cc8b6f3716 nodejs: directUrl 2022-06-09 13:23:43 +03:00
13726b3c2f nodejs: fix embed link for client request 2022-06-09 13:18:06 +03:00
8bcc15e320 nodejs: remove getlocalFileUri 2022-06-09 13:07:02 +03:00
8fca045dd7 nodejs: fix history url for server request 2022-06-09 12:15:04 +03:00
a018cc5787 Merge remote-tracking branch 'remotes/origin/master' into develop 2022-06-03 11:09:35 +03:00
054236ef8a build(deps): bump rack in /web/documentserver-example/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 16:45:08 +00:00
e662c765e6 build(deps): bump gson in /web/documentserver-example/java-spring
Bumps [gson](https://github.com/google/gson) from 2.8.5 to 2.8.9.
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.8.5...gson-parent-2.8.9)

---
updated-dependencies:
- dependency-name: com.google.code.gson:gson
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 22:07:08 +00:00
058bb0d2e2 build(deps): bump gson in /web/documentserver-example/java
Bumps [gson](https://github.com/google/gson) from 2.8.5 to 2.8.9.
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.8.5...gson-parent-2.8.9)

---
updated-dependencies:
- dependency-name: com.google.code.gson:gson
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 20:58:39 +00:00
ac78d1fc08 build(deps): bump nokogiri in /web/documentserver-example/ruby
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.3 to 1.13.6.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.3...v1.13.6)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 03:44:52 +00:00
070dac6878 Merge remote-tracking branch 'remotes/origin/master' into develop 2022-05-12 13:22:41 +03:00
cfa0fb1b74 Merge pull request #278 from ONLYOFFICE/dependabot/maven/web/documentserver-example/java-spring/com.fasterxml.jackson.core-jackson-databind-2.12.6.1
build(deps): bump jackson-databind from 2.12.2 to 2.12.6.1 in /web/documentserver-example/java-spring
2022-04-25 16:57:39 +03:00
1d624e6831 Merge pull request #276 from ONLYOFFICE/dependabot/bundler/web/documentserver-example/ruby/nokogiri-1.13.4
build(deps): bump nokogiri from 1.12.5 to 1.13.4 in /web/documentserver-example/ruby
2022-04-25 16:56:55 +03:00
fe83e98b37 Merge branch 'feature/extension-on-rename' into develop 2022-04-25 14:27:32 +03:00
f9ea7f7b50 nodejs: package lock 2022-04-25 14:27:28 +03:00
328ea46693 format 2022-04-25 14:20:41 +03:00
41ec2742a7 csharp-mvc: with ext 2022-04-25 14:06:27 +03:00
76fc55c2d4 csharp: with ext 2022-04-25 14:04:01 +03:00
e10f3962b6 java: with ext 2022-04-25 13:28:35 +03:00
b9859ef5ca java-spring: with ext 2022-04-25 12:53:28 +03:00
1cb2b586b1 ruby: with ext 2022-04-25 11:45:21 +03:00
e5d31eebbf nodejs: fix 2022-04-25 11:43:52 +03:00
1ac40c539f python: with ext 2022-04-25 11:13:09 +03:00
371366befa nodejs: with ext 2022-04-25 10:41:59 +03:00
0bee4817e7 php: with ext 2022-04-25 09:38:12 +03:00
ad941e0ba4 ruby: fix (23e616aade) 2022-04-20 10:19:34 +03:00
93c69e51ed changelog: offline viewer for anonymous 2022-04-18 15:37:45 +03:00
8b8b7d3938 Merge branch 'feature/liveview' into develop 2022-04-18 15:35:36 +03:00
f8f01a033e nodejs: anonymous without liveview 2022-04-18 15:34:18 +03:00
f497f10913 changelog: anonymous without chat 2022-04-18 15:26:44 +03:00
8b2478ac71 Merge branch 'feature/chat' into develop 2022-04-18 15:25:42 +03:00
391c347419 nodejs: anonymous without permissions.chat 2022-04-18 15:25:04 +03:00
5a08009b7b changelog: zh-TW, pt-PT 2022-04-18 15:24:31 +03:00
4e5b65f673 changelog 2022-04-18 15:23:43 +03:00
13e3d7673b Merge pull request #275 from ONLYOFFICE/feature/new-langs-7.2
added langs
2022-04-18 15:20:53 +03:00
c0a46866ce build(deps): bump nokogiri in /web/documentserver-example/ruby
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.12.5 to 1.13.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.12.5...v1.13.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 11:18:07 +00:00
e7b76729a4 build(deps): bump jackson-databind
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.2 to 2.12.6.1.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 11:17:36 +00:00
ce2e7f97d6 added langs 2022-04-11 15:28:55 +03:00
441 changed files with 24761 additions and 65523 deletions

View File

@ -0,0 +1,33 @@
name: Artifact Csharp MVC
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/csharp-mvc/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/csharp-mvc/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/csharp-mvc
mkdir -p ./deploy/'DotNet (Csharp MVN) Example'
rsync -av --exclude='deploy' ./ ./deploy/'DotNet (Csharp MVC) Example'
cd ./deploy/'DotNet (Csharp MVC) Example'/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: DotNet.Csharp.MVC.Example
path: ${{ github.workspace }}/web/documentserver-example/csharp-mvc/deploy

33
.github/workflows/artifact-csharp.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Csharp
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/csharp/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/csharp/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/csharp
mkdir -p ./deploy/'DotNet (Csharp) Example'
rsync -av --exclude='deploy' ./ ./deploy/'DotNet (Csharp) Example'
cd ./deploy/'DotNet (Csharp) Example'/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: DotNet.Csharp.Example
path: ${{ github.workspace }}/web/documentserver-example/csharp/deploy

33
.github/workflows/artifact-java.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Java
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/java/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/java/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/java
mkdir -p ./deploy/'Java Example'
rsync -av --exclude='deploy' ./ ./deploy/'Java Example'
cd ./deploy/'Java Example'/src/main/resources/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Java.Example
path: ${{ github.workspace }}/web/documentserver-example/java/deploy

33
.github/workflows/artifact-node.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Nodejs
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/nodejs/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/nodejs/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/nodejs
mkdir -p ./deploy/'Node.js Example'
rsync -av --exclude='deploy' ./ ./deploy/'Node.js Example'
cd ./deploy/'Node.js Example'/public/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Node.js.Example
path: ${{ github.workspace }}/web/documentserver-example/nodejs/deploy

33
.github/workflows/artifact-php.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact PHP
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/php/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/php/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/php
mkdir -p ./deploy/'PHP Example'
rsync -av --exclude='deploy' ./ ./deploy/'PHP Example'
cd ./deploy/'PHP Example'/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: PHP.Example
path: ${{ github.workspace }}/web/documentserver-example/php/deploy

33
.github/workflows/artifact-python.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Python
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/python/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/python/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/python
mkdir -p ./deploy/'Python Example'
rsync -av --exclude='deploy' ./ ./deploy/'Python Example'
cd ./deploy/'Python Example'/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Python.Example
path: ${{ github.workspace }}/web/documentserver-example/python/deploy

33
.github/workflows/artifact-ruby.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Ruby
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/ruby/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/ruby/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/ruby
mkdir -p ./deploy/'Ruby Example'
rsync -av --exclude='deploy' ./ ./deploy/'Ruby Example'
cd ./deploy/'Ruby Example'/public/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Ruby.Example
path: ${{ github.workspace }}/web/documentserver-example/ruby/deploy

33
.github/workflows/artifact-spring.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: Artifact Java Spring
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/java-spring/**']
pull_request:
branches: [master, main]
paths: ['web/documentserver-example/java-spring/**']
jobs:
artifact:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Build Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/java-spring
mkdir -p ./deploy/'Java Spring Example'
rsync -av --exclude='deploy' ./ ./deploy/'Java Spring Example'
cd ./deploy/'Java Spring Example'/src/main/resources/assets
rm -rf ./.git/
rm .git
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Java.Spring.Example
path: ${{ github.workspace }}/web/documentserver-example/java-spring/deploy

31
.github/workflows/lint-java.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Lint Java
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/java/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/java/**']
jobs:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/java
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Install Java 11
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: Run linter
run: |
mvn -version
mvn package

35
.github/workflows/lint-nodejs.yml vendored Normal file
View File

@ -0,0 +1,35 @@
name: ESLint
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/nodejs/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/nodejs/**']
env:
NODE_VERSION: 16
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/nodejs
steps:
- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Code Checkout
uses: actions/checkout@v3
- name: Install Dependencies
run: npm ci
- name: Code Linting
run: npm run lint

31
.github/workflows/lint-php.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: PHPCs
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/php/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/php/**']
jobs:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/php
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
tools: cs2pr, phpcs
- name: Run phpcs
run: |
phpcs --version
phpcs -q --extensions=php,module,inc,install,test,profile,theme,info --ignore=node_modules,bower_components,vendor,css,js,lib --standard=./ruleset.xml ./

40
.github/workflows/lint-python.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: PyLint
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/python/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/python/**']
jobs:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/python
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install flake8
pip install pylint
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint Flake8
run: |
flake8 ./**/*.py --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 ./**/*.py --count --max-complexity=10 --max-line-length=79 --statistics
- name: Lint Pylint
run: |
pylint ./**/*.py

31
.github/workflows/lint-ruby.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Rubocop
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/ruby/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/ruby/**']
jobs:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/ruby
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Install dependencies
run: |
bundle install
- name: Rubocop
run: |
gem install rubocop
rubocop

31
.github/workflows/lint-spring.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Lint Spring
on:
workflow_dispatch:
push:
branches: [master, main]
paths: ['web/documentserver-example/java-spring/**']
pull_request:
branches: [master, main, develop]
paths: ['web/documentserver-example/java-spring/**']
jobs:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web/documentserver-example/java-spring
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Install Java 11
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
- name: Run linter
run: |
mvn -version
mvn package

146
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,146 @@
name: Release
on:
push:
branches: [master,main]
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Install Zip
run: sudo apt-get install zip
- name: Get Info
run: |
echo "version=$(grep -Eo '[0-9]+(\.[0-9]+)+' CHANGELOG.md | head -n 1)" >> $GITHUB_OUTPUT
id: info
- name: Generate Changelog
run: |
awk '/## [0-9]/{p++} p; /## [0-9]/{if (p > 1) exit}' CHANGELOG.md | awk 'NR>2 {print last} {last=$0}' > RELEASE.md
- name: Build Csharp MVC Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/csharp-mvc
mkdir -p ./'DotNet (Csharp MVC) Example'
rsync -av --exclude='DotNet (Csharp MVC) Example' ./ ./'DotNet (Csharp MVC) Example'
cd ./'DotNet (Csharp MVC) Example'/assets
rm -rf ./.git/
rm .git
- name: Build Csharp Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/csharp
mkdir -p ./'DotNet (Csharp) Example'
rsync -av --exclude='DotNet (Csharp) Example' ./ ./'DotNet (Csharp) Example'
cd ./'DotNet (Csharp) Example'/assets
rm -rf ./.git/
rm .git
- name: Build Java Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/java
mkdir -p ./'Java Example'
rsync -av --exclude='Java Example' ./ ./'Java Example'
cd ./'Java Example'/src/main/resources/assets
rm -rf ./.git/
rm .git
- name: Build Nodejs Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/nodejs
mkdir -p ./'Node.js Example'
rsync -av --exclude='Node.js Example' ./ ./'Node.js Example'
cd ./'Node.js Example'/public/assets
rm -rf ./.git/
rm .git
- name: Build PHP Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/php
mkdir -p ./'PHP Example'
rsync -av --exclude='PHP Example' ./ ./'PHP Example'
cd ./'PHP Example'/assets
rm -rf ./.git/
rm .git
- name: Build Python Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/python
mkdir -p ./'Python Example'
rsync -av --exclude='Python Example' ./ ./'Python Example'
cd ./'Python Example'/assets
rm -rf ./.git/
rm .git
- name: Build Ruby Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/ruby
mkdir -p ./'Ruby Example'
rsync -av --exclude='Ruby Example' ./ ./'Ruby Example'
cd ./'Ruby Example'/public/assets
rm -rf ./.git/
rm .git
- name: Build Spring Artifact
run: |
cd ${{ github.workspace }}
cwd=$(pwd)
git submodule update --init --recursive
cd ./web/documentserver-example/java-spring
mkdir -p ./'Java Spring Example'
rsync -av --exclude='Java Spring Example' ./ ./'Java Spring Example'
cd ./'Java Spring Example'/src/main/resources/assets
rm -rf ./.git/
rm .git
- name: Pack Artifacts
run: |
cd ${{ github.workspace }}/web/documentserver-example/csharp-mvc
zip -r DotNet.Csharp.MVC.Example.zip ./'DotNet (Csharp MVC) Example'
cd ${{ github.workspace }}/web/documentserver-example/csharp
zip -r DotNet.Csharp.Example.zip ./'DotNet (Csharp) Example'
cd ${{ github.workspace }}/web/documentserver-example/java
zip -r Java.Example.zip ./'Java Example'
cd ${{ github.workspace }}/web/documentserver-example/nodejs
zip -r Node.js.Example.zip ./'Node.js Example'
cd ${{ github.workspace }}/web/documentserver-example/php
zip -r PHP.Example.zip ./'PHP Example'
cd ${{ github.workspace }}/web/documentserver-example/python
zip -r Python.Example.zip ./'Python Example'
cd ${{ github.workspace }}/web/documentserver-example/ruby
zip -r Ruby.Example.zip ./'Ruby Example'
cd ${{ github.workspace }}/web/documentserver-example/java-spring
zip -r Java.Spring.Example.zip ./'Java Spring Example'
- name: Create Release
uses: ncipollo/release-action@v1
id: create_release
with:
bodyFile: RELEASE.md
artifacts: "
${{ github.workspace }}/web/documentserver-example/csharp-mvc/DotNet.Csharp.MVC.Example.zip,
${{ github.workspace }}/web/documentserver-example/csharp/DotNet.Csharp.Example.zip,
${{ github.workspace }}/web/documentserver-example/java/Java.Example.zip,
${{ github.workspace }}/web/documentserver-example/nodejs/Node.js.Example.zip,
${{ github.workspace }}/web/documentserver-example/php/PHP.Example.zip,
${{ github.workspace }}/web/documentserver-example/python/Python.Example.zip,
${{ github.workspace }}/web/documentserver-example/ruby/Ruby.Example.zip,
${{ github.workspace }}/web/documentserver-example/java-spring/Java.Spring.Example.zip
"
tag: v${{ steps.info.outputs.version }}

13
.gitignore vendored
View File

@ -11,6 +11,19 @@
**/.vscode/
**/.vs/
**/.idea
.classpath
.project
.settings/
*.iml
*.iws
.DS_Store
/web/documentserver-example/java/target/
/web/documentserver-example/java-spring/target/
/web/documentserver-example/csharp/packages
/web/documentserver-example/csharp-mvc/packages
/web/documentserver-example/java-spring/documents/
/web/documentserver-example/ruby/.bundle
/web/documentserver-example/ruby/db/*.sqlite3
/web/documentserver-example/ruby/db/*.sqlite3-journal
/web/documentserver-example/ruby/log/*
/web/documentserver-example/ruby/tmp

24
.gitmodules vendored
View File

@ -1,15 +1,7 @@
[submodule "web/documentserver-example/nodejs/public/assets"]
path = web/documentserver-example/nodejs/public/assets
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/java/src/main/resources/assets"]
path = web/documentserver-example/java/src/main/resources/assets
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/php/assets"]
path = web/documentserver-example/php/assets
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/python/assets"]
path = web/documentserver-example/python/assets
url = https://github.com/ONLYOFFICE/document-templates
@ -30,3 +22,19 @@
path = web/documentserver-example/java-spring/src/main/resources/assets
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/nodejs/public/assets/document-templates"]
path = web/documentserver-example/nodejs/public/assets/document-templates
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/nodejs/public/assets/document-formats"]
path = web/documentserver-example/nodejs/public/assets/document-formats
url = https://github.com/ONLYOFFICE/document-formats
branch = master
[submodule "web/documentserver-example/php/assets/document-templates"]
path = web/documentserver-example/php/assets/document-templates
url = https://github.com/ONLYOFFICE/document-templates
branch = main/en
[submodule "web/documentserver-example/php/assets/document-formats"]
path = web/documentserver-example/php/assets/document-formats
url = https://github.com/ONLYOFFICE/document-formats
branch = master

View File

@ -3,10 +3,6 @@ Document Server integration example uses code from the following 3rd party proje
web/documentserver-example/csharp
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -19,10 +15,26 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license
web/documentserver-example/csharp-mvc
@ -30,10 +42,6 @@ Entity Framework - Entity Framework is an object-relational mapper that enables
License: MICROSOFT SOFTWARE SUPPLEMENTAL TERMS, MICROSOFT SOFTWARE LICENSE TERMS
License File: EntityFramework.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -46,15 +54,27 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Microsoft.Web.Infrastructure - This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically register HTTP modules at run time. (https://www.microsoft.com/web/webpi/eula/aspnetmvc3update-eula.htm)
License: MS-EULA License
License File: Microsoft.Web.Infrastructure.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://licenses.nuget.org/MIT)
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license
@ -65,10 +85,6 @@ License File: WebGrease.license
web/documentserver-example/java
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -81,6 +97,14 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
@ -92,9 +116,17 @@ License File: prime-jwt.license
web/documentserver-example/java-spring
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
@ -108,10 +140,30 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Project Lombok - Project Lombok is a java library that automatically plugs into your editor and build tools. (https://mvnrepository.com/artifact/org.projectlombok/lombok).
License: MIT
License File lombok.license
ModelMapper - ModelMapper is an intelligent object mapping library that automatically maps objects to each other. (https://github.com/modelmapper/modelmapper)
License: Apache 2.0
License File modelmapper.license
Prime JWT - is intended to be fast and easy to use. Prime JWT has a single external dependency on Jackson. (https://github.com/ws-apps/prime-jwt/blob/master/LICENSE)
License: Apache 2.0
License File: prime-jwt.license
@ -132,22 +184,6 @@ Spring Data JPA - Persist data in SQL stores with Java Persistence API using Spr
License: Apache 2.0
License File: spring-data-jpa.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license
web/documentserver-example/nodejs
@ -183,10 +219,6 @@ he - a robust HTML entity encoder/decoder written in JavaScript. (htt
License: MIT
License File: he.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -199,6 +231,14 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
@ -228,11 +268,8 @@ License: MIT
License File: urllib.license
web/documentserver-example/php
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
web/documentserver-example/php
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
@ -246,10 +283,69 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JSON Web Token implementation (https://github.com/firebase/php-jwt/blob/master/LICENSE)
License: BSD-3-Clause
License File: jwt.license
PHP_CodeSniffer - PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent. (https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt)
License: BSD-3-Clause
License File: PHP_CodeSniffer.license
web/documentserver-example/python
Django - Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Thanks for checking it out. (https://github.com/django/django/blob/main/LICENSE)
License: BSD-3-Clause
License File: Django.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
jQuery.FileUpload - File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads. (https://github.com/blueimp/jQuery-File-Upload/blob/master/LICENSE.txt)
License: MIT
License File: jQuery.FileUpload.license
jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https://github.com/blueimp/jQuery-File-Upload/blob/master/LICENSE.txt)
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
PyJWT - A Python implementation of RFC 7519. (https://github.com/jpadilla/pyjwt/blob/master/LICENSE)
License: MIT
License File: PyJWT.license
python-magic - python-magic is a Python interface to the libmagic file type identification library. (https://github.com/ahupp/python-magic/blob/master/LICENSE)
License: MIT
License File: python-magic.license
requests - Requests allows you to send HTTP/1.1 requests extremely easily. Theres no need to manually add query strings to your URLs, or to form-encode your PUT & POST data — but nowadays, just use the json method! (https://github.com/psf/requests/blob/main/LICENSE)
License: Apache 2.0
License File: requests.license
web/documentserver-example/ruby
@ -261,14 +357,14 @@ coffee-rails - CoffeeScript adapter for the Rails asset pipeline. (https://gith
License: MIT
License File: coffee-rails.license
dalli - High performance memcached client for Ruby. (https://github.com/petergoldstein/dalli/blob/v3.2.0/LICENSE)
License: MIT
License File: dalli.license
jbuilder - Create JSON structures via a Builder-style DSL (https://github.com/rails/jbuilder/blob/master/MIT-LICENSE)
License: MIT
License File: jbuilder.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -281,6 +377,14 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
@ -289,10 +393,18 @@ jquery-rails - This gem provides jQuery and the jQuery-ujs driver for your Rail
License: MIT
License File: jquery-rails.license
mimemagic - А library to detect the mime type of a file by extension or by content. (https://github.com/mimemagicrb/mimemagic/blob/master/LICENSE)
License: MIT
License File: mimemagic.license
rails - Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern. (https://github.com/rails/rails/blob/v6.0.3.2/MIT-LICENSE)
License: MIT
License File: rails.license
rubocop - A Ruby static code analyzer and formatter, based on the community Ruby style guide. (https://github.com/rubocop/rubocop/blob/v1.52.0/LICENSE.txt)
License: MIT
License File: rubocop.license
sass-rails - This gem provides official integration for Ruby on Rails projects with the Sass stylesheet language. (https://github.com/rails/sass-rails/blob/master/MIT-LICENSE)
License: MIT
License File: sass-rails.license
@ -301,10 +413,18 @@ sdoc - rdoc generator html with javascript search index. (https://githu
License: MIT
License File: sdoc.license
sorbet - A fast, powerful type checker designed for Ruby. (https://github.com/sorbet/sorbet/blob/0.5.10871.20230607144259-d9000e2ba/LICENSE)
License: Apache License 2.0
License File: sorbet.license
sqlite3 - This module allows Ruby programs to interface with the SQLite3 database engine (www.sqlite.org). (https://github.com/sparklemotion/sqlite3-ruby/blob/master/LICENSE)
License: BSD-3-Clause
License File: sqlite3.license
tapioca - The swiss army knife of RBI generation. (https://github.com/Shopify/tapioca/blob/v0.11.6/LICENSE.txt)
License: MIT
License File: tapioca.license
turbolinks - Rails engine for Turbolinks 5 support (https://github.com/turbolinks/turbolinks-rails/blob/master/LICENSE)
License: MIT
License File: turbolinks.license

67
CHANGELOG.md Normal file
View File

@ -0,0 +1,67 @@
# Change Log
- php: using a repo with a list of formats
- nodejs: using a repo with a list of formats
- nodejs: delete file without reloading the page
- nodejs: getting history by a separate request
- nodejs: restore from history
- nodejs: setUsers for region protection
- si skin languages
- fix "no" skin languages
- anonymous can't change viewer to edit
- referenceData
- anonymous can't protect file
- separate setting for checking the token in requests
- php: linter refactoring
- horizontal scroll fix for Internet Explorer
- save file with extension from response after conversation
- conversation to ooxml
## 1.5.1
- update jquery
## 1.5.0
- nodejs: added wopi putRelativeFile action
- nodejs: wopi editnew action for exisiting file
- nodejs: fix wopi actions after restart
- setting an unavailable language
- description in the tooltip on the main page
- nodejs: referenceData
- option to send directUrl
## 1.4.0
- nodejs: option to send directUrl
- opening file on client by directUrl
- offline viewer for anonymous
- added hy, eu, zh-TW, ms, pt-PT
## 1.3.1
- charp: fix references
- ruby: update rails
## 1.3.0
- update empty files
- anonymous without chat
- changed jwt implementation in csharp, csharp-mvc, php, ruby
## 1.2.0
- ruby v3.0
- set filetype in setHistoryData
- read filetype from input request
- creating file on WOPI
- upload on WOPI page
- fix xss
- set userInfoGroups
- check JWT on downloading history
- upload dialog on mobile
- anonymous without id
- renaming from editor
- new skin languages
- ignore certificate
## 1.1.0
- creating docxf
- opening docxf, oform
## 1.0.0
- added java spring

View File

@ -26,13 +26,13 @@
<RemoveDir Directories="$(To)" ContinueOnError="true" />
<ItemGroup>
<ZipFilesCSharp Include="$(DirCSharp)**" Exclude="$(DirCSharp)obj\**;$(DirCSharp)**\.git" />
<ZipFilesCSharp Include="$(DirCSharp)**" Exclude="$(DirCSharp).vs\**;$(DirCSharp)bin\*.pdb;$(DirCSharp)bin\*.xml;$(DirCSharp)obj\**;$(DirCSharp)packages\**;$(DirCSharp)**\.git" />
</ItemGroup>
<Copy SourceFiles="@(ZipFilesCSharp)" DestinationFiles="@(ZipFilesCSharp->'$(NameCSharp)\%(RecursiveDir)%(Filename)%(Extension)')" />
<Zip Files="$(NameCSharp)" WorkingDirectory="$(To)" ZipFileName="$(NameCSharp).zip" />
<ItemGroup>
<ZipFilesMVC Include="$(DirMvc)**" Exclude="$(DirMvc)obj\**;$(DirMvc)**\.git" />
<ZipFilesMVC Include="$(DirMvc)**" Exclude="$(DirMvc).vs\**;$(DirMvc)bin\*.pdb;$(DirMvc)bin\*.xml;$(DirMvc)obj\**;$(DirMvc)packages\**;$(DirMvc)**\.git" />
</ItemGroup>
<Copy SourceFiles="@(ZipFilesMVC)" DestinationFiles="@(ZipFilesMVC->'$(NameMvc)\%(RecursiveDir)%(Filename)%(Extension)')" />
<Zip Files="$(NameMvc)" WorkingDirectory="$(To)" ZipFileName="$(NameMvc).zip" />

View File

@ -4,10 +4,6 @@ Entity Framework - Entity Framework is an object-relational mapper that enables
License: MICROSOFT SOFTWARE SUPPLEMENTAL TERMS, MICROSOFT SOFTWARE LICENSE TERMS
License File: EntityFramework.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -20,15 +16,27 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Microsoft.Web.Infrastructure - This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically register HTTP modules at run time. (https://www.microsoft.com/web/webpi/eula/aspnetmvc3update-eula.htm)
License: MS-EULA License
License File: Microsoft.Web.Infrastructure.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://licenses.nuget.org/MIT)
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -28,6 +28,7 @@ namespace OnlineEditorsExampleMVC
// create a jquery script bundle
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-migrate-{version}.js",
"~/Scripts/jquery-ui.js",
"~/Scripts/jquery.blockUI.js",
"~/Scripts/jquery.iframe-transport.js",

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,4 +1,22 @@
@media (min-width: 1280px) and (max-width: 1380px) {
/**
*
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
@media (min-width: 1280px) and (max-width: 1380px) {
.copy {
margin-right: 6.5%;
}
@ -664,3 +682,8 @@
max-width:15%;
}
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.tableRow td:first-child{
max-width: none;
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -167,7 +167,7 @@ label .checkbox {
background-image: url("images/file_docxf.svg");
}
.create-sample {
.side-option {
color: #666666;
line-height: 24px;
}
@ -740,3 +740,28 @@ html {
.user-descr > b {
margin-left: 25px;
}
.tooltip {
background: #FFFFFF;
border-radius: 5px;
box-shadow: 0px 7px 25px rgba(85, 85, 85, 0.15);
color: #666666;
line-height: 160%;
max-width: 455px;
padding: 14px;
position: absolute;
}
.tooltip ul {
margin: 0;
}
.arrow {
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
border-right: 8px solid #FFFFFF;
left: -4px;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,6 +16,7 @@
*
*/
using System;
using System.IO;
using System.Web.Mvc;
using OnlineEditorsExampleMVC.Helpers;
@ -31,13 +32,14 @@ namespace OnlineEditorsExampleMVC.Controllers
}
// viewing file in the editor
public ActionResult Editor(string fileName, string editorsMode, string editorsType)
public ActionResult Editor(string fileName, string editorsMode, string editorsType, string directUrl)
{
var file = new FileModel
{
Mode = editorsMode, // editor mode: edit or view
Type = editorsType, // editor type: desktop, mobile, embedded
FileName = Path.GetFileName(fileName) // file name
FileName = Path.GetFileName(fileName), // file name
IsEnabledDirectUrl = directUrl != null ? Convert.ToBoolean(directUrl) : false
};
return View("Editor", file);

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -242,7 +242,8 @@ namespace OnlineEditorsExampleMVC.Helpers
{
var uri = new UriBuilder(GetServerUrl(forDocumentServer))
{
Path = HttpRuntime.AppDomainAppVirtualPath + "/"
Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ CurUserHostAddress() + "/"
+ fileName,
Query = ""
@ -292,7 +293,7 @@ namespace OnlineEditorsExampleMVC.Helpers
+ "webeditor.ashx",
Query = "type=track"
+ "&fileName=" + HttpUtility.UrlEncode(fileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress)
+ "&userAddress=" + HttpUtility.UrlEncode(CurUserHostAddress(HttpContext.Current.Request.UserHostAddress))
};
return callbackUrl.ToString();
}
@ -312,9 +313,10 @@ namespace OnlineEditorsExampleMVC.Helpers
}
// create the public history url
public static string GetHistoryDownloadUrl(string filename, string version, string file)
public static string GetHistoryDownloadUrl(string filename, string version, string file, Boolean isServer = true)
{
var downloadUrl = new UriBuilder(GetServerUrl(true))
var userAddress = "&userAddress=" + HttpUtility.UrlEncode(CurUserHostAddress(HttpContext.Current.Request.UserHostAddress));
var downloadUrl = new UriBuilder(GetServerUrl(isServer))
{
Path =
HttpRuntime.AppDomainAppVirtualPath
@ -322,7 +324,7 @@ namespace OnlineEditorsExampleMVC.Helpers
+ "webeditor.ashx",
Query = "type=downloadhistory"
+ "&fileName=" + HttpUtility.UrlEncode(filename)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress)
+ userAddress
+ "&ver=" + version
+ "&file="+ file
};
@ -330,9 +332,10 @@ namespace OnlineEditorsExampleMVC.Helpers
}
// get url to download a file
public static string GetDownloadUrl(string fileName)
public static string GetDownloadUrl(string fileName, Boolean isServer = true)
{
var downloadUrl = new UriBuilder(GetServerUrl(true))
var userAddress = isServer ? "&userAddress=" + HttpUtility.UrlEncode(CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)) : "";
var downloadUrl = new UriBuilder(GetServerUrl(isServer))
{
Path =
HttpRuntime.AppDomainAppVirtualPath
@ -340,7 +343,7 @@ namespace OnlineEditorsExampleMVC.Helpers
+ "webeditor.ashx",
Query = "type=download"
+ "&fileName=" + HttpUtility.UrlEncode(fileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress)
+ userAddress
};
return downloadUrl.ToString();
}
@ -439,5 +442,11 @@ namespace OnlineEditorsExampleMVC.Helpers
}
return languages;
}
public static string GetDirectUrl()
{
string isEnabledDirectUrl = HttpUtility.ParseQueryString(HttpContext.Current.Request.Url.Query).Get("directUrl");
return isEnabledDirectUrl != null ? isEnabledDirectUrl : "false";
}
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -68,24 +68,24 @@ namespace OnlineEditorsExampleMVC.Helpers
/// <param name="toExtension">Extension to which to convert</param>
/// <param name="documentRevisionId">Key for caching on service</param>
/// <param name="isAsync">Perform conversions asynchronously</param>
/// <param name="convertedDocumentUri">Uri to the converted document</param>
/// <param name="convertedDocumentData">Uri and file type of the converted document</param>
/// <returns>The percentage of conversion completion</returns>
/// <example>
/// string convertedDocumentUri;
/// GetConvertedUri("http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", ".pdf", ".docx", "http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", false, out convertedDocumentUri);
/// Dictionary<string, string> convertedDocumentData;
/// GetConvertedData("http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", ".pdf", ".docx", "http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", false, out convertedDocumentData);
/// </example>
/// <exception>
/// </exception>
public static int GetConvertedUri(string documentUri,
public static int GetConvertedData(string documentUri,
string fromExtension,
string toExtension,
string documentRevisionId,
bool isAsync,
out string convertedDocumentUri,
out Dictionary<string, string> convertedDocumentData,
string filePass = null,
string lang = null)
{
convertedDocumentUri = string.Empty;
convertedDocumentData = new Dictionary<string, string>();
// check if the fromExtension parameter is defined; if not, get it from the document url
fromExtension = string.IsNullOrEmpty(fromExtension) ? Path.GetExtension(documentUri).ToLower() : fromExtension;
@ -119,7 +119,7 @@ namespace OnlineEditorsExampleMVC.Helpers
{ "region", lang }
};
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
// create payload object
var payload = new Dictionary<string, object>
@ -130,7 +130,7 @@ namespace OnlineEditorsExampleMVC.Helpers
var payloadToken = JwtManager.Encode(payload); // encode the payload object to the payload token
var bodyToken = JwtManager.Encode(body); // encode the body object to the body token
// create header token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken);
body.Add("token", bodyToken);
@ -157,7 +157,7 @@ namespace OnlineEditorsExampleMVC.Helpers
}
}
return GetResponseUri(dataResponse, out convertedDocumentUri);
return GetResponseData(dataResponse, out convertedDocumentData);
}
/// <summary>
@ -181,9 +181,9 @@ namespace OnlineEditorsExampleMVC.Helpers
/// Processing document received from the editing service
/// </summary>
/// <param name="jsonDocumentResponse">The resulting json from editing service</param>
/// <param name="responseUri">Uri to the converted document</param>
/// <param name="responseData">Uri and file type of the converted document</param>
/// <returns>The percentage of conversion completion</returns>
private static int GetResponseUri(string jsonDocumentResponse, out string responseUri)
private static int GetResponseData(string jsonDocumentResponse, out Dictionary<string, string> responseData)
{
if (string.IsNullOrEmpty(jsonDocumentResponse)) throw new ArgumentException("Invalid param", "jsonDocumentResponse");
@ -197,14 +197,20 @@ namespace OnlineEditorsExampleMVC.Helpers
var isEndConvert = responseFromService.endConvert;
int resultPercent;
responseUri = string.Empty;
responseData = new Dictionary<string, string>();
var responseUri = string.Empty;
var responseFileType = string.Empty;
if (isEndConvert) // if the conversion is completed
{
responseUri = responseFromService.fileUrl; // get the file url
responseFileType = responseFromService.fileType; // get the file type
responseData.Add("fileUrl", responseUri);
responseData.Add("fileType", responseFileType);
resultPercent = 100;
}
else // if the conversion isn't completed
{
responseData.Add("fileUrl", "");
resultPercent = responseFromService.percent; // get the percentage value
if (resultPercent >= 100) resultPercent = 99;
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,12 +16,12 @@
*
*/
using System;
using JWT;
using JWT.Algorithms;
using JWT.Builder;
using JWT.Serializers;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Web.Configuration;
using System.Web.Script.Serialization;
namespace OnlineEditorsExampleMVC.Helpers
{
@ -29,32 +29,22 @@ namespace OnlineEditorsExampleMVC.Helpers
{
private static readonly string Secret;
public static readonly bool Enabled;
private static readonly JavaScriptSerializer Serializer;
public static readonly bool SignatureUseForRequest;
static JwtManager()
{
Secret = WebConfigurationManager.AppSettings["files.docservice.secret"] ?? ""; // get token secret from the config parameters
Enabled = !string.IsNullOrEmpty(Secret); // check if the token is enabled
Serializer = new JavaScriptSerializer(); // define java script serializer
SignatureUseForRequest = bool.Parse(WebConfigurationManager.AppSettings["files.docservice.token.useforrequest"]);
}
// encode a payload object into a token using a secret key
public static string Encode(IDictionary<string, object> payload)
{
// define the hashing algorithm and the token type
var header = new Dictionary<string, object>
{
{ "alg", "HS256" },
{ "typ", "JWT" }
};
// three parts of token
var encHeader = Base64UrlEncode(Serializer.Serialize(header)); // header
var encPayload = Base64UrlEncode(Serializer.Serialize(payload)); // payload
var hashSum = Base64UrlEncode(CalculateHash(encHeader, encPayload)); // signature
return string.Format("{0}.{1}.{2}", encHeader, encPayload, hashSum);
var encoder = new JwtEncoder(new HMACSHA256Algorithm(),
new JsonNetSerializer(),
new JwtBase64UrlEncoder());
return encoder.Encode(payload, Secret);
}
// decode a token into a payload object using a secret key
@ -62,52 +52,11 @@ namespace OnlineEditorsExampleMVC.Helpers
{
if (!Enabled || string.IsNullOrEmpty(token)) return "";
var split = token.Split('.');
if (split.Length != 3) return "";
var hashSum = Base64UrlEncode(CalculateHash(split[0], split[1])); // get signature
if (hashSum != split[2]) return ""; // and check if it is equal to the signature from the token
return Base64UrlDecode(split[1]); // decode payload
}
// generate a hash code based on a key using the HMAC method
private static byte[] CalculateHash(string encHeader, string encPayload)
{
using (var hasher = new HMACSHA256(Encoding.UTF8.GetBytes(Secret)))
{
var bytes = Encoding.UTF8.GetBytes(string.Format("{0}.{1}", encHeader, encPayload));
return hasher.ComputeHash(bytes);
}
}
// encode a string into the base64 value
private static string Base64UrlEncode(string str)
{
return Base64UrlEncode(Encoding.UTF8.GetBytes(str));
}
// encode bytes into the base64 value
private static string Base64UrlEncode(byte[] bytes)
{
return Convert.ToBase64String(bytes)
.TrimEnd('=').Replace('+', '-').Replace('/', '_');
}
// decode a base64 value into the string
private static string Base64UrlDecode(string payload)
{
var b64 = payload.Replace('_', '/').Replace('-', '+');
switch (b64.Length%4)
{
case 2:
b64 += "==";
break;
case 3:
b64 += "=";
break;
}
var bytes = Convert.FromBase64String(b64);
return Encoding.UTF8.GetString(bytes);
return JwtBuilder.Create()
.WithAlgorithm(new HMACSHA256Algorithm())
.WithSecret(Secret)
.MustVerifySignature()
.Decode(token);
}
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -53,9 +53,9 @@ namespace OnlineEditorsExampleMVC.Helpers
var fileData = jss.Deserialize<Dictionary<string, object>>(body);
// check if the document token is enabled
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = null;
@ -92,15 +92,13 @@ namespace OnlineEditorsExampleMVC.Helpers
// file saving process
public static int processSave(Dictionary<string, object> fileData, string fileName, string userAddress)
{
if (fileData["url"].Equals(null)) {
if (string.IsNullOrEmpty((string)fileData["url"])) {
throw new Exception("DownloadUrl is null");
}
var downloadUri = (string)fileData["url"];
string curExt = Path.GetExtension(fileName).ToLower(); // get current file extension
var downloadExt = fileData.ContainsKey("filetype")
? "." + (string)fileData["filetype"]
: Path.GetExtension(downloadUri).ToLower() ?? ""; // TODO: Delete in version 7.0 or higher. Support for versions below 7.0
var downloadExt = "." + (string)fileData["filetype"]; // get the extension of the downloaded file
var newFileName = fileName;
@ -110,8 +108,9 @@ namespace OnlineEditorsExampleMVC.Helpers
try
{
// convert file and give url to a new file
string newFileUri;
var result = ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileUri);
Dictionary<string, string> newFileData;
var result = ServiceConverter.GetConvertedData(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileData);
var newFileUri = newFileData["fileUrl"];
if (string.IsNullOrEmpty(newFileUri))
{
// get the correct file name if it already exists
@ -130,37 +129,48 @@ namespace OnlineEditorsExampleMVC.Helpers
DocManagerHelper.VerifySSL();
var storagePath = DocManagerHelper.StoragePath(newFileName, userAddress); // get the file path
var histDir = DocManagerHelper.HistoryDir(storagePath); // get the path to the history directory
if (!Directory.Exists(histDir)) Directory.CreateDirectory(histDir);
var versionDir = DocManagerHelper.VersionDir(histDir, DocManagerHelper.GetFileVersion(histDir)); // get the path to the file version
if (!Directory.Exists(versionDir)) Directory.CreateDirectory(versionDir); // if the path doesn't exist, create it
// get the path to the previous file version and move it to the storage directory
File.Move(DocManagerHelper.StoragePath(fileName, userAddress), Path.Combine(versionDir, "prev" + curExt));
DownloadToFile(downloadUri, storagePath); // save file to the storage directory
DownloadToFile((string)fileData["changesurl"], Path.Combine(versionDir, "diff.zip")); // save file changes to the diff.zip archive
var hist = fileData.ContainsKey("changeshistory") ? (string)fileData["changeshistory"] : null;
if (string.IsNullOrEmpty(hist) && fileData.ContainsKey("history"))
try
{
var jss = new JavaScriptSerializer();
hist = jss.Serialize(fileData["history"]);
}
var bytesFile = DownloadFile(downloadUri); // download document file
var storagePath = DocManagerHelper.StoragePath(newFileName, userAddress); // get the file path
if (!string.IsNullOrEmpty(hist))
var histDir = DocManagerHelper.HistoryDir(storagePath); // get the path to the history directory
if (!Directory.Exists(histDir)) Directory.CreateDirectory(histDir);
var versionDir = DocManagerHelper.VersionDir(histDir, DocManagerHelper.GetFileVersion(histDir)); // get the path to the file version
if (!Directory.Exists(versionDir)) Directory.CreateDirectory(versionDir); // if the path doesn't exist, create it
// get the path to the previous file version and move it to the storage directory
File.Move(DocManagerHelper.StoragePath(fileName, userAddress), Path.Combine(versionDir, "prev" + curExt));
SaveFile(bytesFile, storagePath);// save document file
byte[] bytesChanges = DownloadFile((string)fileData["changesurl"]); // download changes file
SaveFile(bytesChanges, Path.Combine(versionDir, "diff.zip")); // save file changes to the diff.zip archive
var hist = fileData.ContainsKey("changeshistory") ? (string)fileData["changeshistory"] : null;
if (string.IsNullOrEmpty(hist) && fileData.ContainsKey("history"))
{
var jss = new JavaScriptSerializer();
hist = jss.Serialize(fileData["history"]);
}
if (!string.IsNullOrEmpty(hist))
{
File.WriteAllText(Path.Combine(versionDir, "changes.json"), hist); // write the history changes to the changes.json file
}
File.WriteAllText(Path.Combine(versionDir, "key.txt"), (string)fileData["key"]); // write the key value to the key.txt file
string forcesavePath = DocManagerHelper.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
if (!forcesavePath.Equals("")) // if the forcesaved file version exists
{
File.Delete(forcesavePath); // remove it
}
} catch (Exception)
{
File.WriteAllText(Path.Combine(versionDir, "changes.json"), hist); // write the history changes to the changes.json file
}
File.WriteAllText(Path.Combine(versionDir, "key.txt"), (string)fileData["key"]); // write the key value to the key.txt file
string forcesavePath = DocManagerHelper.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
if (!forcesavePath.Equals("")) // if the forcesaved file version exists
{
File.Delete(forcesavePath); // remove it
return 1;
}
return 0;
@ -169,16 +179,14 @@ namespace OnlineEditorsExampleMVC.Helpers
// file force saving process
public static int processForceSave(Dictionary<string, object> fileData, string fileName, string userAddress)
{
if (fileData["url"].Equals(null)) {
if ( string.IsNullOrEmpty((string)fileData["url"])) {
throw new Exception("DownloadUrl is null");
}
var downloadUri = (string)fileData["url"];
string curExt = Path.GetExtension(fileName).ToLower(); // get current file extension
var downloadExt = fileData.ContainsKey("filetype")
? "." + (string)fileData["filetype"]
: Path.GetExtension(downloadUri).ToLower(); // TODO: Delete in version 7.0 or higher. Support for versions below 7.0
var downloadExt = "." + (string)fileData["filetype"]; // get the extension of the downloaded file
Boolean newFileName = false;
@ -188,8 +196,9 @@ namespace OnlineEditorsExampleMVC.Helpers
try
{
// convert file and give url to a new file
string newFileUri;
var result = ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileUri);
Dictionary<string, string> newFileData;
var result = ServiceConverter.GetConvertedData(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileData);
var newFileUri = newFileData["fileUrl"];
if (string.IsNullOrEmpty(newFileUri))
{
newFileName = true;
@ -206,43 +215,51 @@ namespace OnlineEditorsExampleMVC.Helpers
}
DocManagerHelper.VerifySSL();
string forcesavePath = "";
Boolean isSubmitForm = fileData["forcesavetype"].ToString().Equals("3"); // SubmitForm
if (isSubmitForm) // if the form is submitted
try
{
if (newFileName)
var bytesFile = DownloadFile(downloadUri); // download document file
string forcesavePath = "";
Boolean isSubmitForm = fileData["forcesavetype"].ToString().Equals("3"); // SubmitForm
if (isSubmitForm) // if the form is submitted
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + downloadExt, userAddress); // get the correct file name if it already exists
if (newFileName)
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + downloadExt, userAddress); // get the correct file name if it already exists
} else
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + curExt, userAddress);
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + curExt, userAddress);
}
forcesavePath = DocManagerHelper.StoragePath(fileName, userAddress);
}
forcesavePath = DocManagerHelper.StoragePath(fileName, userAddress);
}
else
{
if (newFileName)
else
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
if (newFileName)
{
fileName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
}
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, false);
if (string.IsNullOrEmpty(forcesavePath)) // create forcesave path if it doesn't exist
{
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, true);
}
}
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, false);
if (forcesavePath.Equals("")) // create forcesave path if it doesn't exist
{
forcesavePath = DocManagerHelper.ForcesavePath(fileName, userAddress, true);
}
}
DownloadToFile(downloadUri, forcesavePath);
SaveFile(bytesFile, forcesavePath);// save document file
if (isSubmitForm)
if (isSubmitForm)
{
var jss = new JavaScriptSerializer();
var actions = jss.Deserialize<List<object>>(jss.Serialize(fileData["actions"]));
var action = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(actions[0]));
var user = action["userid"].ToString(); // get the user id
DocManagerHelper.CreateMeta(fileName, user, "Filling Form", userAddress); // create meta data for the forcesaved file
}
} catch (Exception)
{
var jss = new JavaScriptSerializer();
var actions = jss.Deserialize<List<object>>(jss.Serialize(fileData["actions"]));
var action = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(actions[0]));
var user = action["userid"].ToString(); // get the user id
DocManagerHelper.CreateMeta(fileName, user, "Filling Form", userAddress); // create meta data for the forcesaved file
return 1;
}
return 0;
@ -270,7 +287,7 @@ namespace OnlineEditorsExampleMVC.Helpers
}
// check if a secret key to generate token exists or not
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
var payload = new Dictionary<string, object>
{
@ -279,7 +296,7 @@ namespace OnlineEditorsExampleMVC.Helpers
var payloadToken = JwtManager.Encode(payload); // encode a payload object into a header token
var bodyToken = JwtManager.Encode(body); // encode body into a body token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // add a header Authorization with a header token and Authorization prefix in it
body.Add("token", bodyToken);
@ -314,26 +331,30 @@ namespace OnlineEditorsExampleMVC.Helpers
}
}
// save file
private static void SaveFile(byte[] data, string path)
{
using (var fs = File.Open(path, FileMode.Create))
{
fs.Write(data, 0, data.Length);
}
}
// save file information from the url to the file specified
private static void DownloadToFile(string url, string path)
private static byte[] DownloadFile(string url)
{
if (string.IsNullOrEmpty(url)) throw new ArgumentException("url"); // url isn't specified
if (string.IsNullOrEmpty(path)) throw new ArgumentException("path"); // file isn't specified
var req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 5000;
using (var stream = req.GetResponse().GetResponseStream()) // get input stream of the file information from the url
{
if (stream == null) throw new Exception("stream is null");
const int bufferSize = 4096;
using (var fs = File.Open(path, FileMode.Create))
using (MemoryStream memoryStream = new MemoryStream())
{
var buffer = new byte[bufferSize];
int readed;
while ((readed = stream.Read(buffer, 0, bufferSize)) != 0)
{
fs.Write(buffer, 0, readed); // write bytes to the output stream
}
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -67,7 +67,10 @@ namespace OnlineEditorsExampleMVC.Helpers
"Can't mention others in comments",
"Can't create new files from the editor",
"Cant see anyones information",
"Can't rename files from the editor"
"Can't rename files from the editor",
"Can't view chat",
"Can't protect file",
"View file without collaboration",
};
private static List<User> users = new List<User>() {
@ -129,7 +132,7 @@ namespace OnlineEditorsExampleMVC.Helpers
new Dictionary<string,object>(),
new List<string>(),
null,
new List<string>(),
new List<string>() { "protect" },
descr_user_0,
false
)

View File

@ -1,4 +1,22 @@
using System.Web;
/**
*
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
using System.Web;
namespace OnlineEditorsExampleMVC.Helpers
{

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -33,6 +33,7 @@ namespace OnlineEditorsExampleMVC.Models
{
public string Mode { get; set; } // editor mode
public string Type { get; set; } // editor type
public bool IsEnabledDirectUrl { get; set; } // is enabled direct url
// get file url for Document Server
public string FileUri
@ -97,6 +98,7 @@ namespace OnlineEditorsExampleMVC.Models
var actionLink = request.GetOrDefault("actionLink", null); // get the action link (comment or bookmark) if it exists
var actionData = string.IsNullOrEmpty(actionLink) ? null : jss.DeserializeObject(actionLink); // get action data for the action link
var directUrl = DocManagerHelper.GetDownloadUrl(FileName, false);
var createUrl = DocManagerHelper.GetCreateUrl(FileUtility.GetFileType(FileName));
var templatesImageUrl = DocManagerHelper.GetTemplateImageUrl(FileUtility.GetFileType(FileName)); // image url for templates
var templates = new List<Dictionary<string, string>>
@ -125,6 +127,7 @@ namespace OnlineEditorsExampleMVC.Models
{
{ "title", FileName },
{ "url", DownloadUrl },
{ "directUrl", IsEnabledDirectUrl ? directUrl : "" },
{ "fileType", ext.Trim('.') },
{ "key", Key },
{
@ -135,6 +138,17 @@ namespace OnlineEditorsExampleMVC.Models
{ "favorite", favorite}
}
},
{
"referenceData", new Dictionary<string, string>()
{
{ "fileKey", !user.id.Equals("uid-0") ?
jss.Serialize(new Dictionary<string, object>{
{"fileName", FileName},
{"userAddress", HttpUtility.UrlEncode(DocManagerHelper.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress))}
}) : null },
{"instanceId", DocManagerHelper.GetServerUrl(false) }
}
},
{
// the permission for the document to be edited and downloaded or not
"permissions", new Dictionary<string, object>
@ -148,9 +162,11 @@ namespace OnlineEditorsExampleMVC.Models
{ "modifyFilter", editorsMode != "filter" },
{ "modifyContentControl", editorsMode != "blockcontent" },
{ "review", canEdit && (editorsMode == "edit" || editorsMode == "review") },
{ "chat", !user.id.Equals("uid-0") },
{ "reviewGroups", user.reviewGroups },
{ "commentGroups", user.commentGroups },
{ "userInfoGroups", user.userInfoGroups }
{ "userInfoGroups", user.userInfoGroups },
{ "protect", !user.deniedPermissions.Contains("protect") }
}
}
}
@ -162,6 +178,11 @@ namespace OnlineEditorsExampleMVC.Models
{ "mode", mode },
{ "lang", request.Cookies.GetOrDefault("ulang", "en") },
{ "callbackUrl", CallbackUrl }, // absolute URL to the document storage service
{ "coEditing", editorsMode == "view" && user.id.Equals("uid-0") ?
new Dictionary<string, object>{
{"mode", "strict"},
{"change", false}
} : null },
{ "createUrl", !user.id.Equals("uid-0") ? createUrl : null },
{ "templates", user.templates ? templates : null },
{
@ -177,9 +198,9 @@ namespace OnlineEditorsExampleMVC.Models
// the parameters for the embedded document type
"embedded", new Dictionary<string, object>
{
{ "saveUrl", FileUriUser }, // the absolute URL that will allow the document to be saved onto the user personal computer
{ "embedUrl", FileUriUser }, // the absolute URL to the document serving as a source file for the document embedded into the web page
{ "shareUrl", FileUriUser }, // the absolute URL that will allow other users to share this document
{ "saveUrl", directUrl }, // the absolute URL that will allow the document to be saved onto the user personal computer
{ "embedUrl", directUrl }, // the absolute URL to the document serving as a source file for the document embedded into the web page
{ "shareUrl", directUrl }, // the absolute URL that will allow other users to share this document
{ "toolbarDocked", "top" } // the place for the embedded viewer toolbar (top or bottom)
}
},
@ -195,7 +216,7 @@ namespace OnlineEditorsExampleMVC.Models
{
"goback", new Dictionary<string, object> // settings for the Open file location menu button and upper right corner button
{
{ "url", url.Action("Index", "Home") } // the absolute URL to the website address which will be opened when clicking the Open file location menu button
{ "url", DocManagerHelper.GetServerUrl(false) } // the absolute URL to the website address which will be opened when clicking the Open file location menu button
}
}
}
@ -262,17 +283,26 @@ namespace OnlineEditorsExampleMVC.Models
dataObj.Add("key", key);
// write file url to the data object
string prevFileUrl;
string directPrevFileUrl;
if (Path.IsPathRooted(storagePath) && !string.IsNullOrEmpty(storagePath))
{
prevFileUrl = i == currentVersion ? DocManagerHelper.GetHistoryDownloadUrl(FileName, i.ToString(), "prev" + ext)
: DocManagerHelper.GetDownloadUrl(Directory.GetFiles(verDir, "prev.*")[0].Replace(storagePath + "\\", ""));
directPrevFileUrl = i == currentVersion ? DocManagerHelper.GetHistoryDownloadUrl(FileName, i.ToString(), "prev" + ext, false)
: DocManagerHelper.GetDownloadUrl(Directory.GetFiles(verDir, "prev.*")[0].Replace(storagePath + "\\", ""), false);
}
else {
prevFileUrl = i == currentVersion ? FileUri
: DocManagerHelper.GetHistoryDownloadUrl(FileName, i.ToString(), "prev" + ext);
prevFileUrl = i == currentVersion ? FileUri
: DocManagerHelper.GetHistoryDownloadUrl(FileName, i.ToString(), "prev" + ext);
directPrevFileUrl = i == currentVersion ? DocManagerHelper.GetHistoryDownloadUrl(FileName, i.ToString(), "prev" + ext, false)
: DocManagerHelper.GetDownloadUrl(Directory.GetFiles(verDir, "prev.*")[0].Replace(storagePath + "\\", ""), false);
}
dataObj.Add("url", prevFileUrl);
if (IsEnabledDirectUrl)
{
dataObj.Add("directUrl", directPrevFileUrl);
}
dataObj.Add("version", i);
if (i > 1) // check if the version number is greater than 1 (the file was modified)
{
@ -290,7 +320,12 @@ namespace OnlineEditorsExampleMVC.Models
obj.Add("user", change.Count > 0 ? change["user"] : null);
var prev = (Dictionary<string, object>)histData[(i - 2).ToString()]; // get the history data from the previous file version
dataObj.Add("previous", new Dictionary<string, object>() { // write information about previous file version to the data object
dataObj.Add("previous", IsEnabledDirectUrl ? new Dictionary<string, object>() { // write information about previous file version to the data object with direct url
{ "fileType", prev["fileType"] },
{ "key", prev["key"] }, // write key and url information about previous file version
{ "url", prev["url"] },
{ "directUrl", prev["directUrl"] },
} : new Dictionary<string, object>() { // write information about previous file version to the data object without direct url
{ "fileType", prev["fileType"] },
{ "key", prev["key"] }, // write key and url information about previous file version
{ "url", prev["url"] },
@ -332,6 +367,14 @@ namespace OnlineEditorsExampleMVC.Models
Query = "type=assets&fileName=" + HttpUtility.UrlEncode("sample.docx")
};
var directCompareFileUrl = new UriBuilder(DocManagerHelper.GetServerUrl(false))
{
Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx",
Query = "type=assets&fileName=" + HttpUtility.UrlEncode("sample.docx")
};
// create an object with the information about the compared file
var dataCompareFile = new Dictionary<string, object>
{
@ -339,6 +382,11 @@ namespace OnlineEditorsExampleMVC.Models
{ "url", compareFileUrl.ToString() }
};
if (IsEnabledDirectUrl)
{
dataCompareFile.Add("directUrl", directCompareFileUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var compareFileToken = JwtManager.Encode(dataCompareFile); // encode the dataCompareFile object into the token
@ -361,6 +409,13 @@ namespace OnlineEditorsExampleMVC.Models
+ "Content\\images\\logo.png"
};
var directMailMergeUrl = new UriBuilder(DocManagerHelper.GetServerUrl(false))
{
Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "Content\\images\\logo.png"
};
// create a logo config
var logoConfig = new Dictionary<string, object>
{
@ -368,6 +423,11 @@ namespace OnlineEditorsExampleMVC.Models
{ "url", mailMergeUrl.ToString()}
};
if (IsEnabledDirectUrl)
{
logoConfig.Add("directUrl", directMailMergeUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var token = JwtManager.Encode(logoConfig); // encode logoConfig into the token
@ -392,6 +452,15 @@ namespace OnlineEditorsExampleMVC.Models
Query = "type=csv"
};
var directMailMergeUrl = new UriBuilder(DocManagerHelper.GetServerUrl(false))
{
Path =
HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx",
Query = "type=csv"
};
// create a mail merge config
var mailMergeConfig = new Dictionary<string, object>
{
@ -399,6 +468,11 @@ namespace OnlineEditorsExampleMVC.Models
{ "url", mailMergeUrl.ToString()}
};
if (IsEnabledDirectUrl)
{
mailMergeConfig.Add("directUrl", directMailMergeUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var mailmergeToken = JwtManager.Encode(mailMergeConfig); // encode mailMergeConfig into the token

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -43,6 +43,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="JWT, Version=9.0.0.0, Culture=neutral, PublicKeyToken=6f98bca0f40f2ecf, processorArchitecture=MSIL">
<HintPath>packages\JWT.9.0.3\lib\net46\JWT.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
@ -50,49 +53,49 @@
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Services" />
<Reference Include="Antlr3.Runtime">
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<HintPath>packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
</Reference>
<Reference Include="EntityFramework">
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Infrastructure">
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.Formatting">
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web.Helpers">
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http">
<Reference Include="System.Web.Http, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost">
<Reference Include="System.Web.Http.WebHost, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc">
<Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Optimization">
<Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor">
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages">
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment">
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor">
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
<Reference Include="WebGrease">
<Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
</Reference>
</ItemGroup>
@ -182,10 +185,12 @@
<Content Include="assets\AUTHORS.md" />
<Content Include="assets\LICENSE" />
<Content Include="assets\new\new.docx" />
<Content Include="assets\new\new.docxf" />
<Content Include="assets\new\new.pptx" />
<Content Include="assets\new\new.xlsx" />
<Content Include="assets\sample\csv.csv" />
<Content Include="assets\sample\sample.docx" />
<Content Include="assets\sample\sample.docxf" />
<Content Include="assets\sample\sample.pptx" />
<Content Include="assets\sample\sample.xlsx" />
<None Include="packages.config" />

View File

@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Ascensio System SIA")]
[assembly: AssemblyProduct("OnlineEditorsExampleMVC")]
[assembly: AssemblyCopyright("Ascensio System SIA 2021")]
[assembly: AssemblyCopyright("Ascensio System SIA 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,11 +16,24 @@
*
*/
var directUrl;
if (typeof jQuery != "undefined") {
jq = jQuery.noConflict();
directUrl = getUrlVars()["directUrl"] == "true";
mustReload = false;
if (directUrl)
jq("#directUrl").prop("checked", directUrl);
else
directUrl = jq("#directUrl").prop("checked");
jq("#directUrl").change(function () {
window.location = "?directUrl=" + jq(this).prop("checked");
});
jq(function () {
jq('#fileupload').fileupload({
dataType: 'json',
@ -219,7 +232,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEdit:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?fileName=" + fileId;
var url = UrlEditor + "?fileName=" + fileId + "&directUrl=" + directUrl;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -227,7 +240,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginView:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?editorsMode=view&fileName=" + fileId;
var url = UrlEditor + "?editorsMode=view&fileName=" + fileId + "&directUrl=" + directUrl;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -235,7 +248,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEmbedded:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = UrlEditor + "?editorsType=embedded&editorsMode=embedded&fileName=" + fileId;
var url = UrlEditor + "?editorsType=embedded&editorsMode=embedded&fileName=" + fileId + "&directUrl=" + directUrl;
jq("#mainProgress").addClass("embedded");
jq("#beginEmbedded").addClass("disable");
@ -289,6 +302,17 @@ if (typeof jQuery != "undefined") {
}
};
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
};
var fileList = jq("tr.tableRow");
var mouseIsOverTooltip = false;
@ -299,12 +323,12 @@ if (typeof jQuery != "undefined") {
if (hideTooltipTimeout != null) {
clearTimeout(hideTooltipTimeout);
}
jq(".info").on("touchend", function () {
jq("#info").on("touchend", function () {
showUserTooltip(true);
});
}
} else {
jq(".info").mouseover(function (event) {
jq("#info").mouseover(function (event) {
if (fileList.length > 0) {
if (hideTooltipTimeout != null) {
clearTimeout(hideTooltipTimeout);
@ -328,4 +352,18 @@ if (typeof jQuery != "undefined") {
}, 500);
});
}
jq(".info-tooltip").mouseover(function (event) {
var target = event.target;
var id = target.dataset.id ? target.dataset.id : target.id;
var tooltip = target.dataset.tooltip;
jq("<div class='tooltip'>" + tooltip + "<div class='arrow'></div></div>").appendTo("body");
var top = jq("#" + id).offset().top + jq("#" + id).outerHeight() / 2 - jq("div.tooltip").outerHeight() / 2;
var left = jq("#" + id).offset().left + jq("#" + id).outerWidth() + 20;
jq("div.tooltip").css({ "top": top, "left": left });
}).mouseout(function () {
jq("div.tooltip").remove();
});
}

View File

@ -14,7 +14,7 @@
<meta name="mobile-web-app-capable" content="yes" />
<!--
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -31,7 +31,7 @@
-->
<link rel="icon" href="<%= "content/images/" + Model.DocumentType + ".ico" %>" type="image/x-icon" />
<title><%= Model.FileName + " - ONLYOFFICE" %></title>
<%: Styles.Render("~/Content/editor") %>
</head>
@ -40,7 +40,7 @@
<div id="iframeEditor">
</div>
</div>
<%: Scripts.Render(new []{ WebConfigurationManager.AppSettings["files.docservice.url.site"] + WebConfigurationManager.AppSettings["files.docservice.url.api"] }) %>
<script type="text/javascript" language="javascript">
@ -141,7 +141,7 @@
<% Model.GetMailMergeConfig(out dataMailMergeRecipients); %>
docEditor.setMailMergeRecipients(<%= dataMailMergeRecipients%>); // insert recipient data for mail merge into the file
};
var onRequestSaveAs = function (event) { // the user is trying to save file by clicking Save Copy as... button
var title = event.data.title;
var url = event.data.url;
@ -166,6 +166,7 @@
var data = {
newfilename: newfilename,
dockey: config.document.key,
ext: config.document.fileType
};
let xhr = new XMLHttpRequest();
@ -177,6 +178,18 @@
}
};
var onRequestReferenceData = function (event) { // user refresh external data source
event.data.directUrl = !!config.document.directUrl;
let xhr = new XMLHttpRequest();
xhr.open("POST", "webeditor.ashx?type=reference");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(event.data));
xhr.onload = function () {
console.log(xhr.responseText);
docEditor.setReferenceData(JSON.parse(xhr.responseText));
}
};
config = <%= Model.GetDocConfig(Request, Url) %>;
config.width = "100%";
@ -185,7 +198,6 @@
config.events = {
'onAppReady': onAppReady,
'onDocumentStateChange': onDocumentStateChange,
'onRequestEditRights': onRequestEditRights,
'onError': onError,
'onOutdatedVersion': onOutdatedVersion,
"onMakeActionLink": onMakeActionLink,
@ -215,7 +227,7 @@
docEditor.setHistoryData(histData[ver - 1]); // send the link to the document for viewing the version history
};
// the user is trying to go back to the document from viewing the document version history
config.events['onRequestHistoryClose '] = function () {
config.events['onRequestHistoryClose'] = function () {
document.location.reload();
};
<% } %>
@ -238,6 +250,9 @@
};
// prevent file renaming for anonymous users
config.events['onRequestRename'] = onRequestRename;
config.events['onRequestReferenceData'] = onRequestReferenceData;
// prevent switch the document from the viewing into the editing mode for anonymous users
config.events['onRequestEditRights'] = onRequestEditRights;
}
if (config.editorConfig.createUrl) {

View File

@ -15,7 +15,7 @@
<meta name="viewport" content="width=device-width" />
<!--
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -70,7 +70,7 @@
<a class="try-editor form" data-type="docxf">Form template</a>
</li>
</ul>
<label class="create-sample">
<label class="side-option">
<input id="createSample" class="checkbox" type="checkbox" />With sample content
</label>
</div>
@ -86,7 +86,7 @@
<tr>
<td valign="middle">
<span class="select-user">Username</span>
<img class="info" src="content/images/info.svg" />
<img id="info" class="info" src="content/images/info.svg" />
<select class="select-user" id="user">
<% foreach (User user in Users.getAllUsers())
{ %>
@ -97,7 +97,10 @@
</tr>
<tr>
<td valign="middle">
<span class="select-user">Language editors interface</span>
<span class="select-user">Language</span>
<img class="info info-tooltip" data-id="language"
data-tooltip="Choose the language for ONLYOFFICE editors interface"
src="content/images/info.svg" />
<select class="select-user" id="language">
<% Dictionary<string, string> languages = DocManagerHelper.GetLanguages();
foreach (var lang in languages)
@ -107,6 +110,14 @@
</select>
</td>
</tr>
<tr>
<td valign="middle">
<label class="side-option">
<input id="directUrl" type="checkbox" class="checkbox" />Try opening on client
<img id="directUrlInfo" class="info info-tooltip" data-id="directUrlInfo" data-tooltip="Some files can be opened in the user's browser without connecting to the document server." src="content/images/info.svg" />
</label>
</td>
</tr>
</tbody>
</table>
</div>
@ -156,51 +167,52 @@
<tbody>
<% foreach (var storedFile in storedFiles)
{
var editUrl = "doceditor.aspx?fileID=" + HttpUtility.UrlEncode(storedFile.Name);
var isEnabledDirectUrl = DocManagerHelper.GetDirectUrl();
var editUrl = "doceditor.aspx?fileID=" + HttpUtility.UrlEncode(storedFile.Name);
var docType = FileUtility.GetFileType(storedFile.Name).ToString().ToLower();
var ext = Path.GetExtension(storedFile.Name).ToLower();
var canEdit = DocManagerHelper.EditedExts.Contains(ext);
var isFillFormDoc = DocManagerHelper.FillFormExts.Contains(ext);
%>
<tr class="tableRow" title="<%= storedFile.Name %> [<%= DocManagerHelper.GetFileVersion(storedFile.Name, HttpContext.Current.Request.UserHostAddress) %>]">
<tr class="tableRow" title="<%= storedFile.Name %> [<%= DocManagerHelper.GetFileVersion(storedFile.Name, HttpContext.Current.Request.UserHostAddress.Replace(':', '_')) %>]">
<td class="contentCells">
<a class="stored-edit <%= docType %>" href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name }) %>" target="_blank">
<a class="stored-edit <%= docType %>" href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, directUrl = isEnabledDirectUrl }) %>" target="_blank">
<span><%= storedFile.Name %></span>
</a>
</td>
<% if (canEdit) { %>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "edit" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "edit", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/desktop.svg" alt="Open in editor for full size screens" title="Open in editor for full size screens"/>
</a>
</td>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "edit" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "edit", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/mobile.svg" alt="Open in editor for mobile devices" title="Open in editor for mobile devices"/>
</a>
</td>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "comment" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "comment", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/comment.svg" alt="Open in editor for comment" title="Open in editor for comment"/>
</a>
</td>
<% if (docType == "word") { %>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "review" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "review", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/review.svg" alt="Open in editor for review" title="Open in editor for review"/>
</a>
</td>
<% } else if (docType == "cell") { %>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "filter" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "filter", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/filter.svg" alt="Open in editor without access to change the filter" title="Open in editor without access to change the filter" />
</a>
</td>
<% } %>
<% if (docType == "word") { %>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "blockcontent" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "blockcontent", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/block-content.svg" alt="Open in editor without content control modification" title="Open in editor without content control modification"/>
</a>
</td>
@ -212,7 +224,7 @@
<% } %>
<% if (isFillFormDoc) { %>
<td class="contentCells contentCells-shift contentCells-icon firstContentCellShift">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/fill-forms.svg" alt="Open in editor for filling in forms" title="Open in editor for filling in forms"/>
</a>
</td>
@ -222,7 +234,7 @@
<% } else if (isFillFormDoc) { %>
<td class="contentCells contentCells-icon "></td>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "fillForms" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/mobile-fill-forms.svg" alt="Open in editor for filling in forms for mobile devices" title="Open in editor for filling in forms for mobile devices"/>
</a>
</td>
@ -230,7 +242,7 @@
<td class="contentCells contentCells-icon "></td>
<td class="contentCells contentCells-icon "></td>
<td class="contentCells contentCells-shift contentCells-icon firstContentCellShift">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "fillForms", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/fill-forms.svg" alt="Open in editor for filling in forms" title="Open in editor for filling in forms"/>
</a>
</td>
@ -238,17 +250,17 @@
<td class="contentCells contentCells-shift contentCells-icon contentCellsEmpty" colspan="6"></td>
<% } %>
<td class="contentCells contentCells-icon firstContentCellViewers">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "view" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "desktop", editorsMode = "view", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/desktop.svg" alt="Open in viewer for full size screens" title="Open in viewer for full size screens"/>
</a>
</td>
<td class="contentCells contentCells-icon">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "view" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "mobile", editorsMode = "view", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/mobile.svg" alt="Open in viewer for mobile devices" title="Open in viewer for mobile devices"/>
</a>
</td>
<td class="contentCells contentCells-icon contentCells-shift">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "embedded", editorsMode = "embedded" }) %>" target="_blank">
<a href="<%= Url.Action("Editor", "Home", new { fileName = storedFile.Name, editorsType = "embedded", editorsMode = "embedded", directUrl = isEnabledDirectUrl }) %>" target="_blank">
<img src="content/images/embeded.svg" alt="Open in embedded mode" title="Open in embedded mode"/>
</a>
</td>

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width" />
<!--
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
@ -26,11 +26,11 @@
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
@ -46,13 +46,21 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
@ -63,7 +71,4 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -74,6 +74,9 @@ namespace OnlineEditorsExampleMVC
case "rename":
Rename(context);
break;
case "reference":
Reference(context);
break;
}
}
@ -227,11 +230,10 @@ namespace OnlineEditorsExampleMVC
var fileUri = DocManagerHelper.GetDownloadUrl(fileName);
var extension = (Path.GetExtension(fileName).ToLower() ?? "").Trim('.');
var internalExtension = DocManagerHelper.GetInternalExtension(FileUtility.GetFileType(fileName)).Trim('.');
var internalExtension = "ooxml";
// check if the file with such an extension can be converted
if (DocManagerHelper.ConvertExts.Contains("." + extension)
&& !string.IsNullOrEmpty(internalExtension))
if (DocManagerHelper.ConvertExts.Contains("." + extension))
{
// generate document key
var key = ServiceConverter.GenerateRevisionId(fileUri);
@ -244,9 +246,11 @@ namespace OnlineEditorsExampleMVC
Query = "type=download&fileName=" + HttpUtility.UrlEncode(fileName)
};
// get the url to the converted file
string newFileUri;
var result = ServiceConverter.GetConvertedUri(downloadUri.ToString(), extension, internalExtension, key, true, out newFileUri, filePass, lang);
// get the url and file type of the converted file
Dictionary<string, string> newFileData;
var result = ServiceConverter.GetConvertedData(downloadUri.ToString(), extension, internalExtension, key, true, out newFileData, filePass, lang);
var newFileUri = newFileData["fileUrl"];
var newFileType = "." + newFileData["fileType"];
if (result != 100)
{
context.Response.Write("{ \"step\" : \"" + result + "\", \"filename\" : \"" + fileName + "\"}");
@ -254,7 +258,7 @@ namespace OnlineEditorsExampleMVC
}
// get a file name of an internal file extension with an index if the file with such a name already exists
var correctName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "." + internalExtension);
var correctName = DocManagerHelper.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + newFileType);
var req = (HttpWebRequest)WebRequest.Create(newFileUri);
@ -461,25 +465,26 @@ namespace OnlineEditorsExampleMVC
var userAddress = context.Request["userAddress"];
var isEmbedded = context.Request["dmode"];
if (JwtManager.Enabled && isEmbedded == null)
if (JwtManager.Enabled && isEmbedded == null && userAddress != null && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = "";
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
return;
}
token = JwtManager.Decode(headerToken);
}
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
return;
}
}
var filePath = DocManagerHelper.ForcesavePath(fileName, userAddress, false); // get the path to the force saved document version
if (filePath.Equals(""))
if (string.IsNullOrEmpty(filePath))
{
filePath = DocManagerHelper.StoragePath(fileName, userAddress); // or to the original document
}
@ -518,16 +523,16 @@ namespace OnlineEditorsExampleMVC
var version = System.Convert.ToInt32(context.Request["ver"]);
var file = Path.GetFileName(context.Request["file"]);
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
@ -575,12 +580,111 @@ namespace OnlineEditorsExampleMVC
var jss = new JavaScriptSerializer();
var body = jss.Deserialize<Dictionary<string, object>>(fileData);
var newFileName = (string) body["newfilename"];
var docKey = (string) body["dockey"];
var docKey = (string) body["dockey"];
var origExt = '.' + (string) body["ext"];
var curExt = Path.GetExtension(newFileName).ToLower();
if (string.Compare(origExt, curExt, true) != 0)
{
newFileName += origExt;
}
var meta = new Dictionary<string, object>() {
{ "title", newFileName }
};
TrackManager.commandRequest("meta", docKey, meta);
context.Response.Write("{ \"result\": \"OK\"}");
}
private static void Reference(HttpContext context)
{
string fileData;
try
{
using (var receiveStream = context.Request.InputStream)
using (var readStream = new StreamReader(receiveStream))
{
fileData = readStream.ReadToEnd();
if (string.IsNullOrEmpty(fileData)) return;
}
}
catch (Exception e)
{
throw new HttpException((int)HttpStatusCode.BadRequest, e.Message);
}
var jss = new JavaScriptSerializer();
var body = jss.Deserialize<Dictionary<string, object>>(fileData);
Dictionary<string, object> referenceData = null;
var fileName = "";
var userAddress = "";
if (body.ContainsKey("referenceData"))
{
referenceData = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(body["referenceData"]));
var instanceId = (string)referenceData["instanceId"];
var fileKey = (string)referenceData["fileKey"];
if (instanceId == DocManagerHelper.GetServerUrl(false))
{
var fileKeyObj = jss.Deserialize<Dictionary<string, object>>(fileKey);
userAddress = (string)fileKeyObj["userAddress"];
if (userAddress == HttpUtility.UrlEncode(DocManagerHelper.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)))
{
fileName = (string)fileKeyObj["fileName"];
}
}
}
if (fileName == "")
{
try
{
var path = (string)body["path"];
path = Path.GetFileName(path);
if (File.Exists(DocManagerHelper.StoragePath(path, null)))
{
fileName = path;
}
}
catch
{
context.Response.Write("{ \"error\": \"Path not found!\"}");
return;
}
}
if (fileName == "")
{
context.Response.Write("{ \"error\": \"File not found!\"}");
return;
}
var data = new Dictionary<string, object>() {
{ "fileType", (Path.GetExtension(fileName) ?? "").ToLower() },
{ "url", DocManagerHelper.GetDownloadUrl(fileName)},
{ "directUrl", DocManagerHelper.GetDownloadUrl(fileName) },
{ "referenceData", new Dictionary<string, string>()
{
{ "fileKey", jss.Serialize(new Dictionary<string, object>{
{"fileName", fileName},
{"userAddress", HttpUtility.UrlEncode(DocManagerHelper.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress))}
})
},
{"instanceId", DocManagerHelper.GetServerUrl(false) }
}
},
{ "path", fileName }
};
if (JwtManager.Enabled)
{
var token = JwtManager.Encode(data);
data.Add("token", token);
}
context.Response.Write(jss.Serialize(data));
}
}
}

View File

@ -4,10 +4,6 @@ Entity Framework - Entity Framework is an object-relational mapper that enables
License: MICROSOFT SOFTWARE SUPPLEMENTAL TERMS, MICROSOFT SOFTWARE LICENSE TERMS
License File: EntityFramework.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -20,15 +16,27 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Microsoft.Web.Infrastructure - This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically register HTTP modules at run time. (https://www.microsoft.com/web/webpi/eula/aspnetmvc3update-eula.htm)
License: MS-EULA License
License File: Microsoft.Web.Infrastructure.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://licenses.nuget.org/MIT)
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license

View File

@ -0,0 +1,21 @@
# Public Domain
Written by John Sheehan (http://john-sheehan.com)
This work is public domain.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
For more information, please visit: http://creativecommons.org/publicdomain/zero/1.0/
# MIT
Copyright (c) 2019 Jwt.Net Maintainers and Contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please visit: https://opensource.org/licenses/MIT

View File

@ -0,0 +1,36 @@
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery-migrate
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.

View File

@ -1,4 +1,4 @@
Copyright (c) 2009 John Resig, http://jquery.com/
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@ -1,16 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net45" />
<package id="EntityFramework" version="6.4.4" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" />
<package id="WebGrease" version="1.6.0" targetFramework="net45" />
<package id="Antlr" version="3.5.0.2" targetFramework="net48" />
<package id="EntityFramework" version="6.4.4" targetFramework="net48" />
<package id="JWT" version="9.0.3" targetFramework="net48" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net48" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net48" />
<package id="WebGrease" version="1.6.0" targetFramework="net48" />
</packages>

View File

@ -1,22 +1,24 @@
<?xml version="1.0"?>
<appSettings>
<clear />
<add key="version" value="1.2.0"/>
<add key="version" value="1.5.1"/>
<add key="filesize-max" value="52428800"/>
<add key="storage-path" value=""/>
<add key="files.docservice.fillform-docs" value=".oform|.docx"/>
<add key="files.docservice.viewed-docs" value=".pdf|.djvu|.xps|.oxps"/>
<add key="files.docservice.edited-docs" value=".docx|.xlsx|.csv|.pptx|.txt|.docxf"/>
<add key="files.docservice.convert-docs" value=".docm|.dotx|.dotm|.dot|.doc|.odt|.fodt|.ott|.xlsm|.xlsb|.xltx|.xltm|.xlt|.xls|.ods|.fods|.ots|.pptm|.ppt|.ppsx|.ppsm|.pps|.potx|.potm|.pot|.odp|.fodp|.otp|.rtf|.mht|.html|.htm|.xml|.epub|.fb2"/>
<add key="files.docservice.fillform-docs" value=".docx|.oform"/>
<add key="files.docservice.viewed-docs" value=".djvu|.oxps|.pdf|.xps"/>
<add key="files.docservice.edited-docs" value=".csv|.docm|.docx|.docxf|.dotm|.dotx|.epub|.fb2|.html|.odp|.ods|.odt|.otp|.ots|.ott|.potm|.potx|.ppsm|.ppsx|.pptm|.pptx|.rtf|.txt|.xlsm|.xlsx|.xltm|.xltx"/>
<add key="files.docservice.convert-docs" value=".doc|.dot|.dps|.dpt|.epub|.et|.ett|.fb2|.fodp|.fods|.fodt|.htm|.html|.mht|.mhtml|.odp|.ods|.odt|.otp|.ots|.ott|.pot|.pps|.ppt|.rtf|.stw|.sxc|.sxi|.sxw|.wps|.wpt|.xls|.xlsb|.xlt|.xml"/>
<add key="files.docservice.timeout" value="120000" />
<add key="files.docservice.secret" value="" />
<add key="files.docservice.header" value="Authorization" />
<add key="files.docservice.token.useforrequest" value="true" />
<add key="files.docservice.verify-peer-off" value="true"/>
<add key="files.docservice.languages" value="en:English|az:Azerbaijani|be:Belarusian|bg:Bulgarian|ca:Catalan|zh:Chinese|cs:Czech|da:Danish|nl:Dutch|fi:Finnish|fr:French|gl:Galego|de:German|el:Greek|hu:Hungarian|id:Indonesian|it:Italian|ja:Japanese|ko:Korean|lv:Latvian|lo:Lao|nb:Norwegian|pl:Polish|pt:Portuguese|ro:Romanian|ru:Russian|sk:Slovak|sl:Slovenian|es:Spanish|sv:Swedish|tr:Turkish|uk:Ukrainian|vi:Vietnamese"/>
<add key="files.docservice.languages" value="en:English|hy:Armenian|az:Azerbaijani|eu:Basque|be:Belarusian|bg:Bulgarian|ca:Catalan|zh:Chinese (Simplified)|zh-TW:Chinese (Traditional)|cs:Czech|da:Danish|nl:Dutch|fi:Finnish|fr:French|gl:Galego|de:German|el:Greek|hu:Hungarian|id:Indonesian|it:Italian|ja:Japanese|ko:Korean|lo:Lao|lv:Latvian|ms:Malay (Malaysia)|no:Norwegian|pl:Polish|pt:Portuguese (Brazil)|pt-PT:Portuguese (Portugal)|ro:Romanian|ru:Russian|si:Sinhala (Sri Lanka)|sk:Slovak|sl:Slovenian|es:Spanish|sv:Swedish|tr:Turkish|uk:Ukrainian|vi:Vietnamese|aa-AA: Test Language"/>
<add key="files.docservice.url.site" value="http://documentserver/"/>

View File

@ -1,9 +1,5 @@
ONLYOFFICE Applications example uses code from the following 3rd party projects:
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -16,6 +12,22 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license

View File

@ -1,4 +1,22 @@
@media (min-width: 1280px) and (max-width: 1380px) {
/**
*
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
@media (min-width: 1280px) and (max-width: 1380px) {
.copy {
margin-right: 6.5%;
}
@ -664,3 +682,8 @@
max-width:15%;
}
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.tableRow td:first-child{
max-width: none;
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -167,7 +167,7 @@ label .checkbox {
background-image: url("images/file_docxf.svg");
}
.create-sample {
.side-option {
color: #666666;
line-height: 24px;
}
@ -744,3 +744,28 @@ html {
.user-descr > b {
margin-left: 25px;
}
.tooltip {
background: #FFFFFF;
border-radius: 5px;
box-shadow: 0px 7px 25px rgba(85, 85, 85, 0.15);
color: #666666;
line-height: 160%;
max-width: 455px;
padding: 14px;
position: absolute;
}
.tooltip ul {
margin: 0;
}
.arrow {
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
border-right: 8px solid #FFFFFF;
left: -4px;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}

View File

@ -16,7 +16,7 @@
<title>ONLYOFFICE</title>
<!--
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -73,7 +73,7 @@
<a class="try-editor form" data-type="docxf">Form template</a>
</li>
</ul>
<label class="create-sample">
<label class="side-option">
<input id="createSample" class="checkbox" type="checkbox" />With sample content
</label>
</div>
@ -88,7 +88,7 @@
<tr>
<td valign="middle">
<span class="select-user">Username</span>
<img class="info" src="app_themes/images/info.svg" />
<img id="info" class="info" src="app_themes/images/info.svg" />
<select class="select-user" id="user">
<% foreach (User user in Users.getAllUsers())
{ %>
@ -99,7 +99,10 @@
</tr>
<tr>
<td valign="middle">
<span class="select-user">Language editors interface</span>
<span class="select-user">Language</span>
<img class="info info-tooltip" data-id="language"
data-tooltip="Choose the language for ONLYOFFICE editors interface"
src="app_themes/images/info.svg" />
<select class="select-user" id="language">
<% Dictionary<string, string> languages = GetLanguages();
foreach (var lang in languages)
@ -109,6 +112,14 @@
</select>
</td>
</tr>
<tr>
<td valign="middle">
<label class="side-option">
<input id="directUrl" type="checkbox" class="checkbox" />Try opening on client
<img id="directUrlInfo" class="info info-tooltip" data-id="directUrlInfo" data-tooltip="Some files can be opened in the user's browser without connecting to the document server." src="app_themes/images/info.svg" />
</label>
</td>
</tr>
</tbody>
</table>
</div>
@ -158,14 +169,15 @@
<tbody>
<% foreach (var storedFile in storedFiles)
{
var editUrl = "doceditor.aspx?fileID=" + HttpUtility.UrlEncode(storedFile.Name);
var directUrlParam = GetDirectUrlParam();
var editUrl = "doceditor.aspx?fileID=" + HttpUtility.UrlEncode(storedFile.Name) + directUrlParam;
var ext = Path.GetExtension(storedFile.Name).ToLower();
var docType = DocumentType(storedFile.Name);
var canEdit = EditedExts.Contains(ext);
var isFillFormDoc = FillFormsExts.Contains(ext);
%>
<tr class="tableRow" title="<%= storedFile.Name %> [<%= GetFileVersion(storedFile.Name, HttpContext.Current.Request.UserHostAddress) %>]">
<tr class="tableRow" title="<%= storedFile.Name %> [<%= GetFileVersion(storedFile.Name, HttpContext.Current.Request.UserHostAddress.Replace(':','_')) %>]">
<td class="contentCells">
<a class="stored-edit <%= docType %>" href="<%= editUrl %>" target="_blank">
<span><%= storedFile.Name %></span>
@ -344,7 +356,8 @@
</footer>
</form>
<script language="javascript" type="text/javascript" src="script/jquery-1.9.0.min.js"></script>
<script language="javascript" type="text/javascript" src="script/jquery-3.6.4.min.js"></script>
<script language="javascript" type="text/javascript" src="script/jquery-migrate-3.4.1.min.js"></script>
<script language="javascript" type="text/javascript" src="script/jquery-ui.min.js"></script>
<script language="javascript" type="text/javascript" src="script/jquery.blockUI.js"></script>
<script language="javascript" type="text/javascript" src="script/jquery.iframe-transport.js"></script>

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -471,11 +471,10 @@ namespace OnlineEditorsExample
var lang = context.Request.Cookies.GetOrDefault("ulang", null);
var extension = (Path.GetExtension(_fileName).ToLower() ?? "").Trim('.');
var internalExtension = FileType.GetInternalExtension(_fileName).Trim('.');
var internalExtension = "ooxml";
// check if the file with such an extension can be converted
if (ConvertExts.Contains("." + extension)
&& !string.IsNullOrEmpty(internalExtension))
if (ConvertExts.Contains("." + extension))
{
// generate document key
var key = ServiceConverter.GenerateRevisionId(FileUri(_fileName, true));
@ -485,18 +484,20 @@ namespace OnlineEditorsExample
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
fileUrl.Query = "type=download&fileName=" + HttpUtility.UrlEncode(_fileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress);
+ "&userAddress=" + HttpUtility.UrlEncode(CurUserHostAddress(HttpContext.Current.Request.UserHostAddress));
// get the url to the converted file
string newFileUri;
var result = ServiceConverter.GetConvertedUri(fileUrl.ToString() , extension, internalExtension, key, true, out newFileUri, filePass, lang);
// get the url and file type of the converted file
Dictionary<string, string> newFileData;
var result = ServiceConverter.GetConvertedData(fileUrl.ToString() , extension, internalExtension, key, true, out newFileData, filePass, lang);
var newFileUri = newFileData["fileUrl"];
var newFileType = "." + newFileData["fileType"];
if (result != 100)
{
return "{ \"step\" : \"" + result + "\", \"filename\" : \"" + _fileName + "\"}";
}
// get a file name of an internal file extension with an index if the file with such a name already exists
var fileName = GetCorrectName(Path.GetFileNameWithoutExtension(_fileName) + "." + internalExtension);
var fileName = GetCorrectName(Path.GetFileNameWithoutExtension(_fileName) + newFileType);
var req = (HttpWebRequest)WebRequest.Create(newFileUri);
@ -626,5 +627,11 @@ namespace OnlineEditorsExample
}
return languages;
}
public static string GetDirectUrlParam()
{
string isEnabledDirectUrl = HttpUtility.ParseQueryString(HttpContext.Current.Request.Url.Query).Get("directUrl");
return "&directUrl=" + (isEnabledDirectUrl != null ? isEnabledDirectUrl : "false");
}
}
}

View File

@ -15,7 +15,7 @@
<title>ONLYOFFICE</title>
<!--
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -153,7 +153,7 @@
var onRequestMailMergeRecipients = function (event) {
docEditor.setMailMergeRecipients(<%= DataMailMergeRecipients %>); // insert recipient data for mail merge into the file
};
var onRequestSaveAs = function (event) { // the user is trying to save file by clicking Save Copy as... button
var title = event.data.title;
var url = event.data.url;
@ -178,6 +178,7 @@
var data = {
newfilename: newfilename,
dockey: config.document.key,
ext: config.document.fileType
};
let xhr = new XMLHttpRequest();
@ -189,6 +190,19 @@
}
};
var onRequestReferenceData = function (event) { // user refresh external data source
event.data.directUrl = !!config.document.directUrl;
let xhr = new XMLHttpRequest();
xhr.open("POST", "webeditor.ashx?type=reference");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(event.data));
xhr.onload = function () {
console.log(xhr.responseText);
docEditor.setReferenceData(JSON.parse(xhr.responseText));
}
};
config = <%= DocConfig %>;
config.width = "100%";
@ -197,7 +211,6 @@
config.events = {
'onAppReady': onAppReady,
'onDocumentStateChange': onDocumentStateChange,
'onRequestEditRights': onRequestEditRights,
'onError': onError,
'onOutdatedVersion': onOutdatedVersion,
'onMakeActionLink': onMakeActionLink,
@ -218,7 +231,7 @@
var histData = <%= HistoryData %>;
docEditor.setHistoryData(histData[ver - 1]); // send the link to the document for viewing the version history
};
config.events['onRequestHistoryClose '] = function () { // the user is trying to go back to the document from viewing the document version history
config.events['onRequestHistoryClose'] = function () { // the user is trying to go back to the document from viewing the document version history
document.location.reload();
};
<% } %>
@ -241,6 +254,9 @@
};
// prevent file renaming for anonymous users
config.events['onRequestRename'] = onRequestRename;
config.events['onRequestReferenceData'] = onRequestReferenceData;
// prevent switch the document from the viewing into the editing mode for anonymous users
config.events['onRequestEditRights'] = onRequestEditRights;
}
if (config.editorConfig.createUrl) {

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -81,7 +81,7 @@ namespace OnlineEditorsExample
+ "webeditor.ashx";
callbackUrl.Query = "type=track"
+ "&fileName=" + HttpUtility.UrlEncode(FileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress);
+ "&userAddress=" + HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress));
return callbackUrl.ToString();
}
}
@ -100,16 +100,17 @@ namespace OnlineEditorsExample
}
// get url to download a file
public static string getDownloadUrl(string fileName)
public static string getDownloadUrl(string fileName, Boolean isServer = true)
{
var downloadUrl = new UriBuilder(_Default.GetServerUrl(true));
var userAddress = isServer ? "&userAddress=" + HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)) : "";
var downloadUrl = new UriBuilder(_Default.GetServerUrl(isServer));
downloadUrl.Path =
HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
downloadUrl.Query = "type=download"
+ "&fileName=" + HttpUtility.UrlEncode(fileName)
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress);
+ userAddress;
return downloadUrl.ToString();
}
@ -165,6 +166,7 @@ namespace OnlineEditorsExample
var actionLink = Request.GetOrDefault("actionLink", null); // get the action link (comment or bookmark) if it exists
var actionData = string.IsNullOrEmpty(actionLink) ? null : jss.DeserializeObject(actionLink); // get action data for the action link
var directUrl = getDownloadUrl(FileName, false);
var createUrl = getCreateUrl(DocumentType, editorsType);
var templatesImageUrl = GetTemplateImageUrl(ext); // image url for templates
var templates = new List<Dictionary<string, string>>
@ -193,6 +195,7 @@ namespace OnlineEditorsExample
{
{ "title", FileName },
{ "url", getDownloadUrl(FileName) },
{ "directUrl", IsEnabledDirectUrl() ? directUrl : "" },
{ "fileType", ext.Trim('.') },
{ "key", Key },
{
@ -203,6 +206,17 @@ namespace OnlineEditorsExample
{ "favorite", favorite }
}
},
{
"referenceData", new Dictionary<string, string>()
{
{ "fileKey", !user.id.Equals("uid-0") ?
jss.Serialize(new Dictionary<string, object>{
{"fileName", FileName},
{"userAddress", HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress))}
}) : null },
{"instanceId", _Default.GetServerUrl(false) }
}
},
{
// the permission for the document to be edited and downloaded or not
"permissions", new Dictionary<string, object>
@ -216,9 +230,11 @@ namespace OnlineEditorsExample
{ "modifyFilter", editorsMode != "filter" },
{ "modifyContentControl", editorsMode != "blockcontent" },
{ "review", canEdit && (editorsMode == "edit" || editorsMode == "review") },
{ "chat", !user.id.Equals("uid-0") },
{ "reviewGroups", user.reviewGroups },
{ "commentGroups", user.commentGroups },
{ "userInfoGroups", user.userInfoGroups }
{ "userInfoGroups", user.userInfoGroups },
{ "protect", !user.deniedPermissions.Contains("protect") }
}
}
}
@ -230,6 +246,11 @@ namespace OnlineEditorsExample
{ "mode", mode },
{ "lang", Request.Cookies.GetOrDefault("ulang", "en") },
{ "callbackUrl", CallbackUrl }, // absolute URL to the document storage service
{ "coEditing", editorsMode == "view" && user.id.Equals("uid-0") ?
new Dictionary<string, object>{
{"mode", "strict"},
{"change", false}
} : null },
{ "createUrl", !user.id.Equals("uid-0") ? createUrl : null },
{ "templates", user.templates ? templates : null },
{
@ -245,9 +266,9 @@ namespace OnlineEditorsExample
// the parameters for the embedded document type
"embedded", new Dictionary<string, object>
{
{ "saveUrl", FileUriUser }, // the absolute URL that will allow the document to be saved onto the user personal computer
{ "embedUrl", FileUriUser }, // the absolute URL to the document serving as a source file for the document embedded into the web page
{ "shareUrl", FileUriUser }, // the absolute URL that will allow other users to share this document
{ "saveUrl", directUrl }, // the absolute URL that will allow the document to be saved onto the user personal computer
{ "embedUrl", directUrl }, // the absolute URL to the document serving as a source file for the document embedded into the web page
{ "shareUrl", directUrl }, // the absolute URL that will allow other users to share this document
{ "toolbarDocked", "top" } // the place for the embedded viewer toolbar (top or bottom)
}
},
@ -359,13 +380,21 @@ namespace OnlineEditorsExample
dataObj.Add("fileType", ext.Replace(".", ""));
dataObj.Add("key", key);
// write file url to the data object
var directPrevFileUrl = i == currentVersion ? _Default.FileUri(FileName, false) : MakePublicHistoryUrl(FileName, i.ToString(), "prev" + ext, false);
var prevFileUrl = i == currentVersion ? FileUri : MakePublicHistoryUrl(FileName, i.ToString(), "prev" + ext);
if (Path.IsPathRooted(storagePath))
{
prevFileUrl = i == currentVersion ? getDownloadUrl(FileName) : getDownloadUrl(Directory.GetFiles(verDir, "prev.*")[0].Replace(storagePath + "\\", ""));
directPrevFileUrl = i == currentVersion ? getDownloadUrl(FileName, false) : getDownloadUrl(Directory.GetFiles(verDir, "prev.*")[0].Replace(storagePath + "\\", ""), false);
}
dataObj.Add("url", prevFileUrl); // write file url to the data object
if (IsEnabledDirectUrl())
{
dataObj.Add("directUrl", directPrevFileUrl); // write direct url to the data object
}
dataObj.Add("version", i);
if (i > 1) // check if the version number is greater than 1 (the file was modified)
{
@ -383,11 +412,19 @@ namespace OnlineEditorsExample
obj.Add("user", change.Count > 0 ? change["user"] : null);
var prev = (Dictionary<string, object>)histData[(i - 2).ToString()]; // get the history data from the previous file version
dataObj.Add("previous", new Dictionary<string, object>() { // write information about previous file version to the data object
Dictionary<string, object> dataPrev = new Dictionary<string, object>() { // write information about previous file version to the data object
{ "fileType", prev["fileType"] },
{ "key", prev["key"] }, // write key and url information about previous file version
{ "url", prev["url"] },
});
{ "url", prev["url"] }
};
if (IsEnabledDirectUrl())
{
dataPrev.Add("directUrl", prev["directUrl"]);
}
dataObj.Add("previous", dataPrev);
// write the path to the diff.zip archive with differences in this file version
var changesUrl = MakePublicHistoryUrl(FileName, (i - 1).ToString(), "diff.zip");
dataObj.Add("changesUrl", changesUrl);
@ -420,6 +457,11 @@ namespace OnlineEditorsExample
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "App_Themes\\images\\logo.png";
var DirectImageUrl = new UriBuilder(_Default.GetServerUrl(false));
DirectImageUrl.Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "App_Themes\\images\\logo.png";
// create a logo config
Dictionary<string, object> logoConfig = new Dictionary<string, object>
{
@ -427,6 +469,11 @@ namespace OnlineEditorsExample
{ "url", InsertImageUrl.ToString()}
};
if (IsEnabledDirectUrl())
{
logoConfig.Add("directUrl", DirectImageUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var insImageToken = JwtManager.Encode(logoConfig); // encode logoConfig into the token
@ -446,6 +493,12 @@ namespace OnlineEditorsExample
+ "webeditor.ashx";
compareFileUrl.Query = "type=assets&fileName=" + HttpUtility.UrlEncode("sample.docx");
var DirectFileUrl = new UriBuilder(_Default.GetServerUrl(false));
DirectFileUrl.Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
DirectFileUrl.Query = "type=assets&fileName=" + HttpUtility.UrlEncode("sample.docx");
// create an object with the information about the compared file
Dictionary<string, object> dataCompareFile = new Dictionary<string, object>
{
@ -453,6 +506,11 @@ namespace OnlineEditorsExample
{ "url", compareFileUrl.ToString() }
};
if (IsEnabledDirectUrl())
{
dataCompareFile.Add("directUrl", DirectFileUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var compareFileToken = JwtManager.Encode(dataCompareFile); // encode the dataCompareFile object into the token
@ -473,6 +531,13 @@ namespace OnlineEditorsExample
+ "webeditor.ashx";
mailmergeUrl.Query = "type=csv";
var DirectMailMergeUrl = new UriBuilder(_Default.GetServerUrl(false));
DirectMailMergeUrl.Path =
HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
DirectMailMergeUrl.Query = "type=csv";
// create a mail merge config
Dictionary<string, object> mailMergeConfig = new Dictionary<string, object>
{
@ -480,6 +545,11 @@ namespace OnlineEditorsExample
{ "url", mailmergeUrl.ToString() }
};
if (IsEnabledDirectUrl())
{
mailMergeConfig.Add("directUrl", DirectMailMergeUrl.ToString());
}
if (JwtManager.Enabled) // if the secret key to generate token exists
{
var mailmergeToken = JwtManager.Encode(mailMergeConfig); // encode mailMergeConfig into the token
@ -521,15 +591,16 @@ namespace OnlineEditorsExample
// create the public history url
private string MakePublicHistoryUrl(string filename, string version, string file)
private string MakePublicHistoryUrl(string filename, string version, string file, Boolean isServer = true)
{
var fileUrl = new UriBuilder(_Default.GetServerUrl(true));
var userAddress = isServer ? "&userAddress=" + HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)) : "";
var fileUrl = new UriBuilder(_Default.GetServerUrl(isServer));
fileUrl.Path = HttpRuntime.AppDomainAppVirtualPath
+ (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/")
+ "webeditor.ashx";
fileUrl.Query = "type=downloadhistory&fileName=" + HttpUtility.UrlEncode(filename)
+ "&ver=" + version + "&file=" + file
+ "&userAddress=" + HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress);
+ userAddress;
return fileUrl.ToString();
}
@ -580,5 +651,12 @@ namespace OnlineEditorsExample
{ "name", uname }
}));
}
// get direct url flag
private static bool IsEnabledDirectUrl()
{
string isEnabledDirectUrl = HttpUtility.ParseQueryString(HttpContext.Current.Request.Url.Query).Get("directUrl");
return isEnabledDirectUrl != null ? Convert.ToBoolean(isEnabledDirectUrl) : false;
}
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -70,24 +70,24 @@ namespace ASC.Api.DocumentConverter
/// <param name="toExtension">Extension to which to convert</param>
/// <param name="documentRevisionId">Key for caching on service</param>
/// <param name="isAsync">Perform conversions asynchronously</param>
/// <param name="convertedDocumentUri">Uri to the converted document</param>
/// <param name="convertedDocumentData">Uri and file type of the converted document</param>
/// <returns>The percentage of conversion completion</returns>
/// <example>
/// string convertedDocumentUri;
/// GetConvertedUri("http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", ".pdf", ".docx", "http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", false, out convertedDocumentUri);
/// Dictionary<string, string> convertedDocumentData;
/// GetConvertedData("http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", ".pdf", ".docx", "http://helpcenter.onlyoffice.com/content/GettingStarted.pdf", false, out convertedDocumentData);
/// </example>
/// <exception>
/// </exception>
public static int GetConvertedUri(string documentUri,
public static int GetConvertedData(string documentUri,
string fromExtension,
string toExtension,
string documentRevisionId,
bool isAsync,
out string convertedDocumentUri,
out Dictionary<string, string> convertedDocumentData,
string filePass = null,
string lang = null)
{
convertedDocumentUri = string.Empty;
convertedDocumentData = new Dictionary<string, string>();
// check if the fromExtension parameter is defined; if not, get it from the document url
fromExtension = string.IsNullOrEmpty(fromExtension) ? Path.GetExtension(documentUri).ToLower() : fromExtension;
@ -121,7 +121,7 @@ namespace ASC.Api.DocumentConverter
{ "region", lang }
};
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
// create payload object
var payload = new Dictionary<string, object>
@ -132,7 +132,7 @@ namespace ASC.Api.DocumentConverter
var payloadToken = JwtManager.Encode(payload); // encode the payload object to the payload token
var bodyToken = JwtManager.Encode(body); // encode the body object to the body token
// create header token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // and add it to the request headers with the Bearer prefix
body.Add("token", bodyToken);
@ -159,7 +159,7 @@ namespace ASC.Api.DocumentConverter
}
}
return GetResponseUri(dataResponse, out convertedDocumentUri);
return GetResponseData(dataResponse, out convertedDocumentData);
}
/// <summary>
@ -183,9 +183,9 @@ namespace ASC.Api.DocumentConverter
/// Processing document received from the editing service
/// </summary>
/// <param name="jsonDocumentResponse">The resulting json from editing service</param>
/// <param name="responseUri">Uri to the converted document</param>
/// <param name="responseData">Uri and file type of the converted document</param>
/// <returns>The percentage of conversion completion</returns>
private static int GetResponseUri(string jsonDocumentResponse, out string responseUri)
private static int GetResponseData(string jsonDocumentResponse, out Dictionary<string, string> responseData)
{
if (string.IsNullOrEmpty(jsonDocumentResponse)) throw new ArgumentException("Invalid param", "jsonDocumentResponse");
@ -199,14 +199,20 @@ namespace ASC.Api.DocumentConverter
var isEndConvert = responseFromService.endConvert;
int resultPercent;
responseUri = string.Empty;
responseData = new Dictionary<string, string>();
var responseUri = string.Empty;
var responseFileType = string.Empty;
if (isEndConvert) // if the conversion is completed
{
responseUri = responseFromService.fileUrl; // get the file url
responseFileType = responseFromService.fileType; // get the file type
responseData.Add("fileUrl", responseUri);
responseData.Add("fileType", responseFileType);
resultPercent = 100;
}
else // if the conversion isn't completed
{
responseData.Add("fileUrl", "");
resultPercent = responseFromService.percent; // get the percentage value
if (resultPercent >= 100) resultPercent = 99;
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,12 +16,12 @@
*
*/
using System;
using JWT;
using JWT.Algorithms;
using JWT.Builder;
using JWT.Serializers;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Web.Configuration;
using System.Web.Script.Serialization;
namespace OnlineEditorsExample
{
@ -29,32 +29,22 @@ namespace OnlineEditorsExample
{
private static readonly string Secret;
public static readonly bool Enabled;
private static readonly JavaScriptSerializer Serializer;
public static readonly bool SignatureUseForRequest;
static JwtManager()
{
Secret = WebConfigurationManager.AppSettings["files.docservice.secret"] ?? ""; // get token secret from the config parameters
Enabled = !string.IsNullOrEmpty(Secret); // check if the token is enabled
Serializer = new JavaScriptSerializer(); // define java script serializer
SignatureUseForRequest = bool.Parse(WebConfigurationManager.AppSettings["files.docservice.token.useforrequest"]);
}
// encode a payload object into a token using a secret key
public static string Encode(IDictionary<string, object> payload)
{
// define the hashing algorithm and the token type
var header = new Dictionary<string, object>
{
{ "alg", "HS256" },
{ "typ", "JWT" }
};
// three parts of token
var encHeader = Base64UrlEncode(Serializer.Serialize(header)); // header
var encPayload = Base64UrlEncode(Serializer.Serialize(payload)); // payload
var hashSum = Base64UrlEncode(CalculateHash(encHeader, encPayload)); // signature
return string.Format("{0}.{1}.{2}", encHeader, encPayload, hashSum);
var encoder = new JwtEncoder(new HMACSHA256Algorithm(),
new JsonNetSerializer(),
new JwtBase64UrlEncoder());
return encoder.Encode(payload, Secret);
}
// decode a token into a payload object using a secret key
@ -62,52 +52,11 @@ namespace OnlineEditorsExample
{
if (!Enabled || string.IsNullOrEmpty(token)) return "";
var split = token.Split('.');
if (split.Length != 3) return "";
var hashSum = Base64UrlEncode(CalculateHash(split[0], split[1])); // get signature
if (hashSum != split[2]) return ""; // and check if it is equal to the signature from the token
return Base64UrlDecode(split[1]); // decode payload
}
// generate a hash code based on a key using the HMAC method
private static byte[] CalculateHash(string encHeader, string encPayload)
{
using (var hasher = new HMACSHA256(Encoding.UTF8.GetBytes(Secret)))
{
var bytes = Encoding.UTF8.GetBytes(string.Format("{0}.{1}", encHeader, encPayload));
return hasher.ComputeHash(bytes);
}
}
// encode a string into the base64 value
private static string Base64UrlEncode(string str)
{
return Base64UrlEncode(Encoding.UTF8.GetBytes(str));
}
// encode bytes into the base64 value
private static string Base64UrlEncode(byte[] bytes)
{
return Convert.ToBase64String(bytes)
.TrimEnd('=').Replace('+', '-').Replace('/', '_');
}
// decode a base64 value into the string
private static string Base64UrlDecode(string payload)
{
var b64 = payload.Replace('_', '/').Replace('-', '+');
switch (b64.Length%4)
{
case 2:
b64 += "==";
break;
case 3:
b64 += "=";
break;
}
var bytes = Convert.FromBase64String(b64);
return Encoding.UTF8.GetString(bytes);
return JwtBuilder.Create()
.WithAlgorithm(new HMACSHA256Algorithm())
.WithSecret(Secret)
.MustVerifySignature()
.Decode(token);
}
}
}

View File

@ -23,6 +23,8 @@
<IISExpressWindowsAuthentication />
<IISExpressUseClassicPipelineMode />
<TargetFrameworkProfile />
<Use64BitIISExpress />
<UseGlobalApplicationHostFile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -44,27 +46,33 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="JWT, Version=9.0.0.0, Culture=neutral, PublicKeyToken=6f98bca0f40f2ecf, processorArchitecture=MSIL">
<HintPath>packages\JWT.9.0.3\lib\net46\JWT.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Web.Infrastructure">
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Helpers">
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor">
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.Services" />
<Reference Include="System.Web.WebPages">
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment">
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor">
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
@ -153,10 +161,12 @@
<Content Include="assets\AUTHORS.md" />
<Content Include="assets\LICENSE" />
<Content Include="assets\new\new.docx" />
<Content Include="assets\new\new.docxf" />
<Content Include="assets\new\new.pptx" />
<Content Include="assets\new\new.xlsx" />
<Content Include="assets\sample\csv.csv" />
<Content Include="assets\sample\sample.docx" />
<Content Include="assets\sample\sample.docxf" />
<Content Include="assets\sample\sample.pptx" />
<Content Include="assets\sample\sample.xlsx" />
<None Include="packages.config" />

View File

@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Ascensio System SIA")]
[assembly: AssemblyProduct("OnlineEditorsExample")]
[assembly: AssemblyCopyright("Ascensio System SIA 2021")]
[assembly: AssemblyCopyright("Ascensio System SIA 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -55,9 +55,9 @@ namespace OnlineEditorsExample
var fileData = jss.Deserialize<Dictionary<string, object>>(body);
// check if the document token is enabled
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = null;
@ -76,7 +76,7 @@ namespace OnlineEditorsExample
context.Response.Write("{\"error\":1,\"message\":\"JWT expected\"}");
}
if (token != null && !token.Equals("")) // invalid signature error
if (!string.IsNullOrEmpty(token)) // invalid signature error
{
fileData = jss.Deserialize<Dictionary<string, object>>(token);
if (fileData.ContainsKey("payload"))
@ -100,9 +100,7 @@ namespace OnlineEditorsExample
var downloadUri = (string)fileData["url"];
var curExt = Path.GetExtension(fileName).ToLower(); // get current file extension
var downloadExt = fileData.ContainsKey("filetype")
? "." + (string)fileData["filetype"]
: Path.GetExtension(downloadUri).ToLower() ?? ""; // TODO: Delete in version 7.0 or higher. Support for versions below 7.0
var downloadExt = "." + (string)fileData["filetype"]; // get the extension of the downloaded file
var newFileName = fileName;
@ -112,8 +110,9 @@ namespace OnlineEditorsExample
try
{
// convert file and give url to a new file
string newFileUri;
ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileUri);
Dictionary<string, string> newFileData;
ServiceConverter.GetConvertedData(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileData);
var newFileUri = newFileData["fileUrl"];
if (string.IsNullOrEmpty(newFileUri))
{
// get the correct file name if it already exists
@ -132,37 +131,48 @@ namespace OnlineEditorsExample
_Default.VerifySSL();
var storagePath = _Default.StoragePath(newFileName, userAddress); // get the file path
var histDir = _Default.HistoryDir(storagePath); // get the path to the history directory
if (!Directory.Exists(histDir)) Directory.CreateDirectory(histDir);
var versionDir = _Default.VersionDir(histDir, _Default.GetFileVersion(histDir)); // get the path to the file version
if (!Directory.Exists(versionDir)) Directory.CreateDirectory(versionDir); // if the path doesn't exist, create it
// get the path to the previous file version and rename the storage path with it
File.Copy(_Default.StoragePath(fileName, userAddress), Path.Combine(versionDir, "prev" + curExt));
DownloadToFile(downloadUri, storagePath); // save file to the storage directory
DownloadToFile((string)fileData["changesurl"], Path.Combine(versionDir, "diff.zip")); // save file changes to the diff.zip archive
var hist = fileData.ContainsKey("changeshistory") ? (string)fileData["changeshistory"] : null;
if (string.IsNullOrEmpty(hist) && fileData.ContainsKey("history"))
try
{
var jss = new JavaScriptSerializer();
hist = jss.Serialize(fileData["history"]);
var bytesFile = DownloadFile(downloadUri); // download document file
var storagePath = _Default.StoragePath(newFileName, userAddress); // get the file path
var histDir = _Default.HistoryDir(storagePath); // get the path to the history directory
if (!Directory.Exists(histDir)) Directory.CreateDirectory(histDir);
var versionDir = _Default.VersionDir(histDir, _Default.GetFileVersion(histDir)); // get the path to the file version
if (!Directory.Exists(versionDir)) Directory.CreateDirectory(versionDir); // if the path doesn't exist, create it
// get the path to the previous file version and rename the storage path with it
File.Copy(_Default.StoragePath(fileName, userAddress), Path.Combine(versionDir, "prev" + curExt));
SaveFile(bytesFile, storagePath);// save document file
var bytesChanges = DownloadFile((string)fileData["changesurl"]); // download changes file
SaveFile(bytesChanges, Path.Combine(versionDir, "diff.zip")); // save file changes to the diff.zip archive
var hist = fileData.ContainsKey("changeshistory") ? (string)fileData["changeshistory"] : null;
if (string.IsNullOrEmpty(hist) && fileData.ContainsKey("history"))
{
var jss = new JavaScriptSerializer();
hist = jss.Serialize(fileData["history"]);
}
if (!string.IsNullOrEmpty(hist))
{
File.WriteAllText(Path.Combine(versionDir, "changes.json"), hist); // write the history changes to the changes.json file
}
File.WriteAllText(Path.Combine(versionDir, "key.txt"), (string)fileData["key"]); // write the key value to the key.txt file
string forcesavePath = _Default.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
if (!string.IsNullOrEmpty(forcesavePath)) // if the forcesaved file version exists
{
File.Delete(forcesavePath); // remove it
}
}
if (!string.IsNullOrEmpty(hist))
catch (Exception)
{
File.WriteAllText(Path.Combine(versionDir, "changes.json"), hist); // write the history changes to the changes.json file
}
File.WriteAllText(Path.Combine(versionDir, "key.txt"), (string)fileData["key"]); // write the key value to the key.txt file
string forcesavePath = _Default.ForcesavePath(newFileName, userAddress, false); // get the path to the forcesaved file version
if (!forcesavePath.Equals("")) // if the forcesaved file version exists
{
File.Delete(forcesavePath); // remove it
return 1;
}
return 0;
@ -178,9 +188,7 @@ namespace OnlineEditorsExample
string curExt = Path.GetExtension(fileName).ToLower(); // get current file extension
var downloadExt = fileData.ContainsKey("filetype")
? "." + (string)fileData["filetype"]
: Path.GetExtension(downloadUri).ToLower(); // TODO: Delete in version 7.0 or higher. Support for versions below 7.0
var downloadExt = "." + (string)fileData["filetype"]; // get the extension of the downloaded file
Boolean newFileName = false;
@ -190,8 +198,9 @@ namespace OnlineEditorsExample
try
{
// convert file and give url to a new file
string newFileUri;
var result = ServiceConverter.GetConvertedUri(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileUri);
Dictionary<string, string> newFileData;
var result = ServiceConverter.GetConvertedData(downloadUri, downloadExt, curExt, ServiceConverter.GenerateRevisionId(downloadUri), false, out newFileData);
var newFileUri = newFileData["fileUrl"];
if (string.IsNullOrEmpty(newFileUri))
{
newFileName = true;
@ -209,43 +218,51 @@ namespace OnlineEditorsExample
_Default.VerifySSL();
string forcesavePath = "";
Boolean isSubmitForm = fileData["forcesavetype"].ToString().Equals("3"); // SubmitForm
if (isSubmitForm) // if the form is submitted
try
{
if (newFileName)
var bytesFile = DownloadFile(downloadUri); // download document file
string forcesavePath = "";
Boolean isSubmitForm = fileData["forcesavetype"].ToString().Equals("3"); // SubmitForm
if (isSubmitForm) // if the form is submitted
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + downloadExt, userAddress); // get the correct file name if it already exists
if (newFileName)
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + downloadExt, userAddress); // get the correct file name if it already exists
} else
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + curExt, userAddress);
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + "-form" + curExt, userAddress);
}
forcesavePath = _Default.StoragePath(fileName, userAddress);
}
forcesavePath = _Default.StoragePath(fileName, userAddress);
}
else
{
if (newFileName)
else
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
if (newFileName)
{
fileName = _Default.GetCorrectName(Path.GetFileNameWithoutExtension(fileName) + downloadExt, userAddress);
}
forcesavePath = _Default.ForcesavePath(fileName, userAddress, false);
if (string.IsNullOrEmpty(forcesavePath)) // create forcesave path if it doesn't exist
{
forcesavePath = _Default.ForcesavePath(fileName, userAddress, true);
}
}
forcesavePath = _Default.ForcesavePath(fileName, userAddress, false);
if (forcesavePath.Equals("")) // create forcesave path if it doesn't exist
SaveFile(bytesFile, forcesavePath);// save document file
if (isSubmitForm)
{
forcesavePath = _Default.ForcesavePath(fileName, userAddress, true);
var jss = new JavaScriptSerializer();
var actions = jss.Deserialize<List<object>>(jss.Serialize(fileData["actions"]));
var action = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(actions[0]));
var user = action["userid"].ToString(); // get the user id
DocEditor.CreateMeta(fileName, user, "Filling Form", userAddress); // create meta data for the forcesaved file
}
}
DownloadToFile(downloadUri, forcesavePath);
if (isSubmitForm)
catch (Exception)
{
var jss = new JavaScriptSerializer();
var actions = jss.Deserialize<List<object>>(jss.Serialize(fileData["actions"]));
var action = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(actions[0]));
var user = action["userid"].ToString(); // get the user id
DocEditor.CreateMeta(fileName, user, "Filling Form", userAddress); // create meta data for the forcesaved file
return 1;
}
return 0;
@ -273,7 +290,7 @@ namespace OnlineEditorsExample
}
// check if a secret key to generate token exists or not
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
var payload = new Dictionary<string, object>
{
@ -282,7 +299,7 @@ namespace OnlineEditorsExample
var payloadToken = JwtManager.Encode(payload); // encode a payload object into a header token
var bodyToken = JwtManager.Encode(body); // encode body into a body token
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
request.Headers.Add(JWTheader, "Bearer " + payloadToken); // add a header Authorization with a header token and Authorization prefix in it
body.Add("token", bodyToken);
@ -317,26 +334,29 @@ namespace OnlineEditorsExample
}
}
private static void SaveFile(byte[] data, string path)
{
using (var fs = File.Open(path, FileMode.Create))
{
fs.Write(data, 0, data.Length);
}
}
// save file information from the url to the file specified
private static void DownloadToFile(string url, string path)
private static byte[] DownloadFile(string url)
{
if (string.IsNullOrEmpty(url)) throw new ArgumentException("url"); // url isn't specified
if (string.IsNullOrEmpty(path)) throw new ArgumentException("path"); // file isn't specified
var req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 5000;
using (var stream = req.GetResponse().GetResponseStream()) // get input stream of the file information from the url
{
if (stream == null) throw new Exception("stream is null");
const int bufferSize = 4096;
using (var fs = File.Open(path, FileMode.Create))
using (MemoryStream memoryStream = new MemoryStream())
{
var buffer = new byte[bufferSize];
int readed;
while ((readed = stream.Read(buffer, 0, bufferSize)) != 0)
{
fs.Write(buffer, 0, readed); // write bytes to the output stream
}
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -66,7 +66,10 @@ namespace OnlineEditorsExample
"Can't mention others in comments",
"Can't create new files from the editor",
"Cant see anyones information",
"Can't rename files from the editor"
"Can't rename files from the editor",
"Can't view chat",
"Can't protect file",
"View file without collaboration",
};
private static List<User> users = new List<User>() {
@ -128,7 +131,7 @@ namespace OnlineEditorsExample
new Dictionary<string, object>(),
new List<string>(),
null,
new List<string>(),
new List<string>() { "protect" },
descr_user_0,
false
)

View File

@ -1,4 +1,22 @@
using System.Web;
/**
*
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
using System.Web;
namespace OnlineEditorsExample
{

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings configSource="settings.config" />
<system.web>
@ -9,9 +9,9 @@
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering>
@ -25,4 +25,20 @@
</requestFiltering>
</security>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -26,6 +26,7 @@ using System.Diagnostics;
using System.Web.Configuration;
using System.Linq;
using System.Net;
using System.Net.Sockets;
namespace OnlineEditorsExample
{
@ -71,6 +72,9 @@ namespace OnlineEditorsExample
case "rename":
Rename(context);
break;
case "reference":
Reference(context);
break;
}
}
@ -207,7 +211,7 @@ namespace OnlineEditorsExample
try
{
var fileName = Path.GetFileName(context.Request["fileName"]);
var path = _Default.StoragePath(fileName, HttpUtility.UrlEncode(HttpContext.Current.Request.UserHostAddress));
var path = _Default.StoragePath(fileName, HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)));
var histDir = _Default.HistoryDir(path);
if (File.Exists(path)) File.Delete(path); // delete file
@ -281,26 +285,26 @@ namespace OnlineEditorsExample
var userAddress = Path.GetFileName(context.Request["userAddress"]);
var isEmbedded = context.Request["dmode"];
if (JwtManager.Enabled && isEmbedded == null)
if (JwtManager.Enabled && isEmbedded == null && userAddress != null && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string token = "";
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
return;
}
token = JwtManager.Decode(headerToken);
}
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
return;
}
}
var filePath = _Default.ForcesavePath(fileName, userAddress, false); // get the path to the force saved document version
if (filePath.Equals(""))
if (string.IsNullOrEmpty(filePath))
{
filePath = _Default.StoragePath(fileName, userAddress); // or to the original document
}
@ -338,16 +342,16 @@ namespace OnlineEditorsExample
var version = Path.GetFileName(context.Request["ver"]);
var file = Path.GetFileName(context.Request["file"]);
if (JwtManager.Enabled)
if (JwtManager.Enabled && JwtManager.SignatureUseForRequest)
{
string JWTheader = WebConfigurationManager.AppSettings["files.docservice.header"].Equals("") ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
string JWTheader = string.IsNullOrEmpty(WebConfigurationManager.AppSettings["files.docservice.header"]) ? "Authorization" : WebConfigurationManager.AppSettings["files.docservice.header"];
if (context.Request.Headers.AllKeys.Contains(JWTheader, StringComparer.InvariantCultureIgnoreCase))
{
var headerToken = context.Request.Headers.Get(JWTheader).Substring("Bearer ".Length);
string token = JwtManager.Decode(headerToken);
if (token == null || token.Equals(""))
if (string.IsNullOrEmpty(token))
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
context.Response.Write("JWT validation failed");
@ -394,11 +398,109 @@ namespace OnlineEditorsExample
var body = jss.Deserialize<Dictionary<string, object>>(fileData);
var newFileName = (string) body["newfilename"];
var docKey = (string) body["dockey"];
var origExt = '.' + (string) body["ext"];
var curExt = Path.GetExtension(newFileName).ToLower();
if (string.Compare(origExt, curExt, true) != 0)
{
newFileName += origExt;
}
var meta = new Dictionary<string, object>() {
{ "title", newFileName }
};
TrackManager.commandRequest("meta", docKey, meta);
context.Response.Write("{ \"result\": \"OK\"}");
}
private static void Reference(HttpContext context)
{
string fileData;
try
{
using (var receiveStream = context.Request.InputStream)
using (var readStream = new StreamReader(receiveStream))
{
fileData = readStream.ReadToEnd();
if (string.IsNullOrEmpty(fileData)) return;
}
}
catch (Exception e)
{
throw new HttpException((int)HttpStatusCode.BadRequest, e.Message);
}
var jss = new JavaScriptSerializer();
var body = jss.Deserialize<Dictionary<string, object>>(fileData);
Dictionary<string, object> referenceData = null;
var fileName = "";
var userAddress = "";
if (body.ContainsKey("referenceData"))
{
referenceData = jss.Deserialize<Dictionary<string, object>>(jss.Serialize(body["referenceData"]));
var instanceId = (string)referenceData["instanceId"];
var fileKey = (string)referenceData["fileKey"];
if (instanceId == _Default.GetServerUrl(false))
{
var fileKeyObj = jss.Deserialize<Dictionary<string, object>>(fileKey);
userAddress = (string)fileKeyObj["userAddress"];
if (userAddress == HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress)))
{
fileName = (string)fileKeyObj["fileName"];
}
}
}
if (fileName == "")
{
try
{
var path = (string)body["path"];
path = Path.GetFileName(path);
if (File.Exists(_Default.StoragePath(path, null)))
{
fileName = path;
}
}
catch
{
context.Response.Write("{ \"error\": \"Path not found!\"}");
return;
}
}
if (fileName == "")
{
context.Response.Write("{ \"error\": \"File not found!\"}");
return;
}
var data = new Dictionary<string, object>() {
{ "fileType", (Path.GetExtension(fileName) ?? "").ToLower() },
{ "url", DocEditor.getDownloadUrl(fileName)},
{ "directUrl", DocEditor.getDownloadUrl(fileName) },
{ "referenceData", new Dictionary<string, string>()
{
{ "fileKey", jss.Serialize(new Dictionary<string, object>{
{"fileName", fileName},
{"userAddress", HttpUtility.UrlEncode(_Default.CurUserHostAddress(HttpContext.Current.Request.UserHostAddress))}
})
},
{"instanceId", _Default.GetServerUrl(false) }
}
},
{ "path", fileName }
};
if (JwtManager.Enabled)
{
var token = JwtManager.Encode(data);
data.Add("token", token);
}
context.Response.Write(jss.Serialize(data));
}
}
}

View File

@ -1,9 +1,5 @@
ONLYOFFICE Applications example uses code from the following 3rd party projects:
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
License File: jQuery.BlockUI.license
@ -16,6 +12,22 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JWT - JWT (JSON Web Token) Implementation for .NET (Public Domain) (https://github.com/jwt-dotnet/jwt/)
License: MIT
License File: JWT.license
Newtonsoft.Json - Json.NET is a popular high-performance JSON framework for .NET (https://github.com/JamesNK/Newtonsoft.Json)
License: MIT
License File: Newtonsoft.Json.license

View File

@ -0,0 +1,21 @@
# Public Domain
Written by John Sheehan (http://john-sheehan.com)
This work is public domain.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
For more information, please visit: http://creativecommons.org/publicdomain/zero/1.0/
# MIT
Copyright (c) 2019 Jwt.Net Maintainers and Contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please visit: https://opensource.org/licenses/MIT

View File

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2007 James Newton-King
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,36 @@
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery-migrate
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.

View File

@ -1,4 +1,4 @@
Copyright (c) 2009 John Resig, http://jquery.com/
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="JWT" version="9.0.3" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net48" />
</packages>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,11 +16,24 @@
*
*/
var directUrl;
if (typeof jQuery != "undefined") {
jq = jQuery.noConflict();
directUrl = getUrlVars()["directUrl"] == "true";
mustReload = false;
if (directUrl)
jq("#directUrl").prop("checked", directUrl);
else
directUrl = jq("#directUrl").prop("checked");
jq("#directUrl").change(function () {
window.location = "?directUrl=" + jq(this).prop("checked");
});
jq(function () {
jq('#fileupload').fileupload({
dataType: 'json',
@ -219,7 +232,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEdit:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.aspx?fileID=" + fileId;
var url = "doceditor.aspx?fileID=" + fileId + "&directUrl=" + directUrl;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -227,7 +240,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginView:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.aspx?editorsMode=view&fileID=" + fileId;
var url = "doceditor.aspx?editorsMode=view&fileID=" + fileId + "&directUrl=" + directUrl;
window.open(url, "_blank");
jq('#hiddenFileName').val("");
jq.unblockUI();
@ -235,7 +248,7 @@ if (typeof jQuery != "undefined") {
jq(document).on("click", "#beginEmbedded:not(.disable)", function () {
var fileId = encodeURIComponent(jq('#hiddenFileName').val());
var url = "doceditor.aspx?editorsType=embedded&editorsMode=embedded&fileID=" + fileId;
var url = "doceditor.aspx?editorsType=embedded&editorsMode=embedded&fileID=" + fileId + "&directUrl=" + directUrl;
jq("#mainProgress").addClass("embedded");
jq("#beginEmbedded").addClass("disable");
@ -288,6 +301,17 @@ if (typeof jQuery != "undefined") {
}
};
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
};
var fileList = jq("tr.tableRow");
var mouseIsOverTooltip = false;
@ -298,12 +322,12 @@ if (typeof jQuery != "undefined") {
if (hideTooltipTimeout != null) {
clearTimeout(hideTooltipTimeout);
}
jq(".info").on("touchend", function () {
jq("#info").on("touchend", function () {
showUserTooltip(true);
});
}
} else {
jq(".info").mouseover(function (event) {
jq("#info").mouseover(function (event) {
if (fileList.length > 0) {
if (hideTooltipTimeout != null) {
clearTimeout(hideTooltipTimeout);
@ -327,4 +351,18 @@ if (typeof jQuery != "undefined") {
}, 500);
});
}
jq(".info-tooltip").mouseover(function (event) {
var target = event.target;
var id = target.dataset.id ? target.dataset.id : target.id;
var tooltip = target.dataset.tooltip;
jq("<div class='tooltip'>" + tooltip + "<div class='arrow'></div></div>").appendTo("body");
var top = jq("#" + id).offset().top + jq("#" + id).outerHeight() / 2 - jq("div.tooltip").outerHeight() / 2;
var left = jq("#" + id).offset().left + jq("#" + id).outerWidth() + 20;
jq("div.tooltip").css({ "top": top, "left": left });
}).mouseout(function () {
jq("div.tooltip").remove();
});
}

View File

@ -1,21 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<clear />
<add key="version" value="1.2.0"/>
<add key="version" value="1.5.1"/>
<add key="filesize-max" value="52428800"/>
<add key="storage-path" value=""/>
<add key="files.docservice.fillform-docs" value=".oform|.docx"/>
<add key="files.docservice.viewed-docs" value=".pdf|.djvu|.xps|.oxps"/>
<add key="files.docservice.edited-docs" value=".docx|.xlsx|.csv|.pptx|.txt|.docxf"/>
<add key="files.docservice.convert-docs" value=".docm|.dotx|.dotm|.dot|.doc|.odt|.fodt|.ott|.xlsm|.xlsb|.xltx|.xltm|.xlt|.xls|.ods|.fods|.ots|.pptm|.ppt|.ppsx|.ppsm|.pps|.potx|.potm|.pot|.odp|.fodp|.otp|.rtf|.mht|.html|.htm|.xml|.epub|.fb2"/>
<add key="files.docservice.fillform-docs" value=".docx|.oform"/>
<add key="files.docservice.viewed-docs" value=".djvu|.oxps|.pdf|.xps"/>
<add key="files.docservice.edited-docs" value=".csv|.docm|.docx|.docxf|.dotm|.dotx|.epub|.fb2|.html|.odp|.ods|.odt|.otp|.ots|.ott|.potm|.potx|.ppsm|.ppsx|.pptm|.pptx|.rtf|.txt|.xlsm|.xlsx|.xltm|.xltx"/>
<add key="files.docservice.convert-docs" value=".doc|.dot|.dps|.dpt|.epub|.et|.ett|.fb2|.fodp|.fods|.fodt|.htm|.html|.mht|.mhtml|.odp|.ods|.odt|.otp|.ots|.ott|.pot|.pps|.ppt|.rtf|.stw|.sxc|.sxi|.sxw|.wps|.wpt|.xls|.xlsb|.xlt|.xml"/>
<add key="files.docservice.timeout" value="120000" />
<add key="files.docservice.secret" value="" />
<add key="files.docservice.header" value="Authorization" />
<add key="files.docservice.verify-peer-off" value="true"/>
<add key="files.docservice.languages" value="en:English|az:Azerbaijani|be:Belarusian|bg:Bulgarian|ca:Catalan|zh:Chinese|cs:Czech|da:Danish|nl:Dutch|fi:Finnish|fr:French|gl:Galego|de:German|el:Greek|hu:Hungarian|id:Indonesian|it:Italian|ja:Japanese|ko:Korean|lv:Latvian|lo:Lao|nb:Norwegian|pl:Polish|pt:Portuguese|ro:Romanian|ru:Russian|sk:Slovak|sl:Slovenian|es:Spanish|sv:Swedish|tr:Turkish|uk:Ukrainian|vi:Vietnamese"/>
<add key="files.docservice.token.useforrequest" value="true" />
<add key="files.docservice.languages" value="en:English|hy:Armenian|az:Azerbaijani|eu:Basque|be:Belarusian|bg:Bulgarian|ca:Catalan|zh:Chinese (Simplified)|zh-TW:Chinese (Traditional)|cs:Czech|da:Danish|nl:Dutch|fi:Finnish|fr:French|gl:Galego|de:German|el:Greek|hu:Hungarian|id:Indonesian|it:Italian|ja:Japanese|ko:Korean|lo:Lao|lv:Latvian|ms:Malay (Malaysia)|no:Norwegian|pl:Polish|pt:Portuguese (Brazil)|pt-PT:Portuguese (Portugal)|ro:Romanian|ru:Russian|si:Sinhala (Sri Lanka)|sk:Slovak|sl:Slovenian|es:Spanish|sv:Swedish|tr:Turkish|uk:Ukrainian|vi:Vietnamese|aa-AA: Test Language"/>
<add key="files.docservice.url.site" value="http://documentserver/"/>

View File

@ -1,19 +0,0 @@
# Eclipse
.classpath
.project
.settings/
# Intellij
.idea/
*.iml
*.iws
# Mac
.DS_Store
# Maven
log/
target/
#project
documents

View File

@ -1,8 +1,17 @@
ONLYOFFICE Applications example uses code from the following 3rd party projects:
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
@ -16,10 +25,30 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Project Lombok - Project Lombok is a java library that automatically plugs into your editor and build tools. (https://mvnrepository.com/artifact/org.projectlombok/lombok).
License: MIT
License File lombok.license
ModelMapper - ModelMapper is an intelligent object mapping library that automatically maps objects to each other. (https://github.com/modelmapper/modelmapper)
License: Apache 2.0
License File modelmapper.license
Prime JWT - is intended to be fast and easy to use. Prime JWT has a single external dependency on Jackson. (https://github.com/ws-apps/prime-jwt/blob/master/LICENSE)
License: Apache 2.0
License File: prime-jwt.license
@ -39,27 +68,3 @@ License File: spring-boot.license
Spring Data JPA - Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate. (https://github.com/spring-projects/spring-data-jpa/blob/main/LICENSE.txt)
License: Apache 2.0
License File: spring-data-jpa.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license
ModelMapper - ModelMapper is an intelligent object mapping library that automatically maps objects to each other. (https://github.com/modelmapper/modelmapper)
License: Apache 2.0
License File modelmapper.license
Project Lombok - Project Lombok is a java library that automatically plugs into your editor and build tools. (https://mvnrepository.com/artifact/org.projectlombok/lombok).
License: MIT
License File lombok.license

View File

@ -139,11 +139,11 @@ See the detailed guide to learn how to install Document Server [for Linux](https
a) archive with Java-Spring:
```
wget https://api.onlyoffice.com/app_data/editor/Java-Spring%20Example.zip
wget https://api.onlyoffice.com/app_data/editor/Java%20Spring%20Example.zip
```
```
unzip Java-Spring\ Example.zip
unzip Java\ Spring\ Example.zip
```
b) git repository:
```
@ -156,7 +156,7 @@ See the detailed guide to learn how to install Document Server [for Linux](https
a) from archive
```
cd Java-Spring\ Example/
cd Java\ Spring\ Example/
```
b) from git repository
```

View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN"
"https://checkstyle.org/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks="HideUtilityClassConstructor" files="IntegrationApplication.java"/>
<suppress checks="DesignForExtension" files="."/>
<suppress checks="ParameterNumber" files="."/>
<suppress checks="JavadocPackage" files="."/>
<suppress checks="JavadocVariable" files="."/>
<suppress checks="MissingJavadocMethod" files="."/>
</suppressions>

View File

@ -0,0 +1,199 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<!--
Checkstyle configuration that checks the sun coding conventions from:
- the Java Language Specification at
https://docs.oracle.com/javase/specs/jls/se11/html/index.html
- the Sun Code Conventions at https://www.oracle.com/java/technologies/javase/codeconventions-contents.html
- the Javadoc guidelines at
https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html
- the JDK Api documentation https://docs.oracle.com/en/java/javase/11/
- some best practices
Checkstyle is very configurable. Be sure to read the documentation at
https://checkstyle.org (or in your downloaded distribution).
Most Checks are configurable, be sure to consult the documentation.
To completely disable a check, just comment it out or delete it from the file.
To suppress certain violations please review suppression filters.
Finally, it is worth reading the documentation.
-->
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
https://checkstyle.org/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="error"/>
<property name="fileExtensions" value="java, properties, xml"/>
<!-- Excludes all 'module-info.java' files -->
<!-- See https://checkstyle.org/config_filefilters.html -->
<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>
<!-- https://checkstyle.org/config_filters.html#SuppressionFilter -->
<module name="SuppressionFilter">
<property name="file" value="${org.checkstyle.sun.suppressionfilter.config}"
default="checkstyle-suppressions.xml" />
<property name="optional" value="true"/>
</module>
<!-- Checks that a package-info.java file exists for each package. -->
<!-- See https://checkstyle.org/config_javadoc.html#JavadocPackage -->
<module name="JavadocPackage"/>
<!-- Checks whether files end with a new line. -->
<!-- See https://checkstyle.org/config_misc.html#NewlineAtEndOfFile -->
<module name="NewlineAtEndOfFile"/>
<!-- Checks that property files contain the same keys. -->
<!-- See https://checkstyle.org/config_misc.html#Translation -->
<module name="Translation"/>
<!-- Checks for Size Violations. -->
<!-- See https://checkstyle.org/config_sizes.html -->
<module name="FileLength"/>
<module name="LineLength">
<property name="fileExtensions" value="java"/>
<property name="max" value="120"/>
</module>
<!-- Checks for whitespace -->
<!-- See https://checkstyle.org/config_whitespace.html -->
<module name="FileTabCharacter"/>
<!-- Miscellaneous other checks. -->
<!-- See https://checkstyle.org/config_misc.html -->
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="message" value="Line has trailing spaces."/>
</module>
<!-- Checks for Headers -->
<!-- See https://checkstyle.org/config_header.html -->
<module name="Header">
<property name="headerFile" value="onlyoffice.header"/>
<property name="fileExtensions" value="java"/>
</module>
<module name="TreeWalker">
<!-- Checks for Javadoc comments. -->
<!-- See https://checkstyle.org/config_javadoc.html -->
<module name="InvalidJavadocPosition"/>
<module name="JavadocMethod"/>
<module name="JavadocType"/>
<module name="JavadocVariable"/>
<module name="JavadocStyle"/>
<module name="MissingJavadocMethod"/>
<!-- Checks for Naming Conventions. -->
<!-- See https://checkstyle.org/config_naming.html -->
<module name="ConstantName"/>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="PackageName"/>
<module name="ParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<!-- Checks for imports -->
<!-- See https://checkstyle.org/config_imports.html -->
<module name="AvoidStarImport"/>
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports">
<property name="processJavadoc" value="false"/>
</module>
<!-- Checks for Size Violations. -->
<!-- See https://checkstyle.org/config_sizes.html -->
<module name="MethodLength"/>
<module name="ParameterNumber"/>
<!-- Checks for whitespace -->
<!-- See https://checkstyle.org/config_whitespace.html -->
<module name="EmptyForIteratorPad"/>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="NoWhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<!-- Modifier Checks -->
<!-- See https://checkstyle.org/config_modifier.html -->
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<!-- Checks for blocks. You know, those {}'s -->
<!-- See https://checkstyle.org/config_blocks.html -->
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>
<!-- Checks for common coding problems -->
<!-- See https://checkstyle.org/config_coding.html -->
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="HiddenField"/>
<module name="IllegalInstantiation"/>
<module name="InnerAssignment"/>
<module name="MagicNumber"/>
<module name="MissingSwitchDefault"/>
<module name="MultipleVariableDeclarations"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<!-- Checks for class design -->
<!-- See https://checkstyle.org/config_design.html -->
<module name="DesignForExtension"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
<module name="VisibilityModifier"/>
<!-- Miscellaneous other checks. -->
<!-- See https://checkstyle.org/config_misc.html -->
<module name="ArrayTypeStyle"/>
<module name="FinalParameters"/>
<module name="TodoComment"/>
<module name="UpperEll"/>
<!-- https://checkstyle.org/config_filters.html#SuppressionXpathFilter -->
<module name="SuppressionXpathFilter">
<property name="file" value="${org.checkstyle.sun.suppressionxpathfilter.config}"
default="checkstyle-xpath-suppressions.xml" />
<property name="optional" value="true"/>
</module>
</module>
</module>

View File

@ -1,8 +1,17 @@
ONLYOFFICE Applications example uses code from the following 3rd party projects:
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license
jQuery.BlockUI - The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the browser. (https://github.com/malsup/blockui/)
License: MIT, GPL
@ -16,10 +25,30 @@ jQuery.iframe-transport - jQuery Iframe Transport Plugin for File Upload (https:
License: MIT
License File: jQuery.iframe-transport.license
jQuery - jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at https://nugetpackages.codeplex.com/ (https://jquery.org/license/)
License: MIT
License File: jQuery.license
jQuery.Migrate - Upgrading libraries such as jQuery can be a lot of work, when breaking changes have been introduced. jQuery Migrate makes this easier, by restoring the APIs that were removed, and additionally shows warnings in the browser console (development version of jQuery Migrate only) when removed and/or deprecated APIs are used. (https://github.com/jquery/jquery-migrate/blob/main/LICENSE.txt)
License: OpenJS
License File: jQuery.Migrate.license
jQuery.UI - jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. (https://jquery.org/license/)
License: MIT
License File: jQuery.UI.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Project Lombok - Project Lombok is a java library that automatically plugs into your editor and build tools. (https://mvnrepository.com/artifact/org.projectlombok/lombok).
License: MIT
License File lombok.license
ModelMapper - ModelMapper is an intelligent object mapping library that automatically maps objects to each other. (https://github.com/modelmapper/modelmapper)
License: Apache 2.0
License File modelmapper.license
Prime JWT - is intended to be fast and easy to use. Prime JWT has a single external dependency on Jackson. (https://github.com/ws-apps/prime-jwt/blob/master/LICENSE)
License: Apache 2.0
License File: prime-jwt.license
@ -39,19 +68,3 @@ License File: spring-boot.license
Spring Data JPA - Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate. (https://github.com/spring-projects/spring-data-jpa/blob/main/LICENSE.txt)
License: Apache 2.0
License File: spring-data-jpa.license
H2 Database Engine - This software contains unmodified binary redistributions for H2 database engine. H2 is a relational DBMS that can be embedded in java applications. (https://h2database.com/html/license.html)
License: MPL 2.0 or EPL 1.0
License File: h2database.license
JSON.simple - JSON.simple is a simple Java toolkit for JSON. You can use JSON.simple to encode or decode JSON text. (https://github.com/fangyidong/json-simple/blob/master/LICENSE.txt)
License: Apache 2.0
License File: JSON.simple.license
Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation. (https://github.com/google/gson/blob/master/LICENSE)
License: Apache 2.0
License File: gson.license
Jackson Databind - General-purpose data-binding functionality and tree-model for Jackson Data Processor. (https://github.com/FasterXML/jackson-databind/blob/master/LICENSE)
License: Apache 2.0
License File: jackson-databind.license

View File

@ -0,0 +1,36 @@
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery-migrate
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.

View File

@ -1,4 +1,4 @@
Copyright (c) 2009 John Resig, http://jquery.com/
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@ -0,0 +1,17 @@
/**
*
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

33
web/documentserver-example/java-spring/pom.xml Executable file → Normal file
View File

@ -48,7 +48,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>com.inversoft</groupId>
@ -61,10 +61,15 @@
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.2</version>
<version>2.13.4.2</version>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
@ -78,6 +83,30 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<failsOnError>true</failsOnError>
<failOnViolation>true</failOnViolation>
<logViolationsToConsole>true</logViolationsToConsole>
<violationSeverity>warning</violationSeverity>
<consoleOutput>true</consoleOutput>
<includeTestSourceDirectory>true
</includeTestSourceDirectory>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -32,8 +32,9 @@ public class ExampleData {
@Autowired
private UserServices userService;
@PostConstruct
public void init(){
List<String> description_user_0=List.of( // the description for user 0
public void init() {
// the description for user 0
List<String> descriptionUserZero = List.of(
"The name is requested when the editor is opened",
"Doesnt belong to any group",
"Can review all the changes",
@ -42,51 +43,73 @@ public class ExampleData {
"Can't mention others in comments",
"Can't create new files from the editor",
"Cant see anyones information",
"Can't rename files from the editor"
"Can't rename files from the editor",
"Can't view chat",
"Can't protect file",
"View file without collaboration"
);
List<String> description_user_1 = List.of( // the description for user 1
// the description for user 1
List<String> descriptionUserFirst = List.of(
"File author by default",
"He doesnt belong to any of the groups",
"He can review all the changes",
"He can do everything with the comments",
"The file favorite state is undefined",
"Can create a file from a template with data from the editor",
"Can see the information about all users"
"Can see the information about all users",
"Can view chat"
);
List<String> description_user_2 = List.of( // the description for user 2
// the description for user 2
List<String> descriptionUserSecond = List.of(
"He belongs to Group2",
"He can review only his own changes or the changes made by the users who dont belong to any of the groups",
"He can view every comment, edit his comments and the comments left by the users who don't belong to any of the groups and remove only his comments",
"He can review only his own changes or the changes made by the users who dont belong"
+ " to any of the groups",
"He can view every comment, edit his comments and the comments left by the users "
+ "who don't belong to any of the groups and remove only his comments",
"This file is favorite",
"Can create a file from an editor",
"Can see the information about users from Group2 and users who dont belong to any group"
"Can see the information about users from Group2 and users who dont belong to any group",
"Can view chat"
);
List<String> description_user_3 = List.of( // the description for user 3
// the description for user 3
List<String> descriptionUserThird = List.of(
"He belongs to Group3",
"He can review only the changes made by the users from Group2",
"He can view the comments left by the users from Group2 and Group3 and edit the comments left by the users from Group2",
"He can view the comments left by the users from Group2 and Group3 and edit the comments left by "
+ "the users from Group2",
"This file isnt favorite",
"He cant copy data from the file into the clipboard",
"He cant download the file",
"He cant print the file",
"Can create a file from an editor",
"Can see the information about Group2 users"
"Can see the information about Group2 users",
"Can view chat"
);
userService.createUser("John Smith", "smith@example.com", // create user 1 with the specified parameters
description_user_1, "", List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()),
null);
userService.createUser("Mark Pottato", "pottato@example.com", // create user 2 with the specified parameters
description_user_2, "group-2", List.of("","group-2"), List.of(FilterState.NULL.toString()),
List.of("group-2", ""), List.of("group-2"), List.of("group-2", ""), true);
userService.createUser("Hamish Mitchell", "mitchell@example.com", // create user 3 with the specified parameters
description_user_3, "group-3", List.of("group-2"), List.of("group-2", "group-3"),
List.of("group-2"), new ArrayList<>(), List.of("group-2"), false);
userService.createUser("Anonymous",null, // create user 0 with the specified parameters
description_user_0,"", List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()), new ArrayList<>(),null);
// create user 1 with the specified parameters
userService.createUser("John Smith", "smith@example.com", descriptionUserFirst,
"", List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()), null, true, true);
// create user 2 with the specified parameters
userService.createUser("Mark Pottato", "pottato@example.com", descriptionUserSecond,
"group-2", List.of("", "group-2"), List.of(FilterState.NULL.toString()),
List.of("group-2", ""), List.of("group-2"), List.of("group-2", ""), true, true,
true);
// create user 3 with the specified parameters
userService.createUser("Hamish Mitchell", "mitchell@example.com", descriptionUserThird,
"group-3", List.of("group-2"), List.of("group-2", "group-3"), List.of("group-2"),
new ArrayList<>(), List.of("group-2"), false, true, true);
// create user 0 with the specified parameters
userService.createUser("Anonymous", null, descriptionUserZero, "",
List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()),
List.of(FilterState.NULL.toString()), List.of(FilterState.NULL.toString()),
new ArrayList<>(), null, false, false);
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -24,9 +24,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class IntegrationApplication {
// run the SpringApplication from the IntagrationApplication with the specified parameters
public static void main(String[] args) {
SpringApplication.run(IntegrationApplication.class, args);
}
// run the SpringApplication from the IntagrationApplication with the specified parameters
public static void main(final String[] args) {
SpringApplication.run(IntegrationApplication.class, args);
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -48,39 +48,40 @@ public class IntegrationConfiguration {
private SSLUtils ssl;
@Bean
public ModelMapper mapper(){ // create the model mapper
public ModelMapper mapper() { // create the model mapper
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration() // get the mapper configuration and set new parameters to it
.setMatchingStrategy(MatchingStrategies.STRICT) // specify the STRICT matching strategy
.setFieldMatchingEnabled(true) // define if the field matching is enabled or not
.setSkipNullEnabled(true) // define if null value will be skipped or not
.setFieldAccessLevel(org.modelmapper.config.Configuration.AccessLevel.PRIVATE); // specify the PRIVATE field access level
.setFieldAccessLevel(org.modelmapper.config.Configuration.AccessLevel.PRIVATE); /* specify
the PRIVATE field access level */
return mapper;
}
@Bean
public JSONParser jsonParser(){ // create JSON parser
public JSONParser jsonParser() { // create JSON parser
return new JSONParser();
}
@PostConstruct
public void init(){ // initialize the storage path builder
public void init() { // initialize the storage path builder
storagePathBuilder.configure(storageAddress.isBlank() ? null : storageAddress);
if(!verifyPerrOff.isEmpty()) {
try{
if(verifyPerrOff.equals("true")) {
if (!verifyPerrOff.isEmpty()) {
try {
if (verifyPerrOff.equals("true")) {
ssl.turnOffSslChecking(); //the certificate will be ignored
} else {
ssl.turnOnSslChecking(); //the certificate will be verified
}
} catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Bean
public ObjectMapper objectMapper(){ // create the object mapper
public ObjectMapper objectMapper() { // create the object mapper
return new ObjectMapper();
}
}

View File

@ -1,6 +1,6 @@
/**
*
* (c) Copyright Ascensio System SIA 2021
* (c) Copyright Ascensio System SIA 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -26,7 +26,6 @@ import com.onlyoffice.integration.documentserver.models.enums.Action;
import com.onlyoffice.integration.documentserver.storage.FileStoragePathBuilder;
import com.onlyoffice.integration.entities.User;
import com.onlyoffice.integration.dto.Mentions;
import com.onlyoffice.integration.documentserver.models.enums.Language;
import com.onlyoffice.integration.documentserver.models.enums.Type;
import com.onlyoffice.integration.documentserver.models.filemodel.FileModel;
import com.onlyoffice.integration.services.UserServices;
@ -41,7 +40,16 @@ import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import static com.onlyoffice.integration.documentserver.util.Constants.ANONYMOUS_USER_ID;
@CrossOrigin("*")
@Controller
@ -53,6 +61,9 @@ public class EditorController {
@Value("${files.docservice.url.api}")
private String docserviceApiUrl;
@Value("${files.docservice.languages}")
private String langs;
@Autowired
private FileStoragePathBuilder storagePathBuilder;
@ -73,25 +84,41 @@ public class EditorController {
@GetMapping(path = "${url.editor}")
// process request to open the editor page
public String index(@RequestParam("fileName") String fileName,
@RequestParam(value = "action", required = false) String actionParam,
@RequestParam(value = "type", required = false) String typeParam,
@RequestParam(value = "actionLink", required = false) String actionLink,
@CookieValue(value = "uid") String uid,
@CookieValue(value = "ulang") String lang,
Model model) throws JsonProcessingException {
public String index(@RequestParam("fileName") final String fileName,
@RequestParam(value = "action", required = false) final String actionParam,
@RequestParam(value = "type", required = false) final String typeParam,
@RequestParam(value = "actionLink", required = false) final String actionLink,
@RequestParam(value = "directUrl", required = false,
defaultValue = "false") final Boolean directUrl,
@CookieValue(value = "uid") final String uid,
@CookieValue(value = "ulang") final String lang,
final Model model) throws JsonProcessingException {
Action action = Action.edit;
Type type = Type.desktop;
Language language = Language.en;
Locale locale = new Locale("en");
if(actionParam != null) action = Action.valueOf(actionParam);
if(typeParam != null) type = Type.valueOf(typeParam);
if(lang != null) language = Language.valueOf(lang);
if (actionParam != null) {
action = Action.valueOf(actionParam);
}
if (typeParam != null) {
type = Type.valueOf(typeParam);
}
List<String> langsAndKeys = Arrays.asList(langs.split("\\|"));
for (String langAndKey : langsAndKeys) {
String[] couple = langAndKey.split(":");
if (couple[0].equals(lang)) {
String[] langAndCountry = couple[0].split("-");
locale = new Locale(langAndCountry[0], langAndCountry.length > 1 ? langAndCountry[1] : "");
}
}
Optional<User> optionalUser = userService.findUserById(Integer.parseInt(uid));
// if the user is not present, return the ONLYOFFICE start page
if(!optionalUser.isPresent()) return "index.html";
if (!optionalUser.isPresent()) {
return "index.html";
}
User user = optionalUser.get();
@ -101,31 +128,47 @@ public class EditorController {
.builder()
.fileName(fileName)
.type(type)
.lang(language)
.lang(locale.toLanguageTag())
.action(action)
.user(user)
.actionData(actionLink)
.isEnableDirectUrl(directUrl)
.build()
);
// add attributes to the specified model
model.addAttribute("model", fileModel); // add file model with the default parameters to the original model
model.addAttribute("fileHistory", historyManager.getHistory(fileModel.getDocument())); // get file history and add it to the model
model.addAttribute("docserviceApiUrl",docserviceSite + docserviceApiUrl); // create the document service api URL and add it to the model
model.addAttribute("dataInsertImage", getInsertImage()); // get an image and add it to the model
model.addAttribute("dataCompareFile", getCompareFile()); // get a document for comparison and add it to the model
model.addAttribute("dataMailMergeRecipients", getMailMerge()); // get recipients data for mail merging and add it to the model
model.addAttribute("usersForMentions", getUserMentions(uid)); // get user data for mentions and add it to the model
// add file model with the default parameters to the original model
model.addAttribute("model", fileModel);
// get file history and add it to the model
model.addAttribute("fileHistory", historyManager.getHistory(fileModel.getDocument()));
// create the document service api URL and add it to the model
model.addAttribute("docserviceApiUrl", docserviceSite + docserviceApiUrl);
// get an image and add it to the model
model.addAttribute("dataInsertImage", getInsertImage(directUrl));
// get a document for comparison and add it to the model
model.addAttribute("dataCompareFile", getCompareFile(directUrl));
// get recipients data for mail merging and add it to the model
model.addAttribute("dataMailMergeRecipients", getMailMerge(directUrl));
// get user data for mentions and add it to the model
model.addAttribute("usersForMentions", getUserMentions(uid));
return "editor.html";
}
private List<Mentions> getUserMentions(String uid){ // get user data for mentions
List<Mentions> usersForMentions=new ArrayList<>();
if(uid!=null && !uid.equals("4")) {
private List<Mentions> getUserMentions(final String uid) { // get user data for mentions
List<Mentions> usersForMentions = new ArrayList<>();
if (uid != null && !uid.equals("4")) {
List<User> list = userService.findAll();
for (User u : list) {
if (u.getId()!=Integer.parseInt(uid) && u.getId()!=4) {
usersForMentions.add(new Mentions(u.getName(),u.getEmail())); // user data includes user names and emails
if (u.getId() != Integer.parseInt(uid) && u.getId() != ANONYMOUS_USER_ID) {
// user data includes user names and emails
usersForMentions.add(new Mentions(u.getName(), u.getEmail()));
}
}
}
@ -134,42 +177,61 @@ public class EditorController {
}
@SneakyThrows
private String getInsertImage() { // get an image that will be inserted into the document
private String getInsertImage(final Boolean directUrl) { // get an image that will be inserted into the document
Map<String, Object> dataInsertImage = new HashMap<>();
dataInsertImage.put("fileType", "png");
dataInsertImage.put("url", storagePathBuilder.getServerUrl(true) + "/css/img/logo.png");
// check if the document token is enabled
if(jwtManager.tokenEnabled()){
dataInsertImage.put("token", jwtManager.createToken(dataInsertImage)); // create token from the dataInsertImage object
if (directUrl) {
dataInsertImage.put("directUrl", storagePathBuilder
.getServerUrl(false) + "/css/img/logo.png");
}
return objectMapper.writeValueAsString(dataInsertImage).substring(1, objectMapper.writeValueAsString(dataInsertImage).length()-1);
// check if the document token is enabled
if (jwtManager.tokenEnabled()) {
// create token from the dataInsertImage object
dataInsertImage.put("token", jwtManager.createToken(dataInsertImage));
}
return objectMapper.writeValueAsString(dataInsertImage)
.substring(1, objectMapper.writeValueAsString(dataInsertImage).length() - 1);
}
// get a document that will be compared with the current document
@SneakyThrows
private String getCompareFile(){ // get a document that will be compared with the current document
private String getCompareFile(final Boolean directUrl) {
Map<String, Object> dataCompareFile = new HashMap<>();
dataCompareFile.put("fileType", "docx");
dataCompareFile.put("url", storagePathBuilder.getServerUrl(true) + "/assets?name=sample.docx");
if (directUrl) {
dataCompareFile.put("directUrl", storagePathBuilder
.getServerUrl(false) + "/assets?name=sample.docx");
}
// check if the document token is enabled
if(jwtManager.tokenEnabled()){
dataCompareFile.put("token", jwtManager.createToken(dataCompareFile)); // create token from the dataCompareFile object
if (jwtManager.tokenEnabled()) {
// create token from the dataCompareFile object
dataCompareFile.put("token", jwtManager.createToken(dataCompareFile));
}
return objectMapper.writeValueAsString(dataCompareFile);
}
@SneakyThrows
private String getMailMerge(){
private String getMailMerge(final Boolean directUrl) {
Map<String, Object> dataMailMergeRecipients = new HashMap<>(); // get recipients data for mail merging
dataMailMergeRecipients.put("fileType", "csv");
dataMailMergeRecipients.put("url", storagePathBuilder.getServerUrl(true) + "/csv");
if (directUrl) {
dataMailMergeRecipients.put("directUrl", storagePathBuilder.getServerUrl(false) + "/csv");
}
// check if the document token is enabled
if(jwtManager.tokenEnabled()){
dataMailMergeRecipients.put("token", jwtManager.createToken(dataMailMergeRecipients)); // create token from the dataMailMergeRecipients object
if (jwtManager.tokenEnabled()) {
// create token from the dataMailMergeRecipients object
dataMailMergeRecipients.put("token", jwtManager.createToken(dataMailMergeRecipients));
}
return objectMapper.writeValueAsString(dataMailMergeRecipients);

Some files were not shown because too many files have changed in this diff Show More