Compare commits
740 commits
master
...
feature/pr
Author | SHA1 | Date | |
---|---|---|---|
a92997107f | |||
3077e51878 | |||
1a48364b74 | |||
9107977539 | |||
e06b4344bf | |||
49bbb8c2ef | |||
2325c1c767 | |||
8597b4c138 | |||
4e8abb82e8 | |||
25ecbaa9d8 | |||
51d187bc25 | |||
2fb39cf0a7 | |||
a7d90a47da | |||
f4792f4087 | |||
f0a7f2e5cf | |||
b7c248c4e4 | |||
b5f61f14ca | |||
28a18edbf4 | |||
79b32db7d4 | |||
6629ed31eb | |||
4f3ac36789 | |||
47d34093fa | |||
a539da3a3d | |||
2a31d73ecf | |||
40520f323c | |||
ed0bad17d5 | |||
d7bdee36bf | |||
58380dab6e | |||
0174c8f6f3 | |||
15ac68d681 | |||
b823c308db | |||
57749f4fe1 | |||
bf6e0377a3 | |||
d823738849 | |||
afc2707d2c | |||
ca2298deae | |||
0782b56c61 | |||
644fe62ab3 | |||
1b942cf47f | |||
de2f45f9d2 | |||
6cb895f376 | |||
eaff5a4b7c | |||
532b633ae8 | |||
4be1ab700b | |||
4a97fcd4d1 | |||
d5bb8885fb | |||
c72a7cd532 | |||
eb898426a9 | |||
3f2b2ea3aa | |||
90dbdd6e21 | |||
2f18c95b5b | |||
f5a1a75377 | |||
a5f27a9275 | |||
34392d7eab | |||
451798e680 | |||
061a5c6a2b | |||
17ce2ce7f0 | |||
e61c7dba20 | |||
ebc9f0f332 | |||
c9af36d987 | |||
ffdff0a70a | |||
91b9b2ce0c | |||
cb0a41f8d6 | |||
e98c607d4c | |||
c75ef98444 | |||
30f36793a2 | |||
f7bb67ed67 | |||
9c2c938522 | |||
4ee49fa43b | |||
3a9d32a90f | |||
1718dcdee4 | |||
8f06fbf167 | |||
90717e1077 | |||
4ddb7ecf3f | |||
fc830b9cb5 | |||
5cbbf902c8 | |||
e4ceba55af | |||
5bade65f02 | |||
f3dfa26818 | |||
9186805225 | |||
262a6dec21 | |||
d90da06528 | |||
60520b232c | |||
835b383670 | |||
7188921e5a | |||
2c15f82cb9 | |||
a350d98f8f | |||
955c01d65d | |||
8156a3e36b | |||
36fcd1ee61 | |||
43ddfbf351 | |||
8f0b933a5c | |||
469b6bf181 | |||
578385100c | |||
8c7a5bafef | |||
f564b2c94a | |||
7fc21ceb52 | |||
623c0dd0a2 | |||
c2d4f8af02 | |||
ea53ab8db5 | |||
8c4440d3e7 | |||
e88f1dfa8a | |||
6b2159c18c | |||
9e35ee62d1 | |||
a2ad945c4a | |||
ef7a42ec32 | |||
d2b89c0737 | |||
d9ef7a349f | |||
d312ca89eb | |||
a1a2aa919f | |||
e1160f8f00 | |||
ff9b30e6ff | |||
700573125d | |||
806d8d47ae | |||
653f3860c4 | |||
22ec672082 | |||
779b03d68a | |||
a9bfaffdbe | |||
01ff3bdb9d | |||
7fe739605d | |||
80be5eaede | |||
f273539483 | |||
ba32c0ab2a | |||
fdfc6ddd2c | |||
edd892e3cb | |||
e7ba2e0180 | |||
1e3b64f0e3 | |||
efa7c5e0f7 | |||
20a949da7e | |||
9815364c8f | |||
106eb52ae3 | |||
b6971521c4 | |||
fad08ff7e7 | |||
40c7b24504 | |||
92052e645a | |||
9f21320d78 | |||
3d24b01699 | |||
af3f02b637 | |||
78f7070faf | |||
77165473ec | |||
d3ade1677f | |||
e8f356160d | |||
7da772f609 | |||
78bb545956 | |||
728d142420 | |||
1be5ed94e7 | |||
e749085682 | |||
51f0bfa089 | |||
3074476533 | |||
c1eeb6c46a | |||
dcba78ebb5 | |||
c7e4f9b83c | |||
3bb818c326 | |||
525b0f6223 | |||
59ca763710 | |||
abba157cbf | |||
53e66de963 | |||
7504378d73 | |||
a58534687a | |||
74e246e032 | |||
a5cf901aa0 | |||
3422e014d1 | |||
62c8531dc1 | |||
228497c1d5 | |||
ff4a3f24bd | |||
ca5738bd99 | |||
fce2e4fdc4 | |||
7878e05c0d | |||
5b587c1c13 | |||
2a94c622d4 | |||
9d08c6bfcb | |||
c320bf387b | |||
04002a766e | |||
d8e3a7be30 | |||
dc91792801 | |||
1d03ef54ee | |||
1102a2f762 | |||
02be3055da | |||
ef5a145c76 | |||
95a4d207bc | |||
f1adaca4b7 | |||
0848f083f7 | |||
19358f81e6 | |||
fa29dd9a48 | |||
99e1c4afa1 | |||
0ceacd4e04 | |||
87b75d5ce4 | |||
57de4cd1e9 | |||
dac85d6d0e | |||
07390eb428 | |||
f39be5e139 | |||
17f250ef93 | |||
81973b1ab1 | |||
5055043c0b | |||
55736a9cc6 | |||
1b7df720a0 | |||
afb4257942 | |||
7a11ecd7d7 | |||
5251f9f5e3 | |||
68e7e292b5 | |||
9232bcdcac | |||
fc8e344dd9 | |||
00fbf050b0 | |||
3df537ed6f | |||
03202af328 | |||
7c2be61278 | |||
6d7b96399b | |||
2b156173cc | |||
98a10b7f5d | |||
de98bf1a99 | |||
873b9e6695 | |||
a3e7dbab24 | |||
4c3918e67e | |||
f3cf69c0a1 | |||
453a353eba | |||
124ee64a23 | |||
2440e7d637 | |||
d74786174d | |||
ecfbc80925 | |||
d96d839013 | |||
4f4e1fb5db | |||
1ba98170e6 | |||
949b95f6e7 | |||
a96c7a5bf4 | |||
ced1e0ade5 | |||
bcfbc4cd0c | |||
38c1a37940 | |||
a13d01897b | |||
3f5fb3deb5 | |||
288a7c2188 | |||
d57e35789d | |||
e3b33c0b83 | |||
d89c23b80b | |||
df041332a4 | |||
2521b0abca | |||
61fc935a28 | |||
e58dfa1c85 | |||
bdf39b536f | |||
1bb6c0e002 | |||
31b901fa6b | |||
102b6692fd | |||
7b8ebf6f5d | |||
351f003ac8 | |||
9013df7787 | |||
2f7973960f | |||
91ed3cea44 | |||
8e2793a462 | |||
cd691158bb | |||
249796d6a1 | |||
3c37145601 | |||
e680106071 | |||
7dd46ad4b4 | |||
668c59bd3e | |||
989d67d3df | |||
8c2ce18282 | |||
4cfd6199bf | |||
76fbfbf88d | |||
3dc1f11775 | |||
2d5d8ed9a0 | |||
a56a6e36ac | |||
28343f05f6 | |||
618868cfee | |||
ca9b3b0cb8 | |||
1ea155391a | |||
4f5286150b | |||
cedbefce78 | |||
88363e0d1c | |||
efbd7dd79f | |||
e0e90225fc | |||
ad3061fb3b | |||
5b1a142eee | |||
18ecdb6532 | |||
73df55f383 | |||
af7dcf1383 | |||
3bdcd28f03 | |||
fe6bd5d72d | |||
570199e27b | |||
874efd100a | |||
0f30f41b39 | |||
b830bb648c | |||
e81c8dedb8 | |||
f1ca54cf55 | |||
3650f07644 | |||
750a2c7a00 | |||
486eaf38af | |||
3d609a1576 | |||
4139b9b4a6 | |||
dcbd4e532e | |||
a1ff76f18f | |||
1afba4dde2 | |||
ea289f0c38 | |||
ea54591658 | |||
1394b55c54 | |||
8f833709d1 | |||
f062ebf0eb | |||
fe41feb424 | |||
169c39a58f | |||
f499e31c05 | |||
cafc0a5e72 | |||
bf744432ac | |||
dcfd578f73 | |||
1c19aac8ba | |||
dcdf6b3894 | |||
6e60e29171 | |||
142e295b70 | |||
90c23f6370 | |||
90d2f75c4c | |||
fcd928823b | |||
e5603b3539 | |||
d2e30f63e1 | |||
a86884c73a | |||
36b461f6e1 | |||
5067a87300 | |||
dcd37e4731 | |||
af0456e4c7 | |||
a1122a8a22 | |||
19e54b2dde | |||
ec897aa3d0 | |||
de1c5dce3c | |||
2a0fdb870a | |||
2cd0f46c87 | |||
f905e891d5 | |||
3cc7a739d9 | |||
8d444c0770 | |||
a7474c601d | |||
d14bc9bee7 | |||
c172bf07ac | |||
a50f6d8674 | |||
6f28983db1 | |||
98684a0c8b | |||
33381b79ee | |||
c3d27b5711 | |||
13700873c9 | |||
be04262bf4 | |||
b75c2a061d | |||
5dfb050d35 | |||
0fb35ca332 | |||
a862fc8824 | |||
47dffc8c0f | |||
8b55d647bd | |||
813e0ee1f6 | |||
96de002856 | |||
6be4b26083 | |||
df9a166c54 | |||
c7a67e0431 | |||
76cefaad20 | |||
688cba592a | |||
02d4918eaf | |||
362594c5bf | |||
b111281778 | |||
9af3a79df7 | |||
bfd7448de6 | |||
85364ac614 | |||
1c66765645 | |||
1fad3f9da3 | |||
2311fd7975 | |||
4a4d4d0832 | |||
52b16899d5 | |||
a0bb8ee115 | |||
8de0da306a | |||
36c3aeb576 | |||
075be70c14 | |||
97d106c3fa | |||
a4a8e6dcca | |||
3a22e575e2 | |||
b01dca86e5 | |||
36e40891dd | |||
3ab4211953 | |||
9a6034b611 | |||
ea0d07ad89 | |||
e9b04b91fb | |||
e6a459ac53 | |||
d7f64f49dd | |||
e525e97ede | |||
2870705ddf | |||
72328c0955 | |||
db8816c05f | |||
3309cbf2d2 | |||
a49071c6e3 | |||
411de187d5 | |||
3b2162dc61 | |||
b9b7a9d7e3 | |||
8b438a0c15 | |||
a067234b87 | |||
c6ac57592f | |||
3f1a44c390 | |||
ab7da2fbcc | |||
dd01e61d7d | |||
0ff0ed3a15 | |||
9ee9022c9e | |||
db9040247a | |||
6f1d3f03a9 | |||
a01b33e66a | |||
ccc88bbb78 | |||
3bfca10bcd | |||
95e265d018 | |||
4d87c6d817 | |||
62aa5cffed | |||
6314ed452c | |||
b9c5b2b014 | |||
b65436ed34 | |||
9238abfab6 | |||
fcba6435a9 | |||
72b8f3434f | |||
b21a33601e | |||
65c57c8907 | |||
4ac240a7b1 | |||
9416f27fbc | |||
5b29700cc5 | |||
e0a41415db | |||
adaf850a07 | |||
b18d2731c5 | |||
c739605f27 | |||
cdd90486ed | |||
ef395c554a | |||
5c0b841223 | |||
5edf90c839 | |||
06e4830a4b | |||
69a3409a42 | |||
fbff110ab6 | |||
3d7df44625 | |||
d5a269975c | |||
47afd293fc | |||
c03c7638d9 | |||
9feabc6ac3 | |||
8d28f72669 | |||
b33739c8b2 | |||
72886c7837 | |||
548ea8f2e6 | |||
cec32c8470 | |||
bd6b1c9ab3 | |||
b024ca02a1 | |||
bf6e8931cd | |||
011e141c76 | |||
c984d62e9a | |||
aacbfa787e | |||
d243e2b6d6 | |||
0d2359bdb6 | |||
e276fad40c | |||
b50d78c212 | |||
51eec23f3f | |||
127efb3216 | |||
617ba207bf | |||
8ca9e3831f | |||
1b718a516e | |||
b17377a916 | |||
412f616526 | |||
520762cc68 | |||
3b325b4cf5 | |||
8ca56d8aa2 | |||
52a22a3daf | |||
b393904138 | |||
32e477f3e6 | |||
f013939b4d | |||
0f2568e5b1 | |||
cd64a361ba | |||
c2a7198713 | |||
022c65cf3d | |||
6041671b5f | |||
c88be9df33 | |||
c8ae3cc9c0 | |||
ef1471e9b6 | |||
92e1a57ca3 | |||
58c3ca396c | |||
43f7d68d6f | |||
90a2fb56de | |||
f04c3937ce | |||
7672e7069d | |||
528f48d098 | |||
23bf9a3395 | |||
e2a2052cdc | |||
ed621f0921 | |||
4b32e904e3 | |||
14ae928ce4 | |||
52283a3d2e | |||
be5f7b31bf | |||
eb6bc50a01 | |||
a1bddbb845 | |||
b73380ba27 | |||
198df57eaf | |||
b19aca6235 | |||
857578864d | |||
c7ffd9b8b5 | |||
1b21757754 | |||
68fa3649fb | |||
70540b1eb5 | |||
66259ebf51 | |||
0f1a07cb94 | |||
e07e1305a4 | |||
064fc09574 | |||
621fe72930 | |||
b9d8d1ee8a | |||
d1d92cc97c | |||
96cc66875e | |||
291c29706e | |||
560ecfc366 | |||
8fa0319f5e | |||
caeae837e0 | |||
15f495ee58 | |||
d92096f2a6 | |||
5eeadb99a4 | |||
f598a93033 | |||
83c888729e | |||
cfb73f7cb4 | |||
a2e62b7545 | |||
b4950b3681 | |||
12b205629f | |||
0c2a96d618 | |||
1663f8a367 | |||
ee1c093ac9 | |||
493a6b53b5 | |||
7ed283a202 | |||
dfeea528ac | |||
20f348ac9d | |||
e59a832756 | |||
c67d30f897 | |||
27ff2a57e7 | |||
fd961d81a2 | |||
2388608e54 | |||
041557e6a3 | |||
13cedf86f1 | |||
6f1ee48c6d | |||
e99f6b494e | |||
9adcc64e9b | |||
00d7a665e6 | |||
0d54c6d31e | |||
8908af2153 | |||
8f1f89ee31 | |||
7f703b6294 | |||
f8b95b54ab | |||
f0c85f7135 | |||
8b052cef5a | |||
0c2502056d | |||
cd8211ffde | |||
fba576115c | |||
9f37a4c70d | |||
d920705316 | |||
d5f1e8899c | |||
9aeffb19c5 | |||
91dc833ec8 | |||
c6cd767264 | |||
71434d517d | |||
b898aee927 | |||
8b1bf6f3b6 | |||
f48fb32eac | |||
7fbce6170b | |||
4dcd91e106 | |||
9e8d0e1159 | |||
5e1f09c9e2 | |||
5b6de14a9a | |||
5654841e93 | |||
adefdded97 | |||
ebb58299b7 | |||
238cc71760 | |||
5660dd8cfd | |||
0b877a165a | |||
ca9b1bcf22 | |||
5b0ccb21e4 | |||
aa28b7eeca | |||
1feaa1b7ae | |||
0b2476ecab | |||
8c39eb234b | |||
789305ac87 | |||
32c754c9fe | |||
a98c4e82bc | |||
9d61b0a2d8 | |||
0841aa0e5f | |||
af8715bb46 | |||
96cb176b85 | |||
6fe53f9357 | |||
11f115cac4 | |||
7b951da71d | |||
ff10121f7b | |||
c130f79e7f | |||
6e5de0c8c1 | |||
4e4f6f94bc | |||
4db83376dd | |||
ea2bffa8c2 | |||
36873dc3bc | |||
397b700573 | |||
066aca3d07 | |||
5d14293056 | |||
7c5761c07a | |||
8e0c9709e1 | |||
0ae9d95980 | |||
12450625cc | |||
60ba55c840 | |||
67a0104d73 | |||
350db57523 | |||
832641ec5f | |||
a7f0d259c4 | |||
aa7e70eac2 | |||
3e89118f42 | |||
bf4b5faddb | |||
897f9e606f | |||
b70b9eb243 | |||
f2cc301d7e | |||
39ca6a7e87 | |||
8d6efb6c39 | |||
8bdc8762da | |||
ae4813a5d8 | |||
1788a579c3 | |||
fdc0e5038d | |||
b8419707bf | |||
2221747813 | |||
d824f9dd61 | |||
d73cf9051e | |||
7af5548157 | |||
221f138ae1 | |||
330549d850 | |||
9debf2511e | |||
a964a622b4 | |||
37a6d9568b | |||
9b36d4274f | |||
a7c0bcade1 | |||
ea57a8a361 | |||
dd6b532a56 | |||
fd6bc63637 | |||
20a25d1c98 | |||
75cf200670 | |||
6bc5f3c205 | |||
5a9016928c | |||
f1949ff448 | |||
3dcf0f6f4f | |||
4ab46feb43 | |||
c8350c575a | |||
1afb2c7abb | |||
3bd82d5253 | |||
93af069409 | |||
1cf8b0c9c7 | |||
35655c5546 | |||
3e508e7de3 | |||
62fc23f32f | |||
e6ee9e9ba7 | |||
bd011121c6 | |||
6edc78adc3 | |||
98b44ced4e | |||
47048623e2 | |||
75f01aca9a | |||
d1dfb29cc9 | |||
63cb74fc47 | |||
57b9ec255a | |||
8227926d6d | |||
82ba32c2ec | |||
34979a046a | |||
d440ec5872 | |||
d06d9fd653 | |||
cd9f85f2a4 | |||
00ef0d4e9e | |||
5bc35f0941 | |||
bb5d6cf388 | |||
0926c905fe | |||
c75c9941c0 | |||
9c143ec001 | |||
3ee304d12c | |||
b4dd4a4f91 | |||
bb7613bd44 | |||
381791b62b | |||
dcd7fb90f7 | |||
8e896a40d3 | |||
4236ed0ee7 | |||
837a1bed88 | |||
b62144a886 | |||
6e298a9582 | |||
e0df9797a0 | |||
22c9fddfa8 | |||
a1be884b34 | |||
faf7c75f6e | |||
9475364cfb | |||
0800af0484 | |||
c5669995c6 | |||
22f765387f | |||
39914c9d22 | |||
70cc425501 | |||
8be25036a9 | |||
5b0769f326 | |||
4e2af2ab44 | |||
fbc99d7b5e | |||
7975609bd4 | |||
be9c744100 | |||
cb51144092 | |||
8dfa0e4d3a | |||
30d7928104 | |||
ce7bacd50f | |||
b9698ae77b | |||
da327e5168 | |||
c8c05cf38d | |||
89636b7099 | |||
8ddb38a5b8 | |||
49dc558158 | |||
650f208543 | |||
b7c5a375c3 | |||
3a0b9f7a76 | |||
1800336973 | |||
0d5daecadd | |||
f8d4a3c93b | |||
b59b8b6d66 | |||
e848d63afd | |||
6394f4e110 | |||
09512d4c4f | |||
b6ffd88e79 | |||
4e5c30c46d | |||
a10d566162 | |||
5c4242f454 | |||
de58289ceb | |||
c61a957ec7 | |||
398691700b | |||
454878d3d7 | |||
f15891cd04 | |||
9ffbcf8e9a | |||
f60c3552c6 | |||
0f5a22ebe7 | |||
4d8fde7ea1 | |||
838eac4b8c | |||
e086acd52f | |||
f2eddc5126 | |||
0dd313c7d0 | |||
49ded5c542 | |||
d460ee980c | |||
284e697090 | |||
830b4944ce | |||
f5052aa966 | |||
fa6a043a9d | |||
bdbe8d0f1c | |||
3c870469f2 | |||
43e3a819d0 | |||
692956ebc5 | |||
87ad3134b9 | |||
726c0fe6ef | |||
83e856d259 | |||
9c0ebd29b5 | |||
0a63cde13f | |||
c0c6a03279 | |||
77abebdf60 | |||
6c15d65919 | |||
6e197c53c8 | |||
eef4f52565 | |||
d3719967dd | |||
0c040cec70 | |||
8df803bac1 |
|
@ -23,6 +23,7 @@
|
|||
options: <advanced options>,
|
||||
key: 'key',
|
||||
vkey: 'vkey',
|
||||
referenceData: 'data for external paste',
|
||||
info: {
|
||||
owner: 'owner name',
|
||||
folder: 'path to document',
|
||||
|
@ -174,9 +175,12 @@
|
|||
},
|
||||
leftMenu: {
|
||||
navigation: false/true,
|
||||
spellcheck: false/true // spellcheck button in sse
|
||||
spellcheck: false/true // spellcheck button in sse,
|
||||
mode: false/true // init value for left panel, true - is visible, false - is hidden, used for option "Left panel" on the View Tab
|
||||
} / false / true, // use instead of customization.leftMenu
|
||||
rightMenu: false/true, // use instead of customization.rightMenu
|
||||
rightMenu: {
|
||||
mode: false/true // init value for right panel, true - is visible, false - is hidden, used for option "Right panel" on the View Tab
|
||||
} / false/true, // use instead of customization.rightMenu
|
||||
statusBar: {
|
||||
textLang: false/true // text language button in de/pe
|
||||
docLang: false/true // document language button in de/pe
|
||||
|
@ -189,6 +193,9 @@
|
|||
change: false/true // hide/show feature in de/pe/sse
|
||||
} / false / true // if false/true - use as init value in de/pe. use instead of customization.spellcheck parameter
|
||||
},
|
||||
font: {
|
||||
name: "Arial",
|
||||
},
|
||||
chat: true,
|
||||
comments: true,
|
||||
zoom: 100,
|
||||
|
@ -264,6 +271,7 @@
|
|||
'onRequestCompareFile': <request file to compare>,// must call setRevisedFile method
|
||||
'onRequestSharingSettings': <request sharing settings>,// must call setSharingSettings method
|
||||
'onRequestCreateNew': <try to create document>,
|
||||
'onRequestReferenceData': <try to refresh external data>,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -327,6 +335,7 @@
|
|||
_config.editorConfig.canRequestCompareFile = _config.events && !!_config.events.onRequestCompareFile;
|
||||
_config.editorConfig.canRequestSharingSettings = _config.events && !!_config.events.onRequestSharingSettings;
|
||||
_config.editorConfig.canRequestCreateNew = _config.events && !!_config.events.onRequestCreateNew;
|
||||
_config.editorConfig.canRequestReferenceData = _config.events && !!_config.events.onRequestReferenceData;
|
||||
_config.frameEditorId = placeholderId;
|
||||
_config.parentOrigin = window.location.origin;
|
||||
|
||||
|
@ -736,6 +745,13 @@
|
|||
});
|
||||
};
|
||||
|
||||
var _setReferenceData = function(data) {
|
||||
_sendCommand({
|
||||
command: 'setReferenceData',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
var _serviceCommand = function(command, data) {
|
||||
_sendCommand({
|
||||
command: 'internalCommand',
|
||||
|
@ -770,7 +786,8 @@
|
|||
setFavorite : _setFavorite,
|
||||
requestClose : _requestClose,
|
||||
grabFocus : _grabFocus,
|
||||
blurFocus : _blurFocus
|
||||
blurFocus : _blurFocus,
|
||||
setReferenceData : _setReferenceData
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/sockjs/sockjs.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/socketio/socket.io.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/xregexp/xregexp-all-min.js"></script>
|
||||
<script type="text/javascript" src="../../../../sdkjs/common/AllFonts.js"></script>
|
||||
<script type="text/javascript" src="../../../../sdkjs/word/sdk-all-min.js"></script>
|
||||
|
|
272
apps/api/wopi/convert-and-edit-wopi.ejs
Normal file
|
@ -0,0 +1,272 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head runat="server">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<!--
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
-->
|
||||
<title>ONLYOFFICE</title>
|
||||
<style type="text/css">
|
||||
html {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
font-family: Arial, Helvetica, "Helvetica Neue", sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #fff;
|
||||
color: #333;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
overflow-y: hidden;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.form {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 18px;
|
||||
line-height: 160%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.description {
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 160%;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
|
||||
margin-top: 8px;
|
||||
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.icon {
|
||||
margin-top: 49px;
|
||||
width: 34px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
.icon-succes {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAwCAYAAAB0WahSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAENSURBVHgB7ZnBDYJAEEX/oN4pQTvQmxcTO7EEsQLtQKyA2AF2QOLFm5ZAB3InZB0WRDOJXCQbNPMSkmX3wGMyn8NAYEywHMMUES+nfPlwRwzKNxReUqolro4F3slYZjZkib2VIByBQUBhksEBtgAodjBYwYwiMuuFsSeUT8oSwSEs43Mh7rzMvOema4nqmU31fQ89QUUkKiLpjciw7bD5xnQEHc706ew3KtL2Bl2jzSrR1Eg0NRJtVommRqKpkWizSjQ1Ek2NRJtV8n+p+bafNDUSbVaJikhURFKK2FmnHb46ppo+v0Ru1W6xN8F8DEfUU+dtdYNTb34KeDyGTkGDGWvFcAu3hElKiXL8/gBwm2fFT+wjuQAAAABJRU5ErkJggg==");
|
||||
|
||||
}
|
||||
|
||||
.icon-error {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAwCAYAAAB0WahSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEBSURBVHgB7ZfRDYIwEIavtAM4QkfpA3uoE6gTiJswCIl99NEJSNyAAUhqz0BiGoOoVyjmvoTk6EP7c/ffAQDM0snz3OEFkciAiQBF2bg0DBmfGPIb8yZjVgEz02cuo5gBFHsomJmqqt5XhepFN2YfnqzMYhC9m1+1EfWn4dAZyXTN4EAbNWyISCYjLCRk0CNTdE0Pd00ImzXk/7rmVz9x14SwWUNYSAgLCUEhDQbGmBVMzPOZKOSKgVJqDxMjpVx3ocXfCeODc7dwaNu2tNY2EBHMhH/wnQ8LvHfObR6T04vBhSPMw8lP8EJiVNe11VrfhBBYMw3xwYxf/LX1IkpcuAMGtltNGCBFYAAAAABJRU5ErkJggg==");
|
||||
}
|
||||
|
||||
#error .icon {
|
||||
margin-bottom: 107px;
|
||||
}
|
||||
|
||||
.spiner-image {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNDQ0IiBzdHJva2Utd2lkdGg9IjEuNSIgcj0iNy4yNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTYwJSwgNDAlIiAvPjwvc3ZnPg==");
|
||||
margin-top: 49px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
|
||||
#spiner {
|
||||
animation-duration: .8s;
|
||||
animation-name: rotation;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
margin-top: 50px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
border-width: 0px;
|
||||
border-radius: 3px;
|
||||
font-weight: 600;
|
||||
line-height: 133%;
|
||||
letter-spacing: 0.04em;
|
||||
padding: 19px 24px;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
button:disabled, button[disabled]{
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.button.gray {
|
||||
color: #AAAAAA;
|
||||
background: #444444;
|
||||
}
|
||||
|
||||
|
||||
.button.orange {
|
||||
color: #FFFFFF;
|
||||
border: 1px solid #FF6F3D;
|
||||
background: #FF6F3D;
|
||||
}
|
||||
|
||||
.button.orange:not(:disabled):hover {
|
||||
background: #ff7a4b;
|
||||
}
|
||||
|
||||
.button.orange:disabled, .button.orange[disabled]{
|
||||
background: #EDC2B3;
|
||||
border: 1px solid #EDC2B3;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="form">
|
||||
<div id="progress">
|
||||
<div class="content">
|
||||
<div class="title">Converting your file so you can edit it...</div>
|
||||
<i id="spiner" class="spiner-image"></i>
|
||||
<button class="button orange" disabled>Open converted file</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="success" style="display: none;">
|
||||
<div class="content">
|
||||
<div class="title">Converting your file so you can edit it...</div>
|
||||
<i class="icon icon-succes"></i>
|
||||
<button class="button orange" id="btn_end">Open converted file</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="error" style="display: none;">
|
||||
<div class="content">
|
||||
<div class="title">Conversion failed</div>
|
||||
<div class="description">Sorry, we weren't able to convert the file for editing.</div>
|
||||
<i class="icon icon-error"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
|
||||
function redirect(url) {
|
||||
try {
|
||||
window.top.location.replace(url);
|
||||
}
|
||||
catch (err) {
|
||||
console.err(err);
|
||||
}
|
||||
}
|
||||
|
||||
function makeXHRRequest(url, success, error) {
|
||||
var xhr = new XMLHttpRequest;
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == 4)
|
||||
if (xhr.status == 200) {
|
||||
success(xhr.responseText)
|
||||
} else {
|
||||
error()
|
||||
}
|
||||
|
||||
}
|
||||
;
|
||||
xhr.open("GET", url, !0);
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
function checkStatus(url, success, error) {
|
||||
makeXHRRequest(url, function(responseText) {
|
||||
let data = JSON.parse(responseText);
|
||||
if(undefined !== data.error) {
|
||||
error();
|
||||
} else if(data.endConvert) {
|
||||
success(data.fileUrl);
|
||||
} else {
|
||||
setTimeout(function(){
|
||||
checkStatus(url, success, error);
|
||||
}, 1000);
|
||||
}
|
||||
}, error);
|
||||
}
|
||||
|
||||
function success(url) {
|
||||
document.getElementById('progress').style.display = 'none';
|
||||
document.getElementById('success').style.display = 'block';
|
||||
document.getElementById('btn_end').onclick = function() {
|
||||
redirect(url);
|
||||
};
|
||||
}
|
||||
|
||||
function error() {
|
||||
document.getElementById('progress').style.display = 'none';
|
||||
document.getElementById('error').style.display = 'block';
|
||||
}
|
||||
|
||||
var convertFile = function () {
|
||||
|
||||
let statusHandler = <%- JSON.stringify(statusHandler) %>;
|
||||
|
||||
if(!statusHandler) {
|
||||
error();
|
||||
}
|
||||
|
||||
checkStatus(statusHandler, success, error);
|
||||
};
|
||||
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener("load", convertFile);
|
||||
} else if (window.attachEvent) {
|
||||
window.attachEvent("onload", convertFile);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -312,7 +312,7 @@ div {
|
|||
"events": {
|
||||
"onAppReady": onAppReady,
|
||||
"onDocumentStateChange": fileInfo.EditNotificationPostMessage ? onDocumentStateChange : undefined,
|
||||
'onRequestEditRights': fileInfo.EditModePostMessage || fileInfo.HostEditUrl ? onRequestEditRights : undefined,
|
||||
'onRequestEditRights': fileInfo.EditModePostMessage || (fileInfo.HostEditUrl && !fileInfo.UserCanNotWriteRelative) ? onRequestEditRights : undefined,
|
||||
"onError": onError,
|
||||
"onRequestClose": fileInfo.ClosePostMessage || fileInfo.CloseUrl ? onRequestClose : undefined,
|
||||
"onRequestRename": fileInfo.SupportsRename && fileInfo.UserCanRename ? onRequestRename : undefined,
|
||||
|
|
|
@ -138,6 +138,10 @@ if (window.Common === undefined) {
|
|||
|
||||
'grabFocus': function(data) {
|
||||
$me.trigger('grabfocus', data);
|
||||
},
|
||||
|
||||
'setReferenceData': function(data) {
|
||||
$me.trigger('setreferencedata', data);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -347,6 +351,10 @@ if (window.Common === undefined) {
|
|||
_postMessage({event:'onRequestCreateNew'});
|
||||
},
|
||||
|
||||
requestReferenceData: function (data) {
|
||||
_postMessage({event:'onRequestReferenceData', data: data});
|
||||
},
|
||||
|
||||
pluginsReady: function() {
|
||||
_postMessage({ event: 'onPluginsReady' });
|
||||
},
|
||||
|
|
|
@ -202,6 +202,13 @@
|
|||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.separator {
|
||||
height: 22px;
|
||||
margin: 0 9px;
|
||||
border-left: 1px solid @border-divider-ie;
|
||||
border-left: 1px solid @border-divider;
|
||||
}
|
||||
}
|
||||
|
||||
.margin-right-small {
|
||||
|
@ -589,6 +596,7 @@
|
|||
height: 100%;
|
||||
|
||||
&.disabled {
|
||||
opacity: @component-disabled-opacity-ie;
|
||||
opacity: @component-disabled-opacity;
|
||||
cursor: default !important;
|
||||
}
|
||||
|
|
|
@ -351,22 +351,37 @@ define([
|
|||
getCaptionWithBreaks: function (caption) {
|
||||
var words = caption.split(' '),
|
||||
newCaption = null,
|
||||
maxWidth = 85 - 4;
|
||||
maxWidth = 160 - 4, //85 - 4
|
||||
containAnd = words.indexOf('&');
|
||||
if (containAnd > -1) { // add & to previous word
|
||||
words[containAnd - 1] += ' &';
|
||||
words.splice(containAnd, 1);
|
||||
}
|
||||
if (words.length > 1) {
|
||||
maxWidth = !!this.menu || this.split === true ? maxWidth - 10 : maxWidth;
|
||||
if (words.length < 3) {
|
||||
words[0] = getShortText(words[0], !!this.menu ? maxWidth + 10 : maxWidth);
|
||||
words[1] = getShortText(words[1], maxWidth);
|
||||
newCaption = words[0] + '<br>' + words[1];
|
||||
} else {
|
||||
var otherWords = '';
|
||||
if (getWidthOfCaption(words[0] + ' ' + words[1]) < maxWidth) { // first and second words in first line
|
||||
words[2] = getShortText(words[2], maxWidth);
|
||||
newCaption = words[0] + ' ' + words[1] + '<br>' + words[2];
|
||||
} else if (getWidthOfCaption(words[1] + ' ' + words[2]) < maxWidth) { // second and third words in second line
|
||||
words[2] = getShortText(words[2], maxWidth);
|
||||
newCaption = words[0] + '<br>' + words[1] + ' ' + words[2];
|
||||
} else {
|
||||
words[1] = getShortText(words[1] + ' ' + words[2], maxWidth);
|
||||
newCaption = words[0] + '<br>' + words[1];
|
||||
for (var i = 2; i < words.length; i++) {
|
||||
otherWords += words[i] + ' ';
|
||||
}
|
||||
if (getWidthOfCaption(otherWords + (!!this.menu ? 10 : 0))*2 < getWidthOfCaption(words[0] + ' ' + words[1])) {
|
||||
otherWords = getShortText((words[1] + ' ' + otherWords).trim(), maxWidth);
|
||||
newCaption = words[0] + '<br>' + otherWords;
|
||||
} else {
|
||||
otherWords = getShortText(otherWords.trim(), maxWidth);
|
||||
newCaption = words[0] + ' ' + words[1] + '<br>' + otherWords;
|
||||
}
|
||||
} else { // only first word is in first line
|
||||
for (var j = 1; j < words.length; j++) {
|
||||
otherWords += words[j] + ' ';
|
||||
}
|
||||
otherWords = getShortText(otherWords.trim(), maxWidth);
|
||||
newCaption = words[0] + '<br>' + otherWords;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -754,7 +769,7 @@ define([
|
|||
return (this.cmpEl) ? this.cmpEl.is(":visible") : $(this.el).is(":visible");
|
||||
},
|
||||
|
||||
updateHint: function(hint) {
|
||||
updateHint: function(hint, isHtml) {
|
||||
this.options.hint = hint;
|
||||
|
||||
if (!this.rendered) return;
|
||||
|
@ -780,10 +795,12 @@ define([
|
|||
this.btnMenuEl.removeData('bs.tooltip');
|
||||
|
||||
this.btnEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : (typeof hint == 'string') ? hint : hint[0],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
this.btnMenuEl && this.btnMenuEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : hint[1],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
|
|
|
@ -311,7 +311,10 @@ define([
|
|||
var $list = this.cmpEl.find('ul');
|
||||
if ($list.hasClass('menu-absolute')) {
|
||||
var offset = this.cmpEl.offset();
|
||||
$list.css({left: offset.left, top: offset.top + this.cmpEl.outerHeight() + 2});
|
||||
var left = offset.left;
|
||||
if (left + $list.outerWidth()>Common.Utils.innerWidth())
|
||||
left += (this.cmpEl.outerWidth() - $list.outerWidth());
|
||||
$list.css({left: left, top: offset.top + this.cmpEl.outerHeight() + 2});
|
||||
} else if ($list.hasClass('menu-aligned')) {
|
||||
var offset = this.cmpEl.offset();
|
||||
$list.toggleClass('show-top', offset.top + this.cmpEl.outerHeight() + $list.outerHeight() > Common.Utils.innerHeight());
|
||||
|
@ -407,8 +410,9 @@ define([
|
|||
},
|
||||
|
||||
selectCandidate: function() {
|
||||
var index = this._search.index || 0,
|
||||
var index = (this._search.index && this._search.index != -1) ? this._search.index : 0,
|
||||
re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'),
|
||||
isFirstCharsEqual = re.test(this.store.at(index).get(this.displayField)),
|
||||
itemCandidate, idxCandidate;
|
||||
|
||||
for (var i=0; i<this.store.length; i++) {
|
||||
|
@ -417,6 +421,8 @@ define([
|
|||
if (!itemCandidate) {
|
||||
itemCandidate = item;
|
||||
idxCandidate = i;
|
||||
if(!isFirstCharsEqual)
|
||||
break;
|
||||
}
|
||||
if (this._search.full && i==index || i>index) {
|
||||
itemCandidate = item;
|
||||
|
@ -707,8 +713,8 @@ define([
|
|||
this.options.updateFormControl.call(this, this._selectedItem);
|
||||
},
|
||||
|
||||
setValue: function(value) {
|
||||
Common.UI.ComboBox.prototype.setValue.call(this, value);
|
||||
setValue: function(value, defValue) {
|
||||
Common.UI.ComboBox.prototype.setValue.call(this, value, defValue);
|
||||
if (this.options.updateFormControl)
|
||||
this.options.updateFormControl.call(this, this._selectedItem);
|
||||
},
|
||||
|
|
|
@ -56,6 +56,7 @@ define([
|
|||
itemWidth : 80,
|
||||
itemHeight : 40,
|
||||
menuMaxHeight : 300,
|
||||
autoWidth : false,
|
||||
enableKeyEvents : false,
|
||||
beforeOpenHandler : null,
|
||||
additionalMenuItems : null,
|
||||
|
@ -87,11 +88,13 @@ define([
|
|||
this.menuMaxHeight = this.options.menuMaxHeight;
|
||||
this.beforeOpenHandler = this.options.beforeOpenHandler;
|
||||
this.showLast = this.options.showLast;
|
||||
this.wrapWidth = 0;
|
||||
this.rootWidth = 0;
|
||||
this.rootHeight = 0;
|
||||
this.rendered = false;
|
||||
this.needFillComboView = false;
|
||||
this.minWidth = this.options.minWidth;
|
||||
this.minWidth = this.options.minWidth;
|
||||
this.autoWidth = this.initAutoWidth = (Common.Utils.isIE10 || Common.Utils.isIE11) ? false : this.options.autoWidth;
|
||||
this.delayRenderTips = this.options.delayRenderTips || false;
|
||||
this.itemTemplate = this.options.itemTemplate || _.template([
|
||||
'<div class="style" id="<%= id %>">',
|
||||
|
@ -208,10 +211,12 @@ define([
|
|||
me.fieldPicker.el.addEventListener('contextmenu', _.bind(me.onPickerComboContextMenu, me), false);
|
||||
me.menuPicker.el.addEventListener('contextmenu', _.bind(me.onPickerComboContextMenu, me), false);
|
||||
|
||||
Common.NotificationCenter.on('more:toggle', _.bind(this.onMoreToggle, this));
|
||||
|
||||
me.onResize();
|
||||
|
||||
me.rendered = true;
|
||||
|
||||
|
||||
me.trigger('render:after', me);
|
||||
}
|
||||
if (this.disabled) {
|
||||
|
@ -221,8 +226,26 @@ define([
|
|||
return this;
|
||||
},
|
||||
|
||||
onMoreToggle: function(btn, state) {
|
||||
if(state) {
|
||||
this.checkSize();
|
||||
}
|
||||
},
|
||||
|
||||
checkSize: function() {
|
||||
if (this.cmpEl && this.cmpEl.is(':visible')) {
|
||||
if(this.autoWidth && this.menuPicker.store.length > 0) {
|
||||
var wrapWidth = this.$el.width();
|
||||
if(wrapWidth != this.wrapWidth || this.needFillComboView){
|
||||
this.wrapWidth = wrapWidth;
|
||||
this.autoChangeWidth();
|
||||
|
||||
var picker = this.menuPicker;
|
||||
var record = picker.getSelectedRec();
|
||||
this.fillComboView(record || picker.store.at(0), !!record, true);
|
||||
}
|
||||
}
|
||||
|
||||
var me = this,
|
||||
width = this.cmpEl.width(),
|
||||
height = this.cmpEl.height();
|
||||
|
@ -265,7 +288,46 @@ define([
|
|||
if (!this.isSuspendEvents)
|
||||
this.trigger('resize', this);
|
||||
},
|
||||
|
||||
autoChangeWidth: function() {
|
||||
if(this.menuPicker.dataViewItems[0]){
|
||||
var wrapEl = this.$el;
|
||||
var wrapWidth = wrapEl.width();
|
||||
|
||||
var itemEl = this.menuPicker.dataViewItems[0].$el;
|
||||
var itemWidth = this.itemWidth + parseFloat(itemEl.css('padding-left')) + parseFloat(itemEl.css('padding-right')) + 2 * parseFloat(itemEl.css('border-width'));
|
||||
var itemMargins = parseFloat(itemEl.css('margin-left')) + parseFloat(itemEl.css('margin-right'));
|
||||
|
||||
var fieldPickerEl = this.fieldPicker.$el;
|
||||
var fieldPickerPadding = parseFloat(fieldPickerEl.css('padding-right'));
|
||||
var fieldPickerBorder = parseFloat(fieldPickerEl.css('border-width'));
|
||||
var dataviewPaddings = parseFloat(this.fieldPicker.$el.find('.dataview').css('padding-left')) + parseFloat(this.fieldPicker.$el.find('.dataview').css('padding-right'));
|
||||
|
||||
var cmbDataViewEl = this.cmpEl;
|
||||
var cmbDataViewPaddings = parseFloat(cmbDataViewEl.css('padding-left')) + parseFloat(cmbDataViewEl.css('padding-right'));
|
||||
|
||||
var itemsCount = Math.floor((wrapWidth - fieldPickerPadding - dataviewPaddings - 2 * fieldPickerBorder - cmbDataViewPaddings) / (itemWidth + itemMargins));
|
||||
if(itemsCount > this.store.length)
|
||||
itemsCount = this.store.length;
|
||||
|
||||
var widthCalc = Math.ceil((itemsCount * (itemWidth + itemMargins) + fieldPickerPadding + dataviewPaddings + 2 * fieldPickerBorder + cmbDataViewPaddings) * 10) / 10;
|
||||
|
||||
var maxWidth = parseFloat(cmbDataViewEl.css('max-width'));
|
||||
if(widthCalc > maxWidth)
|
||||
widthCalc = maxWidth;
|
||||
|
||||
cmbDataViewEl.css('width', widthCalc);
|
||||
|
||||
if(this.initAutoWidth) {
|
||||
this.initAutoWidth = false;
|
||||
cmbDataViewEl.css('position', 'absolute');
|
||||
cmbDataViewEl.css('top', '50%');
|
||||
cmbDataViewEl.css('bottom', '50%');
|
||||
cmbDataViewEl.css('margin', 'auto 0');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onBeforeShowMenu: function(e) {
|
||||
var me = this;
|
||||
|
||||
|
|
|
@ -328,6 +328,7 @@ define([
|
|||
if (this.listenStoreEvents) {
|
||||
this.listenTo(this.store, 'add', this.onAddItem);
|
||||
this.listenTo(this.store, 'reset', this.onResetItems);
|
||||
this.groups && this.listenTo(this.groups, 'add', this.onAddGroup);
|
||||
}
|
||||
this.onResetItems();
|
||||
|
||||
|
@ -392,18 +393,36 @@ define([
|
|||
|
||||
if (suspendEvents)
|
||||
this.suspendEvents();
|
||||
|
||||
if (!this.multiSelect) {
|
||||
this.extremeSeletedRec = record;
|
||||
if (!this.multiSelect || ( !this.pressedShift && !this.pressedCtrl) || !this.currentSelectedRec || (this.pressedShift && this.currentSelectedRec == record)) {
|
||||
_.each(this.store.where({selected: true}), function(rec){
|
||||
rec.set({selected: false});
|
||||
});
|
||||
|
||||
if (record) {
|
||||
record.set({selected: true});
|
||||
this.currentSelectedRec = record;
|
||||
}
|
||||
} else {
|
||||
if (record)
|
||||
record.set({selected: !record.get('selected')});
|
||||
if (record) {
|
||||
if(this.pressedCtrl) {
|
||||
record.set({selected: !record.get('selected')});
|
||||
this.currentSelectedRec = record;
|
||||
}
|
||||
else if(this.pressedShift){
|
||||
var me =this;
|
||||
var inRange=false;
|
||||
_.each(me.store.models, function(rec){
|
||||
if(me.currentSelectedRec == rec || record == rec){
|
||||
inRange = !inRange;
|
||||
rec.set({selected: true});
|
||||
}
|
||||
else {
|
||||
rec.set({selected: (inRange)});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (suspendEvents)
|
||||
|
@ -510,6 +529,35 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onAddGroup: function(group) {
|
||||
var el = $(_.template([
|
||||
'<% if (group.headername !== undefined) { %>',
|
||||
'<div class="header-name"><%= group.headername %></div>',
|
||||
'<% } %>',
|
||||
'<div class="grouped-data <% if (group.inline) { %> group.inline <% } %> <% if (!_.isEmpty(group.caption)) { %> margin <% } %>" id="<%= group.id %>">',
|
||||
'<% if (!_.isEmpty(group.caption)) { %>',
|
||||
'<div class="group-description">',
|
||||
'<span><%= group.caption %></span>',
|
||||
'</div>',
|
||||
'<% } %>',
|
||||
'<div class="group-items-container">',
|
||||
'</div>',
|
||||
'</div>'
|
||||
].join(''))({
|
||||
group: group.toJSON()
|
||||
}));
|
||||
var innerEl = $(this.el).find('.inner').addBack().filter('.inner');
|
||||
if (innerEl) {
|
||||
var idx = _.indexOf(this.groups.models, group);
|
||||
var innerDivs = innerEl.find('.grouped-data');
|
||||
if (idx > 0)
|
||||
$(innerDivs.get(idx - 1)).after(el);
|
||||
else {
|
||||
(innerDivs.length > 0) ? $(innerDivs[idx]).before(el) : innerEl.append(el);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onResetItems: function() {
|
||||
_.each(this.dataViewItems, function(item) {
|
||||
var tip = item.$el.data('bs.tooltip');
|
||||
|
@ -678,13 +726,22 @@ define([
|
|||
onKeyDown: function (e, data) {
|
||||
if ( this.disabled ) return;
|
||||
if (data===undefined) data = e;
|
||||
if (_.indexOf(this.moveKeys, data.keyCode)>-1 || data.keyCode==Common.UI.Keys.RETURN) {
|
||||
|
||||
if(this.multiSelect) {
|
||||
if (data.keyCode == Common.UI.Keys.CTRL) {
|
||||
this.pressedCtrl = true;
|
||||
} else if (data.keyCode == Common.UI.Keys.SHIFT) {
|
||||
this.pressedShift = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (_.indexOf(this.moveKeys, data.keyCode)>-1 || data.keyCode==Common.UI.Keys.RETURN) {
|
||||
data.preventDefault();
|
||||
data.stopPropagation();
|
||||
var rec = this.getSelectedRec();
|
||||
if (this.lastSelectedRec===null)
|
||||
var rec =(this.multiSelect) ? this.extremeSeletedRec : this.getSelectedRec();
|
||||
if (this.lastSelectedRec === null)
|
||||
this.lastSelectedRec = rec;
|
||||
if (data.keyCode==Common.UI.Keys.RETURN) {
|
||||
if (data.keyCode == Common.UI.Keys.RETURN) {
|
||||
this.lastSelectedRec = null;
|
||||
if (this.selectedBeforeHideRec) // only for ComboDataView menuPicker
|
||||
rec = this.selectedBeforeHideRec;
|
||||
|
@ -694,6 +751,7 @@ define([
|
|||
if (this.parentMenu)
|
||||
this.parentMenu.hide();
|
||||
} else {
|
||||
this.pressedCtrl=false;
|
||||
var idx = _.indexOf(this.store.models, rec);
|
||||
if (idx<0) {
|
||||
if (data.keyCode==Common.UI.Keys.LEFT) {
|
||||
|
@ -774,12 +832,20 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onKeyUp: function(e){
|
||||
if(e.keyCode == Common.UI.Keys.SHIFT)
|
||||
this.pressedShift = false;
|
||||
if(e.keyCode == Common.UI.Keys.CTRL)
|
||||
this.pressedCtrl = false;
|
||||
},
|
||||
|
||||
attachKeyEvents: function() {
|
||||
if (this.enableKeyEvents && this.handleSelect) {
|
||||
var el = $(this.el).find('.inner').addBack().filter('.inner');
|
||||
el.addClass('canfocused');
|
||||
el.attr('tabindex', this.tabindex.toString());
|
||||
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keydown' : 'keydown', _.bind(this.onKeyDown, this));
|
||||
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keyup' : 'keyup', _.bind(this.onKeyUp, this));
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -789,7 +855,11 @@ define([
|
|||
this.scrollToRecord(this.lastSelectedRec);
|
||||
this.lastSelectedRec = null;
|
||||
} else {
|
||||
this.scrollToRecord(this.getSelectedRec());
|
||||
var selectedRec = this.getSelectedRec();
|
||||
if (!this.multiSelect)
|
||||
this.scrollToRecord(selectedRec);
|
||||
else if(selectedRec && selectedRec.length > 0)
|
||||
this.scrollToRecord(selectedRec[selectedRec.length - 1]);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -1298,12 +1368,30 @@ define([
|
|||
props = {minScrollbarLength : this.minScrollbarLength};
|
||||
this.scrollAlwaysVisible && (props.alwaysVisibleY = this.scrollAlwaysVisible);
|
||||
|
||||
if (top + menuH > docH ) {
|
||||
innerEl.css('max-height', (docH - top - paddings - margins) + 'px');
|
||||
this.scroller.update(props);
|
||||
} else if ( top + menuH < docH && innerEl.height() < this.options.restoreHeight ) {
|
||||
innerEl.css('max-height', (Math.min(docH - top - paddings - margins, this.options.restoreHeight)) + 'px');
|
||||
this.scroller.update(props);
|
||||
var menuUp = false;
|
||||
if (this.parentMenu.menuAlign) {
|
||||
var m = this.parentMenu.menuAlign.match(/^([a-z]+)-([a-z]+)/);
|
||||
menuUp = (m[1]==='bl' || m[1]==='br');
|
||||
}
|
||||
if (menuUp) {
|
||||
var bottom = top + menuH;
|
||||
if (top<0) {
|
||||
innerEl.css('max-height', (bottom - paddings - margins) + 'px');
|
||||
menuRoot.css('top', 0);
|
||||
this.scroller.update(props);
|
||||
} else if (top>0 && innerEl.height() < this.options.restoreHeight) {
|
||||
innerEl.css('max-height', (Math.min(bottom - paddings - margins, this.options.restoreHeight)) + 'px');
|
||||
menuRoot.css('top', bottom - menuRoot.outerHeight());
|
||||
this.scroller.update(props);
|
||||
}
|
||||
} else {
|
||||
if (top + menuH > docH ) {
|
||||
innerEl.css('max-height', (docH - top - paddings - margins) + 'px');
|
||||
this.scroller.update(props);
|
||||
} else if ( top + menuH < docH && innerEl.height() < this.options.restoreHeight ) {
|
||||
innerEl.css('max-height', (Math.min(docH - top - paddings - margins, this.options.restoreHeight)) + 'px');
|
||||
this.scroller.update(props);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ define([
|
|||
style : '',
|
||||
itemTemplate: null,
|
||||
items : [],
|
||||
menuAlign : 'tl-bl',
|
||||
menuAlign : 'tl-bl',//menu - parent
|
||||
menuAlignEl : null,
|
||||
offset : [0, 0],
|
||||
cyclic : true,
|
||||
|
@ -472,8 +472,9 @@ define([
|
|||
},
|
||||
|
||||
selectCandidate: function() {
|
||||
var index = this._search.index || 0,
|
||||
var index = (this._search.index && this._search.index != -1) ? this._search.index : 0,
|
||||
re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'),
|
||||
isFirstCharsEqual = re.test(this.items[index].caption),
|
||||
itemCandidate, idxCandidate;
|
||||
|
||||
for (var i=0; i<this.items.length; i++) {
|
||||
|
@ -482,6 +483,8 @@ define([
|
|||
if (!itemCandidate) {
|
||||
itemCandidate = item;
|
||||
idxCandidate = i;
|
||||
if(!isFirstCharsEqual)
|
||||
break;
|
||||
}
|
||||
if (this._search.full && i==index || i>index) {
|
||||
itemCandidate = item;
|
||||
|
@ -713,6 +716,14 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
getChecked: function() {
|
||||
for (var i=0; i<this.items.length; i++) {
|
||||
var item = this.items[i];
|
||||
if (item.isChecked && item.isChecked())
|
||||
return item;
|
||||
}
|
||||
},
|
||||
|
||||
clearAll: function() {
|
||||
_.each(this.items, function(item){
|
||||
if (item.setChecked)
|
||||
|
@ -1051,8 +1062,9 @@ define([
|
|||
},
|
||||
|
||||
selectCandidate: function() {
|
||||
var index = this._search.index || 0,
|
||||
var index = (this._search.index && this._search.index != -1) ? this._search.index : 0,
|
||||
re = new RegExp('^' + ((this._search.full) ? this._search.text : this._search.char), 'i'),
|
||||
isFirstCharsEqual = re.test(this.items[index].caption),
|
||||
itemCandidate, idxCandidate;
|
||||
|
||||
for (var i=0; i<this.items.length; i++) {
|
||||
|
@ -1061,6 +1073,8 @@ define([
|
|||
if (!itemCandidate) {
|
||||
itemCandidate = item;
|
||||
idxCandidate = i;
|
||||
if(!isFirstCharsEqual)
|
||||
break;
|
||||
}
|
||||
if (this._search.full && i==index || i>index) {
|
||||
itemCandidate = item;
|
||||
|
|
|
@ -399,7 +399,9 @@ define([
|
|||
_btns = data.buttons,
|
||||
_flex = data.flex;
|
||||
var more_section = $active.find('.more-box');
|
||||
|
||||
if (more_section.length===0) {
|
||||
me.setMoreButton($active.attr('data-tab'), $active);
|
||||
}
|
||||
if ( !_rightedge ) {
|
||||
_rightedge = $active.get(0).getBoundingClientRect().right;
|
||||
}
|
||||
|
@ -527,10 +529,30 @@ define([
|
|||
this.$moreBar = btnsMore[tab].panel;
|
||||
},
|
||||
|
||||
clearMoreButton: function(tab) {
|
||||
var panel = this.$panels.filter('[data-tab=' + tab + ']');
|
||||
if ( panel.length ) {
|
||||
var data = panel.data();
|
||||
data.buttons = data.flex = data.rightedge = undefined;
|
||||
panel.find('.more-box').remove();
|
||||
}
|
||||
if (btnsMore[tab]) {
|
||||
var moreContainer = optsFold.$bar.find('.more-container[data-tab="' + tab + '"]');
|
||||
moreContainer.remove();
|
||||
btnsMore[tab].remove();
|
||||
delete btnsMore[tab];
|
||||
}
|
||||
},
|
||||
|
||||
resizeToolbar: function(reset) {
|
||||
var $active = this.$panels.filter('.active'),
|
||||
more_section = $active.find('.more-box'),
|
||||
more_section_width = parseInt(more_section.css('width')) || 0,
|
||||
more_section = $active.find('.more-box');
|
||||
|
||||
if (more_section.length===0) {
|
||||
this.setMoreButton($active.attr('data-tab'), $active);
|
||||
}
|
||||
|
||||
var more_section_width = parseInt(more_section.css('width')) || 0,
|
||||
box_controls_width = $active.parents('.box-controls').width(),
|
||||
_maxright = box_controls_width,
|
||||
_rightedge = $active.get(0).getBoundingClientRect().right,
|
||||
|
@ -793,7 +815,7 @@ define([
|
|||
|
||||
hideMoreBtns: function() {
|
||||
for (var btn in btnsMore) {
|
||||
btnsMore[btn] && btnsMore[btn].toggle(false);
|
||||
btnsMore[btn] && btnsMore[btn].isActive() && btnsMore[btn].toggle(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -56,7 +56,8 @@ define([
|
|||
maxlength : undefined,
|
||||
placeHolder : '',
|
||||
spellcheck : false,
|
||||
disabled: false
|
||||
disabled: false,
|
||||
resize: false
|
||||
},
|
||||
|
||||
template: _.template([
|
||||
|
@ -133,6 +134,7 @@ define([
|
|||
this._input.on('blur', _.bind(this.onInputChanged, this));
|
||||
this._input.on('keydown', _.bind(this.onKeyDown, this));
|
||||
if (this.maxLength) this._input.attr('maxlength', this.maxLength);
|
||||
if (!this.resize) this._input.css('resize', 'none');
|
||||
|
||||
if (this.disabled)
|
||||
this.setDisabled(this.disabled);
|
||||
|
@ -140,6 +142,9 @@ define([
|
|||
|
||||
me.rendered = true;
|
||||
|
||||
if (me.value)
|
||||
me.setValue(me.value);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ define([
|
|||
subEditStrings : {},
|
||||
filter : undefined,
|
||||
hintmode : false,
|
||||
fullInfoHintMode: false,
|
||||
viewmode: false,
|
||||
isSelectedComment : false,
|
||||
uids : [],
|
||||
|
@ -144,10 +145,20 @@ define([
|
|||
}
|
||||
}, this, area);
|
||||
}.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
onLaunch: function () {
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
this._state = {
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
this.collection = this.getApplication().getCollection('Common.Collections.Comments');
|
||||
this.setComparator();
|
||||
|
@ -176,7 +187,8 @@ define([
|
|||
this.currentUserId = data.config.user.id;
|
||||
this.sdkViewName = data['sdkviewname'] || this.sdkViewName;
|
||||
this.hintmode = data['hintmode'] || false;
|
||||
this.viewmode = data['viewmode'] || false;
|
||||
this.fullInfoHintMode = data['fullInfoHintMode'] || false;
|
||||
this.viewmode = data['viewmode'] || false;
|
||||
}
|
||||
},
|
||||
setApi: function (api) {
|
||||
|
@ -396,9 +408,11 @@ define([
|
|||
reply = null,
|
||||
addReply = null,
|
||||
ascComment = buildCommentData(), // new asc_CCommentData(null),
|
||||
comment = t.findComment(id);
|
||||
comment = t.findComment(id),
|
||||
oldCommentVal = '';
|
||||
|
||||
if (comment && ascComment) {
|
||||
oldCommentVal = comment.get('comment');
|
||||
ascComment.asc_putText(commentVal);
|
||||
ascComment.asc_putQuoteText(comment.get('quote'));
|
||||
ascComment.asc_putTime(t.utcDateToString(new Date(comment.get('time'))));
|
||||
|
@ -442,6 +456,7 @@ define([
|
|||
}
|
||||
|
||||
t.api.asc_changeComment(id, ascComment);
|
||||
t.mode && t.mode.canRequestSendNotify && t.view.pickEMail(ascComment.asc_getGuid(), commentVal, oldCommentVal);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -455,7 +470,8 @@ define([
|
|||
reply = null,
|
||||
addReply = null,
|
||||
ascComment = buildCommentData(), // new asc_CCommentData(null),
|
||||
comment = me.findComment(id);
|
||||
comment = me.findComment(id),
|
||||
oldReplyVal = '';
|
||||
|
||||
if (ascComment && comment) {
|
||||
ascComment.asc_putText(comment.get('comment'));
|
||||
|
@ -479,6 +495,7 @@ define([
|
|||
addReply = buildCommentData(); // new asc_CCommentData();
|
||||
if (addReply) {
|
||||
if (reply.get('id') === replyId && !_.isUndefined(replyVal)) {
|
||||
oldReplyVal = reply.get('reply');
|
||||
addReply.asc_putText(replyVal);
|
||||
addReply.asc_putUserId(me.currentUserId);
|
||||
addReply.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||
|
@ -498,7 +515,7 @@ define([
|
|||
}
|
||||
|
||||
me.api.asc_changeComment(id, ascComment);
|
||||
|
||||
me.mode && me.mode.canRequestSendNotify && me.view.pickEMail(ascComment.asc_getGuid(), replyVal, oldReplyVal);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -951,11 +968,11 @@ define([
|
|||
|
||||
if (!comment) continue;
|
||||
|
||||
if (this.subEditStrings[saveTxtId] && !hint) {
|
||||
if (this.subEditStrings[saveTxtId] && (comment.get('fullInfoInHint') || !hint)) {
|
||||
comment.set('editTextInPopover', true);
|
||||
text = this.subEditStrings[saveTxtId];
|
||||
}
|
||||
else if (this.subEditStrings[saveTxtReplyId] && !hint) {
|
||||
else if (this.subEditStrings[saveTxtReplyId] && (comment.get('fullInfoInHint') || !hint)) {
|
||||
comment.set('showReplyInPopover', true);
|
||||
text = this.subEditStrings[saveTxtReplyId];
|
||||
}
|
||||
|
@ -963,13 +980,16 @@ define([
|
|||
comment.set('hint', !_.isUndefined(hint) ? hint : false);
|
||||
|
||||
if (!hint && this.hintmode) {
|
||||
if (same_uids && (this.uids.length === 0))
|
||||
if (same_uids)
|
||||
animate = false;
|
||||
|
||||
if (this.oldUids.length && (0 === _.difference(this.oldUids, uids).length) && (0 === _.difference(uids, this.oldUids).length)) {
|
||||
animate = false;
|
||||
this.oldUids = [];
|
||||
}
|
||||
|
||||
if (same_uids && !apihint && !this.isModeChanged)
|
||||
this.api.asc_selectComment(comment.get('uid'));
|
||||
}
|
||||
|
||||
if (this.animate) {
|
||||
|
@ -991,7 +1011,7 @@ define([
|
|||
this.popoverComments.reset(comments);
|
||||
|
||||
if (this.popoverComments.findWhere({hide: false})) {
|
||||
if (popover.isVisible()) {
|
||||
if (popover.isVisible() && (!same_uids || this.isModeChanged)) {
|
||||
popover.hide();
|
||||
}
|
||||
|
||||
|
@ -1340,6 +1360,7 @@ define([
|
|||
removable : (this.mode.canDeleteComments || (data.asc_getUserId() == this.currentUserId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getUserName()),
|
||||
hide : !AscCommon.UserInfoParser.canViewComment(data.asc_getUserName()),
|
||||
hint : !this.mode.canComments,
|
||||
fullInfoInHint : this.fullInfoHintMode,
|
||||
groupName : (groupname && groupname.length>1) ? groupname[1] : null
|
||||
});
|
||||
if (comment) {
|
||||
|
@ -1645,16 +1666,25 @@ define([
|
|||
},
|
||||
|
||||
setPreviewMode: function(mode) {
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var docProtection = this._state.docProtection;
|
||||
var viewmode = this._state.disableEditing || docProtection.isReadOnly || docProtection.isFormsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
|
||||
if (viewmode)
|
||||
this.prevcanComments = this.mode.canComments;
|
||||
this.mode.canComments = (mode) ? false : this.prevcanComments;
|
||||
this.mode.canComments = (viewmode) ? false : this.prevcanComments;
|
||||
this.closeEditing();
|
||||
this.setMode(this.mode);
|
||||
this.updateComments(true);
|
||||
if (this.getPopover())
|
||||
mode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
viewmode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
},
|
||||
|
||||
clearCollections: function() {
|
||||
|
@ -1718,6 +1748,27 @@ define([
|
|||
}
|
||||
}
|
||||
this.updateComments(true);
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
}
|
||||
|
||||
}, Common.Controllers.Comments || {}));
|
||||
|
|
|
@ -46,7 +46,8 @@ define([
|
|||
eventloading: true,
|
||||
titlebuttons: true,
|
||||
uithemes: true,
|
||||
quickprint: true,
|
||||
btnhome: true,
|
||||
quickprint: true
|
||||
};
|
||||
|
||||
var native = window.desktop || window.AscDesktopEditor;
|
||||
|
@ -61,7 +62,8 @@ define([
|
|||
'btn-save-coauth': 'coauth',
|
||||
'btn-synch': 'synch' };
|
||||
|
||||
var nativevars;
|
||||
var nativevars,
|
||||
helpUrl;
|
||||
|
||||
if ( !!native ) {
|
||||
native.features = native.features || {};
|
||||
|
@ -91,14 +93,12 @@ define([
|
|||
$('.asc-window.modal').css('top', obj.skiptoparea);
|
||||
|
||||
Common.Utils.InternalSettings.set('window-inactive-area-top', obj.skiptoparea);
|
||||
} else
|
||||
if ( obj.lockthemes != undefined ) {
|
||||
// TODO: remove after 7.0.2. depricated. used is_win_xp variable instead
|
||||
// Common.UI.Themes.setAvailable(!obj.lockthemes);
|
||||
}
|
||||
|
||||
if ( obj.singlewindow !== undefined ) {
|
||||
$('#box-document-title .hedset')[obj.singlewindow ? 'hide' : 'show']();
|
||||
// $('#box-document-title .hedset')[obj.singlewindow ? 'hide' : 'show']();
|
||||
native.features.singlewindow = obj.singlewindow;
|
||||
titlebuttons.home && titlebuttons.home.btn.setVisible(obj.singlewindow);
|
||||
}
|
||||
} else
|
||||
if (/editor:config/.test(cmd)) {
|
||||
|
@ -237,6 +237,188 @@ define([
|
|||
}
|
||||
}
|
||||
|
||||
const _checkHelpAvailable = function () {
|
||||
const me = this;
|
||||
const build_url = function (arg1, arg2, arg3) {
|
||||
const re_ls = /\/$/;
|
||||
return (re_ls.test(arg1) ? arg1 : arg1 + '/') + arg2 + arg3;
|
||||
}
|
||||
|
||||
fetch(build_url('resources/help/', Common.Locale.getDefaultLanguage(), '/Contents.json'))
|
||||
.then(function (response) {
|
||||
if ( response.ok ) {
|
||||
/* local help avail */
|
||||
fetch(build_url('resources/help/', Common.Locale.getCurrentLanguage(), '/Contents.json'))
|
||||
.then(function (response){
|
||||
if ( response.ok )
|
||||
helpUrl = build_url('resources/help/', Common.Locale.getCurrentLanguage(), '');
|
||||
})
|
||||
.catch(function (e) {
|
||||
helpUrl = build_url('resources/help/', Common.Locale.getDefaultLanguage(), '');
|
||||
})
|
||||
}
|
||||
}).catch(function (e) {
|
||||
if ( me.helpUrl() ) {
|
||||
fetch(build_url(me.helpUrl(), Common.Locale.getDefaultLanguage(), '/Contents.json'))
|
||||
.then(function (response) {
|
||||
if ( response.ok ) {
|
||||
/* remote help avail */
|
||||
fetch(build_url(me.helpUrl(), Common.Locale.getCurrentLanguage(), '/Contents.json'))
|
||||
.then(function (response) {
|
||||
if ( response.ok ) {
|
||||
helpUrl = build_url(me.helpUrl(), Common.Locale.getCurrentLanguage(), '');
|
||||
}
|
||||
})
|
||||
.catch(function (e) {
|
||||
helpUrl = build_url(me.helpUrl(), Common.Locale.getDefaultLanguage(), '');
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const _onAppReady = function (opts) {
|
||||
_.extend(config, opts);
|
||||
!!native && native.execCommand('doc:onready', '');
|
||||
|
||||
$('.toolbar').addClass('editor-native-color');
|
||||
}
|
||||
|
||||
const _onDocumentReady = function () {
|
||||
if ( config.isEdit ) {
|
||||
function get_locked_message (t) {
|
||||
switch (t) {
|
||||
// case Asc.c_oAscLocalRestrictionType.Nosafe:
|
||||
case Asc.c_oAscLocalRestrictionType.ReadOnly:
|
||||
return Common.Locale.get("tipFileReadOnly",{name:"Common.Translation", default: "Document is read only. You can make changes and save its local copy later."});
|
||||
default: return Common.Locale.get("tipFileLocked",{name:"Common.Translation", default: "Document is locked for editing. You can make changes and save its local copy later."});
|
||||
}
|
||||
}
|
||||
|
||||
const header = webapp.getController('Viewport').getView('Common.Views.Header');
|
||||
const api = webapp.getController('Main').api;
|
||||
const locktype = api.asc_getLocalRestrictions ? api.asc_getLocalRestrictions() : Asc.c_oAscLocalRestrictionType.None;
|
||||
if ( Asc.c_oAscLocalRestrictionType.None !== locktype ) {
|
||||
features.readonly = true;
|
||||
|
||||
header.setDocumentReadOnly(true);
|
||||
api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);
|
||||
|
||||
(new Common.UI.SynchronizeTip({
|
||||
extCls: 'no-arrow',
|
||||
placement: 'bottom',
|
||||
target: $('.toolbar'),
|
||||
text: get_locked_message(locktype),
|
||||
showLink: false,
|
||||
})).on('closeclick', function () {
|
||||
this.close();
|
||||
}).show();
|
||||
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
|
||||
api.asc_registerCallback('asc_onDocumentName', function () {
|
||||
if ( features.readonly ) {
|
||||
if ( api.asc_getLocalRestrictions() == Asc.c_oAscLocalRestrictionType.None ) {
|
||||
features.readonly = false;
|
||||
header.setDocumentReadOnly(false);
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_checkHelpAvailable.call(this);
|
||||
}
|
||||
}
|
||||
|
||||
const _onHidePreloader = function (mode) {
|
||||
features.viewmode = !mode.isEdit;
|
||||
features.crypted = mode.isCrypted;
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
|
||||
titlebuttons = {};
|
||||
if ( mode.isEdit ) {
|
||||
var header = webapp.getController('Viewport').getView('Common.Views.Header');
|
||||
|
||||
{
|
||||
header.btnHome = (new Common.UI.Button({
|
||||
cls: 'btn-header',
|
||||
iconCls: 'toolbar__icon icon--inverse btn-home',
|
||||
visible: false,
|
||||
hint: 'Show Main window',
|
||||
dataHint:'0',
|
||||
dataHintDirection: 'right',
|
||||
dataHintOffset: '10, -18',
|
||||
dataHintTitle: 'K'
|
||||
})).render($('#box-document-title #slot-btn-dt-home'));
|
||||
titlebuttons['home'] = {btn: header.btnHome};
|
||||
|
||||
header.btnHome.on('click', function (e) {
|
||||
native.execCommand('title:button', JSON.stringify({click: "home"}));
|
||||
});
|
||||
|
||||
$('#id-box-doc-name').on({
|
||||
'dblclick': function (e) {
|
||||
native.execCommand('title:dblclick', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY}))
|
||||
},
|
||||
'mousedown': function (e) {
|
||||
native.execCommand('title:mousedown', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY}))
|
||||
},
|
||||
'mousemove': function (e) {
|
||||
native.execCommand('title:mousemove', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY}))
|
||||
},
|
||||
'mouseup': function (e) {
|
||||
native.execCommand('title:mouseup', JSON.stringify({x: e.originalEvent.screenX, y: e.originalEvent.screenY}))
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (!!header.btnSave) {
|
||||
titlebuttons['save'] = {btn: header.btnSave};
|
||||
|
||||
var iconname = /\s?([^\s]+)$/.exec(titlebuttons.save.btn.$icon.attr('class'));
|
||||
!!iconname && iconname.length && (titlebuttons.save.icon = btnsave_icons[iconname]);
|
||||
}
|
||||
|
||||
if (!!header.btnPrint)
|
||||
titlebuttons['print'] = {btn: header.btnPrint};
|
||||
|
||||
if (!!header.btnPrintQuick) {
|
||||
titlebuttons['quickprint'] = {
|
||||
btn: header.btnPrintQuick,
|
||||
visible: header.btnPrintQuick.isVisible(),
|
||||
};
|
||||
}
|
||||
|
||||
if (!!header.btnUndo)
|
||||
titlebuttons['undo'] = {btn: header.btnUndo};
|
||||
|
||||
if (!!header.btnRedo)
|
||||
titlebuttons['redo'] = {btn: header.btnRedo};
|
||||
|
||||
for (var i in titlebuttons) {
|
||||
titlebuttons[i].btn.options.signals = ['disabled'];
|
||||
titlebuttons[i].btn.on('disabled', _onTitleButtonDisabled.bind(this, i));
|
||||
}
|
||||
|
||||
if (!!titlebuttons.save) {
|
||||
titlebuttons.save.btn.options.signals.push('icon:changed');
|
||||
titlebuttons.save.btn.on('icon:changed', _onSaveIconChanged.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
if ( !!config.callback_editorconfig ) {
|
||||
config.callback_editorconfig();
|
||||
delete config.callback_editorconfig;
|
||||
}
|
||||
|
||||
if ( native.features.singlewindow !== undefined ) {
|
||||
// $('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show']();
|
||||
!!titlebuttons.home && titlebuttons.home.btn.setVisible(native.features.singlewindow);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
init: function (opts) {
|
||||
_.extend(config, opts);
|
||||
|
@ -245,111 +427,10 @@ define([
|
|||
let is_win_xp = nativevars && nativevars.os === 'winxp';
|
||||
|
||||
Common.UI.Themes.setAvailable(!is_win_xp);
|
||||
Common.NotificationCenter.on('app:ready', function (opts) {
|
||||
_.extend(config, opts);
|
||||
!!native && native.execCommand('doc:onready', '');
|
||||
|
||||
$('.toolbar').addClass('editor-native-color');
|
||||
});
|
||||
|
||||
Common.NotificationCenter.on('document:ready', function () {
|
||||
if ( config.isEdit ) {
|
||||
function get_locked_message (t) {
|
||||
switch (t) {
|
||||
// case Asc.c_oAscLocalRestrictionType.Nosafe:
|
||||
case Asc.c_oAscLocalRestrictionType.ReadOnly:
|
||||
return Common.Locale.get("tipFileReadOnly",{name:"Common.Translation", default: "Document is read only. You can make changes and save its local copy later."});
|
||||
default: return Common.Locale.get("tipFileLocked",{name:"Common.Translation", default: "Document is locked for editing. You can make changes and save its local copy later."});
|
||||
}
|
||||
}
|
||||
|
||||
const header = webapp.getController('Viewport').getView('Common.Views.Header');
|
||||
const api = webapp.getController('Main').api;
|
||||
const locktype = api.asc_getLocalRestrictions ? api.asc_getLocalRestrictions() : Asc.c_oAscLocalRestrictionType.None;
|
||||
if ( Asc.c_oAscLocalRestrictionType.None !== locktype ) {
|
||||
features.readonly = true;
|
||||
|
||||
header.setDocumentReadOnly(true);
|
||||
api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);
|
||||
|
||||
(new Common.UI.SynchronizeTip({
|
||||
extCls: 'no-arrow',
|
||||
placement: 'bottom',
|
||||
target: $('.toolbar'),
|
||||
text: get_locked_message(locktype),
|
||||
showLink: false,
|
||||
})).on('closeclick', function () {
|
||||
this.close();
|
||||
}).show();
|
||||
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
|
||||
api.asc_registerCallback('asc_onDocumentName', function () {
|
||||
if ( features.readonly ) {
|
||||
if ( api.asc_getLocalRestrictions() == Asc.c_oAscLocalRestrictionType.None ) {
|
||||
features.readonly = false;
|
||||
header.setDocumentReadOnly(false);
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Common.NotificationCenter.on('app:face', function (mode) {
|
||||
features.viewmode = !mode.isEdit;
|
||||
features.crypted = mode.isCrypted;
|
||||
native.execCommand('webapps:features', JSON.stringify(features));
|
||||
|
||||
titlebuttons = {};
|
||||
if ( mode.isEdit ) {
|
||||
const header = webapp.getController('Viewport').getView('Common.Views.Header');
|
||||
if (!!header.btnSave) {
|
||||
titlebuttons['save'] = {btn: header.btnSave};
|
||||
|
||||
var iconname = /\s?([^\s]+)$/.exec(titlebuttons.save.btn.$icon.attr('class'));
|
||||
!!iconname && iconname.length && (titlebuttons.save.icon = btnsave_icons[iconname]);
|
||||
}
|
||||
|
||||
if (!!header.btnPrint)
|
||||
titlebuttons['print'] = {btn: header.btnPrint};
|
||||
|
||||
if (!!header.btnPrintQuick) {
|
||||
titlebuttons['quickprint'] = {
|
||||
btn: header.btnPrintQuick,
|
||||
visible: header.btnPrintQuick.isVisible(),
|
||||
};
|
||||
}
|
||||
|
||||
if (!!header.btnUndo)
|
||||
titlebuttons['undo'] = {btn: header.btnUndo};
|
||||
|
||||
if (!!header.btnRedo)
|
||||
titlebuttons['redo'] = {btn: header.btnRedo};
|
||||
|
||||
for (var i in titlebuttons) {
|
||||
titlebuttons[i].btn.options.signals = ['disabled'];
|
||||
titlebuttons[i].btn.on('disabled', _onTitleButtonDisabled.bind(this, i));
|
||||
}
|
||||
|
||||
if (!!titlebuttons.save) {
|
||||
titlebuttons.save.btn.options.signals.push('icon:changed');
|
||||
titlebuttons.save.btn.on('icon:changed', _onSaveIconChanged.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
if ( !!config.callback_editorconfig ) {
|
||||
config.callback_editorconfig();
|
||||
delete config.callback_editorconfig;
|
||||
}
|
||||
|
||||
if ( native.features.singlewindow !== undefined ) {
|
||||
$('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show']();
|
||||
}
|
||||
});
|
||||
|
||||
Common.NotificationCenter.on({
|
||||
'app:ready': _onAppReady,
|
||||
'document:ready': _onDocumentReady.bind(this),
|
||||
'app:face': _onHidePreloader.bind(this),
|
||||
'modal:show': _onModalDialog.bind(this, 'open'),
|
||||
'modal:close': _onModalDialog.bind(this, 'close'),
|
||||
'modal:hide': _onModalDialog.bind(this, 'hide'),
|
||||
|
@ -428,6 +509,9 @@ define([
|
|||
}
|
||||
},
|
||||
helpUrl: function () {
|
||||
if ( helpUrl )
|
||||
return helpUrl;
|
||||
|
||||
if ( !!nativevars && nativevars.helpUrl ) {
|
||||
var webapp = window.SSE ? 'spreadsheeteditor' :
|
||||
window.PE ? 'presentationeditor' : 'documenteditor';
|
||||
|
@ -436,6 +520,9 @@ define([
|
|||
|
||||
return undefined;
|
||||
},
|
||||
isHelpAvailable: function () {
|
||||
return !!helpUrl;
|
||||
},
|
||||
getDefaultPrinterName: function () {
|
||||
return nativevars ? nativevars.defaultPrinterName : '';
|
||||
},
|
||||
|
|
|
@ -98,12 +98,14 @@ define([
|
|||
'drag': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:drag', state == 'start');
|
||||
},this),
|
||||
'resize': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:resize', state == 'start');
|
||||
},this),
|
||||
'show': _.bind(function(cmp){
|
||||
var h = this.diagramEditorView.getHeight(),
|
||||
innerHeight = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top');
|
||||
if (innerHeight>h && h<700 || innerHeight<h) {
|
||||
h = Math.min(innerHeight, 700);
|
||||
this.diagramEditorView.setHeight(h);
|
||||
if (innerHeight<h) {
|
||||
this.diagramEditorView.setHeight(innerHeight);
|
||||
}
|
||||
|
||||
if (externalEditor) {
|
||||
|
@ -118,7 +120,9 @@ define([
|
|||
}
|
||||
externalEditor.attachMouseEvents();
|
||||
} else {
|
||||
createExternalEditor.apply(this);
|
||||
require(['api'], function () {
|
||||
createExternalEditor.apply(this);
|
||||
}.bind(this));
|
||||
}
|
||||
this.isExternalEditorVisible = true;
|
||||
this.isHandlerCalled = false;
|
||||
|
@ -227,13 +231,21 @@ define([
|
|||
if (eventData.type == "processMouse") {
|
||||
if (eventData.data.event == 'mouse:up') {
|
||||
this.diagramEditorView.binding.dragStop();
|
||||
if (this.diagramEditorView.binding.resizeStop) this.diagramEditorView.binding.resizeStop();
|
||||
} else
|
||||
if (eventData.data.event == 'mouse:move') {
|
||||
var x = parseInt(this.diagramEditorView.$window.css('left')) + eventData.data.pagex,
|
||||
y = parseInt(this.diagramEditorView.$window.css('top')) + eventData.data.pagey + 34;
|
||||
this.diagramEditorView.binding.drag({pageX:x, pageY:y});
|
||||
if (this.diagramEditorView.binding.resize) this.diagramEditorView.binding.resize({pageX:x, pageY:y});
|
||||
}
|
||||
} else
|
||||
if (eventData.type == "resize") {
|
||||
var w = eventData.data.width,
|
||||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.diagramEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
} else
|
||||
|
|
|
@ -51,7 +51,8 @@ define([
|
|||
var appLang = '{{DEFAULT_LANG}}',
|
||||
customization = undefined,
|
||||
targetApp = '',
|
||||
externalEditor = null;
|
||||
externalEditor = null,
|
||||
isAppFirstOpened = true;
|
||||
|
||||
|
||||
var createExternalEditor = function() {
|
||||
|
@ -96,24 +97,33 @@ define([
|
|||
'drag': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:drag', state == 'start');
|
||||
},this),
|
||||
'resize': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:resize', state == 'start');
|
||||
},this),
|
||||
'show': _.bind(function(cmp){
|
||||
var h = this.mergeEditorView.getHeight(),
|
||||
innerHeight = Common.Utils.innerHeight();
|
||||
if (innerHeight>h && h<700 || innerHeight<h) {
|
||||
h = Math.min(innerHeight, 700);
|
||||
this.mergeEditorView.setHeight(h);
|
||||
if (innerHeight<h) {
|
||||
this.mergeEditorView.setHeight(innerHeight);
|
||||
}
|
||||
|
||||
if (externalEditor) {
|
||||
externalEditor.serviceCommand('setAppDisabled',false);
|
||||
if (isAppFirstOpened && this.mergeEditorView._isExternalDocReady) {
|
||||
isAppFirstOpened = false;
|
||||
this.mergeEditorView._mergeData && this.setMergeData();
|
||||
}
|
||||
if (this.needDisableEditing && this.mergeEditorView._isExternalDocReady) {
|
||||
this.onMergeEditingDisabled();
|
||||
}
|
||||
externalEditor.attachMouseEvents();
|
||||
} else {
|
||||
createExternalEditor.apply(this);
|
||||
require(['api'], function () {
|
||||
createExternalEditor.apply(this);
|
||||
}.bind(this))
|
||||
}
|
||||
this.isExternalEditorVisible = true;
|
||||
this.isHandlerCalled = false;
|
||||
}, this),
|
||||
'hide': _.bind(function(cmp){
|
||||
if (externalEditor) {
|
||||
|
@ -139,14 +149,22 @@ define([
|
|||
},
|
||||
|
||||
handler: function(result, value) {
|
||||
externalEditor && externalEditor.serviceCommand('queryClose',{mr:result});
|
||||
return true;
|
||||
if (this.isHandlerCalled) return;
|
||||
this.isHandlerCalled = true;
|
||||
if (this.mergeEditorView._isExternalDocReady)
|
||||
externalEditor && externalEditor.serviceCommand('queryClose',{mr:result});
|
||||
else {
|
||||
this.mergeEditorView.hide();
|
||||
this.isHandlerCalled = false;
|
||||
}
|
||||
},
|
||||
|
||||
setMergeData: function() {
|
||||
externalEditor && externalEditor.serviceCommand('setMergeData', this.mergeEditorView._mergeData);
|
||||
this.mergeEditorView.setEditMode(true);
|
||||
this.mergeEditorView._mergeData = null;
|
||||
if (!isAppFirstOpened) {
|
||||
externalEditor && externalEditor.serviceCommand('setMergeData', this.mergeEditorView._mergeData);
|
||||
this.mergeEditorView.setEditMode(true);
|
||||
this.mergeEditorView._mergeData = null;
|
||||
}
|
||||
},
|
||||
|
||||
loadConfig: function(data) {
|
||||
|
@ -185,6 +203,7 @@ define([
|
|||
if (this.mergeEditorView) {
|
||||
if (eventData.type == 'documentReady') {
|
||||
this.mergeEditorView._isExternalDocReady = true;
|
||||
this.isExternalEditorVisible && (isAppFirstOpened = false);
|
||||
this.mergeEditorView.setControlsDisabled(false);
|
||||
if (this.mergeEditorView._mergeData) {
|
||||
externalEditor && externalEditor.serviceCommand('setMergeData', this.mergeEditorView._mergeData);
|
||||
|
@ -207,17 +226,26 @@ define([
|
|||
}
|
||||
this.mergeEditorView.hide();
|
||||
}
|
||||
this.isHandlerCalled = false;
|
||||
} else
|
||||
if (eventData.type == "processMouse") {
|
||||
if (eventData.data.event == 'mouse:up') {
|
||||
this.mergeEditorView.binding.dragStop();
|
||||
if (this.mergeEditorView.binding.resizeStop) this.mergeEditorView.binding.resizeStop();
|
||||
} else
|
||||
if (eventData.data.event == 'mouse:move') {
|
||||
var x = parseInt(this.mergeEditorView.$window.css('left')) + eventData.data.pagex,
|
||||
y = parseInt(this.mergeEditorView.$window.css('top')) + eventData.data.pagey + 34;
|
||||
this.mergeEditorView.binding.drag({pageX:x, pageY:y});
|
||||
if (this.mergeEditorView.binding.resize) this.mergeEditorView.binding.resize({pageX:x, pageY:y});
|
||||
}
|
||||
} else
|
||||
if (eventData.type == "resize") {
|
||||
var w = eventData.data.width,
|
||||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.mergeEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
} else
|
||||
|
|
|
@ -98,12 +98,14 @@ define([
|
|||
'drag': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:drag', state == 'start');
|
||||
},this),
|
||||
'resize': _.bind(function(o, state){
|
||||
externalEditor && externalEditor.serviceCommand('window:resize', state == 'start');
|
||||
},this),
|
||||
'show': _.bind(function(cmp){
|
||||
var h = this.oleEditorView.getHeight(),
|
||||
innerHeight = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top');
|
||||
if (innerHeight>h && h<700 || innerHeight<h) {
|
||||
h = Math.min(innerHeight, 700);
|
||||
this.oleEditorView.setHeight(h);
|
||||
if (innerHeight<h) {
|
||||
this.oleEditorView.setHeight(innerHeight);
|
||||
}
|
||||
|
||||
if (externalEditor) {
|
||||
|
@ -118,7 +120,9 @@ define([
|
|||
}
|
||||
externalEditor.attachMouseEvents();
|
||||
} else {
|
||||
createExternalEditor.apply(this);
|
||||
require(['api'], function () {
|
||||
createExternalEditor.apply(this);
|
||||
}.bind(this));
|
||||
}
|
||||
this.isExternalEditorVisible = true;
|
||||
this.isHandlerCalled = false;
|
||||
|
@ -131,8 +135,6 @@ define([
|
|||
}, this)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
onLaunch: function() {
|
||||
|
@ -228,12 +230,20 @@ define([
|
|||
if (eventData.type == "processMouse") {
|
||||
if (eventData.data.event == 'mouse:up') {
|
||||
this.oleEditorView.binding.dragStop();
|
||||
if (this.oleEditorView.binding.resizeStop) this.oleEditorView.binding.resizeStop();
|
||||
} else
|
||||
if (eventData.data.event == 'mouse:move') {
|
||||
var x = parseInt(this.oleEditorView.$window.css('left')) + eventData.data.pagex,
|
||||
y = parseInt(this.oleEditorView.$window.css('top')) + eventData.data.pagey + 34;
|
||||
this.oleEditorView.binding.drag({pageX:x, pageY:y});
|
||||
if (this.oleEditorView.binding.resize) this.oleEditorView.binding.resize({pageX:x, pageY:y});
|
||||
}
|
||||
} else
|
||||
if (eventData.type == "resize") {
|
||||
var w = eventData.data.width,
|
||||
h = eventData.data.height;
|
||||
if (w>0 && h>0)
|
||||
this.oleEditorView.setInnerSize(w, h);
|
||||
} else
|
||||
if (eventData.type == "frameToGeneralData") {
|
||||
this.api && this.api.asc_getInformationBetweenFrameAndGeneralEditor(eventData.data);
|
||||
|
|
|
@ -121,7 +121,7 @@ Common.UI.HintManager = new(function() {
|
|||
_usedTitles = [],
|
||||
_appPrefix,
|
||||
_staticHints = { // for desktop buttons
|
||||
"btnhome": 'K'
|
||||
// "btnhome": 'K'
|
||||
};
|
||||
|
||||
var _api;
|
||||
|
@ -324,7 +324,7 @@ Common.UI.HintManager = new(function() {
|
|||
index++;
|
||||
}
|
||||
var title = el.attr('data-hint-title');
|
||||
if (!title) {
|
||||
if (!title && !(index > _arrLetters.length)) {
|
||||
el.attr('data-hint-title', _arrLetters[index].toUpperCase());
|
||||
index++;
|
||||
}
|
||||
|
@ -457,6 +457,8 @@ Common.UI.HintManager = new(function() {
|
|||
};
|
||||
|
||||
var _init = function(api) {
|
||||
if (Common.Utils.isIE || Common.UI.isMac && Common.Utils.isGecko) // turn off hints on IE and FireFox (shortcut F6 selects link in address bar)
|
||||
return;
|
||||
_api = api;
|
||||
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
|
@ -478,7 +480,7 @@ Common.UI.HintManager = new(function() {
|
|||
_clearHints();
|
||||
});
|
||||
$(document).on('keyup', function(e) {
|
||||
if (e.keyCode == Common.UI.Keys.ALT && _needShow && !(window.SSE && window.SSE.getController('Statusbar').getIsDragDrop())) {
|
||||
if ((e.keyCode == Common.UI.Keys.ALT || e.keyCode === 91) && _needShow && !(window.SSE && window.SSE.getController('Statusbar').getIsDragDrop())) {
|
||||
e.preventDefault();
|
||||
if (!_hintVisible) {
|
||||
$('input:focus').blur(); // to change value in inputField
|
||||
|
@ -620,10 +622,11 @@ Common.UI.HintManager = new(function() {
|
|||
}
|
||||
}
|
||||
|
||||
_needShow = (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && !e.shiftKey && e.keyCode == Common.UI.Keys.ALT &&
|
||||
_needShow = (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && !e.shiftKey &&
|
||||
(!Common.Utils.isMac && e.keyCode == Common.UI.Keys.ALT || Common.Utils.isMac && e.metaKey && e.keyCode === Common.UI.Keys.F6) &&
|
||||
!Common.Utils.ModalWindow.isVisible() && _isDocReady && _arrAlphabet.length > 0 &&
|
||||
!(window.PE && $('#pe-preview').is(':visible')));
|
||||
if (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && e.altKey && e.keyCode !== 115) {
|
||||
if (Common.Utils.InternalSettings.get(_appPrefix + "settings-show-alt-hints") && !Common.Utils.isMac && e.altKey && e.keyCode !== 115) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
@ -661,6 +664,8 @@ Common.UI.HintManager = new(function() {
|
|||
};
|
||||
|
||||
var _clearHints = function (isComplete) {
|
||||
if (Common.Utils.isIE || Common.UI.isMac && Common.Utils.isGecko)
|
||||
return;
|
||||
_hintVisible && _hideHints();
|
||||
if (_currentHints.length > 0) {
|
||||
_resetToDefault();
|
||||
|
|
|
@ -47,14 +47,16 @@ if (Common.UI === undefined) {
|
|||
}
|
||||
|
||||
Common.UI.LayoutManager = new(function() {
|
||||
var _config;
|
||||
var _init = function(config) {
|
||||
var _config,
|
||||
_licensed;
|
||||
var _init = function(config, licensed) {
|
||||
_config = config;
|
||||
_licensed = licensed;
|
||||
};
|
||||
|
||||
var _applyCustomization = function(config, el, prefix) {
|
||||
!config && (config = _config);
|
||||
if (!config) return;
|
||||
if (!_licensed || !config) return;
|
||||
|
||||
for (var name in config) {
|
||||
if(config.hasOwnProperty(name)) {
|
||||
|
@ -71,7 +73,7 @@ Common.UI.LayoutManager = new(function() {
|
|||
|
||||
var _isElementVisible = function(value, config, prefix) {
|
||||
!config && (config = _config);
|
||||
if (!config) return true;
|
||||
if (!_licensed || !config) return true;
|
||||
|
||||
var res = true;
|
||||
for (var name in config) {
|
||||
|
@ -89,10 +91,31 @@ Common.UI.LayoutManager = new(function() {
|
|||
return res;
|
||||
};
|
||||
|
||||
var _getInitValue = function(name) {
|
||||
if (_licensed && _config) {
|
||||
var arr = name.split('-'),
|
||||
i = 0,
|
||||
obj = _config;
|
||||
for (i=0; i<arr.length; i++) {
|
||||
if (typeof obj[arr[i]] === 'object' && obj[arr[i]]) {
|
||||
obj = obj[arr[i]];
|
||||
} else
|
||||
break;
|
||||
}
|
||||
if (i===arr.length) {
|
||||
if (typeof obj === 'object' && obj)
|
||||
return obj.mode;
|
||||
else
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
init: _init,
|
||||
applyCustomization: _applyCustomization,
|
||||
isElementVisible: _isElementVisible
|
||||
isElementVisible: _isElementVisible,
|
||||
getInitValue: _getInitValue
|
||||
}
|
||||
})();
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ define([
|
|||
if ( !appOptions.isEditMailMerge && !appOptions.isEditDiagram && !appOptions.isEditOle ) {
|
||||
var tab = {action: 'plugins', caption: me.panelPlugins.groupCaption, dataHintTitle: 'E', layoutname: 'toolbar-plugins'};
|
||||
me.$toolbarPanelPlugins = me.panelPlugins.getPanel();
|
||||
|
||||
me.toolbar = toolbar;
|
||||
toolbar.addTab(tab, me.$toolbarPanelPlugins, 10); // TODO: clear plugins list in left panel
|
||||
}
|
||||
}
|
||||
|
@ -105,6 +105,7 @@ define([
|
|||
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
|
||||
Common.NotificationCenter.on('uitheme:changed', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('window:resize', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
loadConfig: function(data) {
|
||||
|
@ -151,6 +152,16 @@ define([
|
|||
onAppShowed: function (config) {
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
setApi: function(api) {
|
||||
this.api = api;
|
||||
|
||||
|
@ -225,6 +236,10 @@ define([
|
|||
var _group = $('> .group', me.$toolbarPanelPlugins);
|
||||
var $slot = $('<span class="btn-slot text x-huge"></span>').appendTo(_group);
|
||||
btn.render($slot);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: btn});
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -233,6 +248,7 @@ define([
|
|||
me.appOptions.canPlugins = !collection.isEmpty();
|
||||
if ( me.$toolbarPanelPlugins ) {
|
||||
me.$toolbarPanelPlugins.empty();
|
||||
me.toolbar && me.toolbar.clearMoreButton('plugins');
|
||||
|
||||
var _group = $('<div class="group"></div>'),
|
||||
rank = -1,
|
||||
|
@ -259,6 +275,11 @@ define([
|
|||
rank = new_rank;
|
||||
});
|
||||
_group.appendTo(me.$toolbarPanelPlugins);
|
||||
me.toolbar && me.toolbar.isTabActive('plugins') && me.toolbar.processPanelVisible(null, true, true);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.panelPlugins.lockedControls});
|
||||
} else {
|
||||
console.error('toolbar panel isnot created');
|
||||
}
|
||||
|
@ -518,10 +539,13 @@ define([
|
|||
}
|
||||
|
||||
var variationsArr = [],
|
||||
pluginVisible = false;
|
||||
pluginVisible = false,
|
||||
isDisplayedInViewer = false;
|
||||
item.variations.forEach(function(itemVar){
|
||||
var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem;
|
||||
if ( visible ) pluginVisible = true;
|
||||
if (itemVar.isViewer && (itemVar.isDisplayedInViewer!==false))
|
||||
isDisplayedInViewer = true;
|
||||
|
||||
if (item.isUICustomizer ) {
|
||||
visible && arrUI.push({
|
||||
|
@ -571,7 +595,8 @@ define([
|
|||
groupName: (item.group) ? item.group.name : '',
|
||||
groupRank: (item.group) ? item.group.rank : 0,
|
||||
minVersion: item.minVersion,
|
||||
original: item
|
||||
original: item,
|
||||
isDisplayedInViewer: isDisplayedInViewer
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -720,6 +745,19 @@ define([
|
|||
}, funcComplete);
|
||||
} else
|
||||
funcComplete();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props && this.panelPlugins) {
|
||||
this.panelPlugins._state.docProtection = props;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: this.panelPlugins.lockedControls});
|
||||
}
|
||||
}
|
||||
}, Common.Controllers.Plugins || {}));
|
||||
});
|
||||
|
|
|
@ -147,6 +147,23 @@ define([
|
|||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props && this.view) {
|
||||
this.view._state.docProtection = props;
|
||||
}
|
||||
},
|
||||
|
||||
addPassword: function() {
|
||||
|
|
|
@ -82,7 +82,8 @@ define([
|
|||
'reviewchange:view': _.bind(this.onReviewViewClick, this),
|
||||
'reviewchange:compare': _.bind(this.onCompareClick, this),
|
||||
'lang:document': _.bind(this.onDocLanguage, this),
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this)
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this),
|
||||
'protect:update': _.bind(this.onChangeProtectDocument, this)
|
||||
},
|
||||
'Common.Views.ReviewChangesDialog': {
|
||||
'reviewchange:accept': _.bind(this.onAcceptClick, this),
|
||||
|
@ -101,8 +102,18 @@ define([
|
|||
this.collection = this.getApplication().getCollection('Common.Collections.ReviewChanges');
|
||||
this.userCollection = this.getApplication().getCollection('Common.Collections.Users');
|
||||
this.viewmode = false;
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
|
||||
this._state = {posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: []};
|
||||
this._state = { posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: [],
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
Common.NotificationCenter.on('reviewchanges:turn', this.onTurnPreview.bind(this));
|
||||
Common.NotificationCenter.on('spelling:turn', this.onTurnSpelling.bind(this));
|
||||
|
@ -164,26 +175,35 @@ define([
|
|||
SetDisabled: function(state, reviewMode, fillFormMode) {
|
||||
if (this.dlgChanges)
|
||||
this.dlgChanges.close();
|
||||
if (reviewMode)
|
||||
if (reviewMode) {
|
||||
this.lockToolbar(Common.enumLock.previewReviewMode, state);
|
||||
else if (fillFormMode)
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.previewReviewMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else if (fillFormMode) {
|
||||
this.lockToolbar(Common.enumLock.viewFormMode, state);
|
||||
else
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.viewFormMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else {
|
||||
this.lockToolbar(Common.enumLock.viewMode, state);
|
||||
|
||||
}
|
||||
this.setPreviewMode(state);
|
||||
},
|
||||
|
||||
lockToolbar: function (causes, lock, opts) {
|
||||
Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
this.view && Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
},
|
||||
|
||||
setPreviewMode: function(mode) { //disable accept/reject in popover
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var viewmode = this._state.disableEditing || this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
if (viewmode)
|
||||
this.prevcanReview = this.appConfig.canReview;
|
||||
this.appConfig.canReview = (mode) ? false : this.prevcanReview;
|
||||
this.appConfig.canReview = (viewmode) ? false : this.prevcanReview;
|
||||
var me = this;
|
||||
this.popoverChanges && this.popoverChanges.each(function (model) {
|
||||
model.set('hint', !me.appConfig.canReview);
|
||||
|
@ -207,19 +227,16 @@ define([
|
|||
onApiShowChange: function (sdkchange, isShow) {
|
||||
var btnlock = true,
|
||||
changes;
|
||||
if (this.appConfig.canReview && !this.appConfig.isReviewOnly) {
|
||||
if (this.appConfig.canReview && !(this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly)) {
|
||||
if (sdkchange && sdkchange.length>0) {
|
||||
changes = this.readSDKChange(sdkchange);
|
||||
btnlock = this.isSelectedChangesLocked(changes, isShow);
|
||||
}
|
||||
if (this._state.lock !== btnlock) {
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.view.btnAccept, this.view.btnReject]});
|
||||
if (this.dlgChanges) {
|
||||
this.dlgChanges.btnAccept.setDisabled(btnlock);
|
||||
this.dlgChanges.btnReject.setDisabled(btnlock);
|
||||
}
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
this._state.lock = btnlock;
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "accept-reject-lock", btnlock);
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "accept-reject-lock", btnlock);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -384,7 +401,7 @@ define([
|
|||
if (value.Get_SmallCaps() !== undefined)
|
||||
proptext += ((value.Get_SmallCaps() ? '' : me.textNot) + me.textSmallCaps + ', ');
|
||||
if (value.Get_VertAlign() !== undefined)
|
||||
proptext += (((value.Get_VertAlign()==1) ? me.textSuperScript : ((value.Get_VertAlign()==2) ? me.textSubScript : me.textBaseline)) + ', ');
|
||||
proptext += (((value.Get_VertAlign()===Asc.vertalign_SuperScript) ? me.textSuperScript : ((value.Get_VertAlign()===Asc.vertalign_SubScript) ? me.textSubScript : me.textBaseline)) + ', ');
|
||||
if (value.Get_Color() !== undefined)
|
||||
proptext += (me.textColor + ', ');
|
||||
if (value.Get_Highlight() !== undefined)
|
||||
|
@ -485,6 +502,7 @@ define([
|
|||
}
|
||||
var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()),
|
||||
user = me.userCollection.findOriginalUser(item.get_UserId()),
|
||||
isProtectedReview = me._state.docProtection.isReviewOnly,
|
||||
change = new Common.Models.ReviewChange({
|
||||
uid : Common.UI.getId(),
|
||||
userid : item.get_UserId(),
|
||||
|
@ -499,8 +517,9 @@ define([
|
|||
changedata : item,
|
||||
scope : me.view,
|
||||
hint : !me.appConfig.canReview,
|
||||
docProtection: me._state.docProtection,
|
||||
goto : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom),
|
||||
editable : me.appConfig.isReviewOnly && (item.get_UserId() == me.currentUserId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
editable : (me.appConfig.isReviewOnly || isProtectedReview) && (item.get_UserId() == me.currentUserId) || !(me.appConfig.isReviewOnly || isProtectedReview) && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
});
|
||||
|
||||
arr.push(change);
|
||||
|
@ -589,7 +608,7 @@ define([
|
|||
},
|
||||
|
||||
onTurnPreview: function(state, global, fromApi) {
|
||||
if ( this.appConfig.isReviewOnly ) {
|
||||
if ( this.appConfig.isReviewOnly) {
|
||||
this.view.turnChanges(true);
|
||||
} else
|
||||
if ( this.appConfig.canReview ) {
|
||||
|
@ -603,13 +622,13 @@ define([
|
|||
},
|
||||
|
||||
onApiTrackRevisionsChange: function(localFlag, globalFlag, userId) {
|
||||
if ( this.appConfig.isReviewOnly ) {
|
||||
if ( this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly) {
|
||||
this.view.turnChanges(true);
|
||||
} else
|
||||
if ( this.appConfig.canReview ) {
|
||||
var global = (localFlag===null),
|
||||
state = global ? globalFlag : localFlag;
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0));
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0));
|
||||
this.view.turnChanges(state, global);
|
||||
if (userId && this.userCollection) {
|
||||
var rec = this.userCollection.findOriginalUser(userId);
|
||||
|
@ -624,18 +643,20 @@ define([
|
|||
this.view && this.view.turnSpelling(state);
|
||||
|
||||
if (Common.UI.FeaturesManager.canChange('spellcheck') && !suspend) {
|
||||
Common.localStorage.setItem(this.view.appPrefix + "settings-spellcheck", state ? 1 : 0);
|
||||
Common.localStorage.setItem(this.appPrefix + "settings-spellcheck", state ? 1 : 0);
|
||||
this.api.asc_setSpellCheck(state);
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "settings-spellcheck", state);
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "settings-spellcheck", state);
|
||||
}
|
||||
},
|
||||
|
||||
onReviewViewClick: function(menu, item, e) {
|
||||
this.turnDisplayMode(item.value);
|
||||
if (!this.appConfig.isEdit && !this.appConfig.isRestrictedEdit)
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode", item.value); // for viewer
|
||||
else if (item.value=='markup' || item.value=='simple')
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode-editor", item.value); // for editor save only markup modes
|
||||
Common.localStorage.setItem(this.appPrefix + "review-mode", item.value); // for viewer
|
||||
else if (item.value=='markup' || item.value=='simple') {
|
||||
Common.localStorage.setItem(this.appPrefix + "review-mode-editor", item.value); // for editor save only markup modes
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "review-mode-editor", item.value);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.view);
|
||||
},
|
||||
|
||||
|
@ -766,14 +787,14 @@ define([
|
|||
},
|
||||
|
||||
onCoAuthMode: function(menu, item, e) {
|
||||
Common.localStorage.setItem(this.view.appPrefix + "settings-coauthmode", item.value);
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "settings-coauthmode", item.value);
|
||||
Common.localStorage.setItem(this.appPrefix + "settings-coauthmode", item.value);
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "settings-coauthmode", item.value);
|
||||
|
||||
if (this.api) {
|
||||
this.api.asc_SetFastCollaborative(item.value==1);
|
||||
|
||||
if (this.api.SetCollaborativeMarksShowType) {
|
||||
var value = Common.localStorage.getItem(item.value ? this.view.appPrefix + "settings-showchanges-fast" : this.view.appPrefix + "settings-showchanges-strict");
|
||||
var value = Common.localStorage.getItem(item.value ? this.appPrefix + "settings-showchanges-fast" : this.appPrefix + "settings-showchanges-strict");
|
||||
if (value !== null)
|
||||
this.api.SetCollaborativeMarksShowType(value == 'all' ? Asc.c_oAscCollaborativeMarksShowType.All :
|
||||
value == 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);
|
||||
|
@ -781,13 +802,13 @@ define([
|
|||
this.api.SetCollaborativeMarksShowType(item.value ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);
|
||||
}
|
||||
|
||||
value = Common.localStorage.getItem(this.view.appPrefix + "settings-autosave");
|
||||
value = Common.localStorage.getItem(this.appPrefix + "settings-autosave");
|
||||
if (value===null && this.appConfig.customization && this.appConfig.customization.autosave===false)
|
||||
value = 0;
|
||||
value = (!item.value && value!==null) ? parseInt(value) : 1;
|
||||
|
||||
Common.localStorage.setItem(this.view.appPrefix + "settings-autosave", value);
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "settings-autosave", value);
|
||||
Common.localStorage.setItem(this.appPrefix + "settings-autosave", value);
|
||||
Common.Utils.InternalSettings.set(this.appPrefix + "settings-autosave", value);
|
||||
this.api.asc_setAutoSaveGap(value);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.view);
|
||||
|
@ -805,7 +826,7 @@ define([
|
|||
rightMenu: {clear: disable, disable: true},
|
||||
statusBar: true,
|
||||
leftMenu: {disable: false, previewMode: true},
|
||||
fileMenu: {protect: true},
|
||||
fileMenu: {protect: true, info: true},
|
||||
navigation: {disable: false, previewMode: true},
|
||||
comments: {disable: false, previewMode: true},
|
||||
chat: false,
|
||||
|
@ -829,14 +850,14 @@ define([
|
|||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
if ( config.canReview ) {
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
if ( config.canReview ) {
|
||||
// function _setReviewStatus(state, global) {
|
||||
// me.view.turnChanges(state, global);
|
||||
// !global && me.api.asc_SetLocalTrackRevisions(state);
|
||||
// Common.Utils.InternalSettings.set(me.view.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0));
|
||||
// Common.Utils.InternalSettings.set(me.appPrefix + "track-changes", (state ? 0 : 1) + (global ? 2 : 0));
|
||||
// };
|
||||
|
||||
var trackChanges = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.trackChanges : undefined;
|
||||
|
@ -848,13 +869,13 @@ define([
|
|||
me.onApiTrackRevisionsChange(me.api.asc_GetLocalTrackRevisions(), me.api.asc_GetGlobalTrackRevisions());
|
||||
me.api.asc_HaveRevisionsChanges() && me.view.markChanges(true);
|
||||
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + "review-mode-editor");
|
||||
var val = Common.localStorage.getItem(me.appPrefix + "review-mode-editor");
|
||||
if (val===null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
|
||||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : 'markup';
|
||||
}
|
||||
|
||||
Common.Utils.InternalSettings.set(me.appPrefix + "review-mode-editor", val);
|
||||
me.turnDisplayMode(val); // load display mode for all modes (viewer or editor)
|
||||
me.view.turnDisplayMode(val);
|
||||
|
||||
|
@ -862,51 +883,54 @@ define([
|
|||
(!me.appConfig.customization.review || me.appConfig.customization.review.showReviewChanges===undefined) && me.appConfig.customization.showReviewChanges==true) ) {
|
||||
me.dlgChanges = (new Common.Views.ReviewChangesDialog({
|
||||
popoverChanges : me.popoverChanges,
|
||||
mode : me.appConfig
|
||||
mode : me.appConfig,
|
||||
docProtection : me._state.docProtection
|
||||
}));
|
||||
var sdk = $('#editor_sdk'),
|
||||
offset = sdk.offset();
|
||||
me.dlgChanges.show(Math.max(10, offset.left + sdk.width() - 300), Math.max(10, offset.top + sdk.height() - 150));
|
||||
}
|
||||
});
|
||||
} else if (config.canViewReview) {
|
||||
config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
|
||||
if (config.canViewReview) {
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + (config.isEdit || config.isRestrictedEdit ? "review-mode-editor" : "review-mode"));
|
||||
if (val===null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
|
||||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : (config.isEdit || config.isRestrictedEdit ? 'markup' : 'original');
|
||||
} else if (config.canViewReview) {
|
||||
config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
|
||||
if (config.canViewReview) {
|
||||
var val = Common.localStorage.getItem(me.appPrefix + (config.isEdit || config.isRestrictedEdit ? "review-mode-editor" : "review-mode"));
|
||||
if (val===null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
|
||||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : (config.isEdit || config.isRestrictedEdit ? 'markup' : 'original');
|
||||
}
|
||||
me.turnDisplayMode(val);
|
||||
me.view.turnDisplayMode(val);
|
||||
}
|
||||
me.turnDisplayMode(val);
|
||||
me.view.turnDisplayMode(val);
|
||||
}
|
||||
}
|
||||
|
||||
if (me.view && me.view.btnChat) {
|
||||
me.getApplication().getController('LeftMenu').leftMenu.btnChat.on('toggle', function(btn, state){
|
||||
if (state !== me.view.btnChat.pressed)
|
||||
me.view.turnChat(state);
|
||||
});
|
||||
}
|
||||
me.onChangeProtectSheet();
|
||||
if (me.view) {
|
||||
me.lockToolbar(Common.enumLock.hideComments, !Common.localStorage.getBool(me.view.appPrefix + "settings-livecomment", true), {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
}
|
||||
if (me.view && me.view.btnChat) {
|
||||
me.getApplication().getController('LeftMenu').leftMenu.btnChat.on('toggle', function(btn, state){
|
||||
if (state !== me.view.btnChat.pressed)
|
||||
me.view.turnChat(state);
|
||||
});
|
||||
}
|
||||
me.onChangeProtectSheet();
|
||||
if (me.view) {
|
||||
me.lockToolbar(Common.enumLock.hideComments, !Common.localStorage.getBool(me.appPrefix + "settings-livecomment", true), {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!me._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
}
|
||||
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + "settings-review-hover-mode");
|
||||
if (val === null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? !!me.appConfig.customization.review.hoverMode : false;
|
||||
} else
|
||||
val = !!parseInt(val);
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "settings-review-hover-mode", val);
|
||||
me.appConfig.reviewHoverMode = val;
|
||||
var val = Common.localStorage.getItem(me.appPrefix + "settings-review-hover-mode");
|
||||
if (val === null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? !!me.appConfig.customization.review.hoverMode : false;
|
||||
} else
|
||||
val = !!parseInt(val);
|
||||
Common.Utils.InternalSettings.set(me.appPrefix + "settings-review-hover-mode", val);
|
||||
me.appConfig.reviewHoverMode = val;
|
||||
|
||||
me.view && me.view.onAppReady(config);
|
||||
});
|
||||
},
|
||||
|
||||
applySettings: function(menu) {
|
||||
this.view && this.view.turnSpelling( Common.localStorage.getBool(this.view.appPrefix + "settings-spellcheck", true) );
|
||||
this.view && this.view.turnCoAuthMode( Common.localStorage.getBool(this.view.appPrefix + "settings-coauthmode", true) );
|
||||
this.view && this.view.turnSpelling( Common.localStorage.getBool(this.appPrefix + "settings-spellcheck", true) );
|
||||
this.view && this.view.turnCoAuthMode( Common.localStorage.getBool(this.appPrefix + "settings-coauthmode", true) );
|
||||
if ((this.appConfig.canReview || this.appConfig.canViewReview) && this.appConfig.reviewHoverMode)
|
||||
this.onApiShowChange();
|
||||
},
|
||||
|
@ -971,7 +995,8 @@ define([
|
|||
},
|
||||
|
||||
onCoAuthoringDisconnect: function() {
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true)
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true);
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.lostConnect, true, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
},
|
||||
|
||||
onUpdateUsers: function() {
|
||||
|
@ -995,7 +1020,7 @@ define([
|
|||
|
||||
commentsShowHide: function(mode) {
|
||||
if (!this.view) return;
|
||||
var value = Common.Utils.InternalSettings.get(this.view.appPrefix + "settings-livecomment");
|
||||
var value = Common.Utils.InternalSettings.get(this.appPrefix + "settings-livecomment");
|
||||
(value!==undefined) && this.lockToolbar(Common.enumLock.hideComments, mode != 'show' && !value, {array: [this.view.btnCommentRemove, this.view.btnCommentResolve]});
|
||||
},
|
||||
|
||||
|
@ -1011,6 +1036,38 @@ define([
|
|||
this.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [this.view.btnCommentRemove, this.view.btnCommentResolve]});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.lockToolbar(Common.enumLock.docLockView, props.isReadOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockForms, props.isFormsOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockReview, props.isReviewOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockComments, props.isCommentsOnly);
|
||||
if (this.dlgChanges) {
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, props.isReviewOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
}
|
||||
if (!this.appConfig.isReviewOnly) {
|
||||
// protection in document is more important than permissions.review, call asc_SetLocalTrackRevisions even if canReview is false
|
||||
if (props.isReviewOnly) {
|
||||
this.api.asc_SetLocalTrackRevisions(true);
|
||||
this.onApiShowChange();
|
||||
} else if (this._state.prevReviewProtected) {
|
||||
this.api.asc_SetLocalTrackRevisions(false);
|
||||
this.onApiShowChange();
|
||||
}
|
||||
this._state.prevReviewProtected = props.isReviewOnly;
|
||||
}
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
},
|
||||
|
||||
textInserted: '<b>Inserted:</b>',
|
||||
textDeleted: '<b>Deleted:</b>',
|
||||
textParaInserted: '<b>Paragraph Inserted</b> ',
|
||||
|
|
|
@ -30,7 +30,8 @@
|
|||
'`': 192, '-': 189, '=': 187,
|
||||
';': 186, '\'': 222,
|
||||
'[': 219, ']': 221, '\\': 220,
|
||||
'ff-': 173, 'ff=': 61
|
||||
'ff-': 173, 'ff=': 61,
|
||||
numplus: 107, numminus: 109
|
||||
},
|
||||
code = function(x){
|
||||
return _MAP[x] || x.toUpperCase().charCodeAt(0);
|
||||
|
|
|
@ -82,6 +82,7 @@ define([
|
|||
hide : false,
|
||||
filtered : false,
|
||||
hint : false,
|
||||
fullInfoInHint : false,
|
||||
dummy : undefined,
|
||||
editable : true,
|
||||
removable : true
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div class="color" style="display: inline-block; background-color: <% if (usercolor!==null) { %><%=usercolor%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getEncodedName(parsedName) %>
|
||||
</div>
|
||||
<div class="user-date"><%=date%></div>
|
||||
<% if (!editTextInPopover || hint || scope.viewmode) { %>
|
||||
<% if (!editTextInPopover || (hint && !fullInfoInHint) || scope.viewmode) { %>
|
||||
<div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(comment)%></div>
|
||||
<% } else { %>
|
||||
<div class="inner-edit-ct">
|
||||
<textarea class="msg-reply user-select" maxlength="maxCommLength" spellcheck="false" <% if (!!dummy) { %> placeholder="textMention"<% } %>><%=comment%></textarea>
|
||||
<textarea class="msg-reply user-select" maxlength="maxCommLength" spellcheck="false" <% if (!!dummy) { %> placeholder="textMentionComment"<% } %>><%=comment%></textarea>
|
||||
<% if (hideAddReply) { %>
|
||||
<button class="btn normal dlg-btn primary btn-inner-edit" id="id-comments-change-popover">textAdd</button>
|
||||
<% } else { %>
|
||||
|
@ -37,7 +37,7 @@
|
|||
<div class="user-date"><%=item.get("date")%></div>
|
||||
<% if (!item.get("editTextInPopover")) { %>
|
||||
<div oo_editor_input="true" tabindex="-1" class="user-message user-select"><%=scope.pickLink(item.get("reply"))%></div>
|
||||
<% if (!hint && !scope.viewmode) { %>
|
||||
<% if ((fullInfoInHint || !hint) && !scope.viewmode) { %>
|
||||
<div class="btns-reply-ct">
|
||||
<% if (item.get("editable")) { %>
|
||||
<div class="btn-edit img-commonctrl" data-value="<%=item.get("id")%>"></div>
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
<!-- add reply button -->
|
||||
|
||||
<% if (!showReplyInPopover && !hideAddReply && !hint && !scope.viewmode) { %>
|
||||
<% if (!showReplyInPopover && !hideAddReply && (fullInfoInHint || !hint) && !scope.viewmode) { %>
|
||||
<% if (replys.length && !add_arrow) { %>
|
||||
<label class="user-reply" style="margin-left: 20px; margin-top: 5px;" role="presentation" tabindex="-1">textAddReply</label>
|
||||
<% } else { %>
|
||||
|
@ -73,7 +73,7 @@
|
|||
|
||||
<% if (!editTextInPopover && !lock) { %>
|
||||
<div class="edit-ct">
|
||||
<% if (!hint && !scope.viewmode) { %>
|
||||
<% if ((fullInfoInHint || !hint) && !scope.viewmode) { %>
|
||||
<% if (editable) { %>
|
||||
<div class="btn-edit img-commonctrl"></div>
|
||||
<% } %>
|
||||
|
@ -81,9 +81,9 @@
|
|||
<div class="btn-delete img-commonctrl"></div>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% if (editable && !hint && !scope.viewmode) { %>
|
||||
<% if (editable && (fullInfoInHint || !hint) && !scope.viewmode) { %>
|
||||
<div class="btn-resolve <% if (resolved) print('comment-resolved') %>" data-toggle="tooltip"></div>
|
||||
<% } else if (!hint && (!editable || scope.viewmode) && resolved) { %>
|
||||
<% } else if ((fullInfoInHint || !hint) && (!editable || scope.viewmode) && resolved) { %>
|
||||
<div class="icon-resolve i-comment-resolved" data-toggle="tooltip"></div>
|
||||
<% } %>
|
||||
</div>
|
||||
|
@ -93,7 +93,7 @@
|
|||
|
||||
<% if (showReplyInPopover) { %>
|
||||
<div class="reply-ct">
|
||||
<textarea class="msg-reply user-select" placeholder="textAddReply" maxlength="maxCommLength" spellcheck="false"></textarea>
|
||||
<textarea class="msg-reply user-select" placeholder="textMentionReply" maxlength="maxCommLength" spellcheck="false"></textarea>
|
||||
<button class="btn normal dlg-btn primary btn-reply" id="id-comments-change-popover">textReply</button>
|
||||
<button class="btn normal dlg-btn btn-close">textClose</button>
|
||||
</div>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<div class="btn-goto img-commonctrl"></div>
|
||||
<% } %>
|
||||
<% if (!hint) { %>
|
||||
<% if (scope.appConfig.isReviewOnly) { %>
|
||||
<% if (scope.appConfig.isReviewOnly || docProtection.isReviewOnly) { %>
|
||||
<% if (editable) { %>
|
||||
<div class="btn-delete img-commonctrl"></div>
|
||||
<% } %>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<label id="search-adv-title"></label>
|
||||
<div id="search-btn-close"></div>
|
||||
</div>
|
||||
<div id="search-container">
|
||||
<div id="search-adv-settings">
|
||||
<table cols="1">
|
||||
<tbody>
|
||||
|
@ -60,4 +61,5 @@
|
|||
</div>
|
||||
<div id="search-results" class="ps-container oo">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -68,6 +68,7 @@ if ( window.desktop ) {
|
|||
delete params.uitheme;
|
||||
} else {
|
||||
localStorage.setItem("ui-theme-id", theme.id);
|
||||
localStorage.removeItem("ui-theme-use-system");
|
||||
}
|
||||
|
||||
localStorage.removeItem("ui-theme");
|
||||
|
|
|
@ -1095,4 +1095,4 @@ Common.Utils.getKeyByValue = function(obj, value) {
|
|||
return prop;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -402,9 +402,8 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
|
|||
var arr = [
|
||||
this.chReplaceType, this.inputReplace, this.inputBy, this.mathList, this.btnReset, this.btnEdit, this.btnDelete, // 0 tab
|
||||
this.inputRecFind, this.mathRecList, this.btnResetRec, this.btnAddRec, this.btnDeleteRec, // 1 tab
|
||||
this.chHyperlink // 2 tab
|
||||
];
|
||||
arr = arr.concat(this.chNewRows ? [this.chNewRows] : [this.chQuotes, this.chHyphens, this.chBulleted, this.chNumbered]);
|
||||
arr = arr.concat(this.chNewRows ? [this.chHyperlink, this.chNewRows] : [this.chQuotes, this.chHyphens, this.chHyperlink, this.chDoubleSpaces, this.chBulleted, this.chNumbered]);
|
||||
arr = arr.concat(this.chFLSentence ? [this.chFLSentence, this.chFLCells] : []);
|
||||
return arr;
|
||||
},
|
||||
|
@ -487,22 +486,30 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
|
|||
|
||||
onDelete: function() {
|
||||
var rec = this.mathList.getSelectedRec();
|
||||
var path = '';
|
||||
var val;
|
||||
if (rec) {
|
||||
if (rec.get('defaultValue')) {
|
||||
var path = this.appPrefix + "settings-math-correct-rem";
|
||||
path = this.appPrefix + "settings-math-correct-rem";
|
||||
var disabled = !rec.get('defaultDisabled');
|
||||
rec.set('defaultDisabled', disabled);
|
||||
if (disabled)
|
||||
this.arrRem.push(rec.get('replaced'));
|
||||
else
|
||||
this.arrRem.splice(this.arrRem.indexOf(rec.get('replaced')), 1);
|
||||
var val = JSON.stringify(this.arrRem);
|
||||
val = JSON.stringify(this.arrRem);
|
||||
Common.Utils.InternalSettings.set(path, val);
|
||||
Common.localStorage.setItem(path, val);
|
||||
this.btnDelete.setCaption(disabled ? this.textRestore : this.textDelete);
|
||||
disabled ? this.api.asc_deleteFromAutoCorrectMathSymbols(rec.get('replaced')) : this.api.asc_AddOrEditFromAutoCorrectMathSymbols(rec.get('replaced'), rec.get('defaultValue'));
|
||||
} else {
|
||||
_mathStore.remove(rec);
|
||||
|
||||
this.arrAdd.splice(this.arrAdd.indexOf(rec.get('replaced')), 1);
|
||||
path = this.appPrefix + "settings-math-correct-add";
|
||||
val = JSON.stringify(this.arrAdd);
|
||||
Common.Utils.InternalSettings.set(path, val);
|
||||
Common.localStorage.setItem(path, val);
|
||||
this.mathList.scroller && this.mathList.scroller.update({});
|
||||
this.api.asc_deleteFromAutoCorrectMathSymbols(rec.get('replaced'));
|
||||
}
|
||||
|
@ -746,22 +753,30 @@ define([ 'text!common/main/lib/template/AutoCorrectDialog.template',
|
|||
|
||||
onDeleteRec: function() {
|
||||
var rec = this.mathRecList.getSelectedRec();
|
||||
var path;
|
||||
var val;
|
||||
if (rec) {
|
||||
if (rec.get('defaultValue')) {
|
||||
var path = this.appPrefix + "settings-rec-functions-rem";
|
||||
path = this.appPrefix + "settings-rec-functions-rem";
|
||||
var disabled = !rec.get('defaultDisabled');
|
||||
rec.set('defaultDisabled', disabled);
|
||||
if (disabled)
|
||||
this.arrRemRec.push(rec.get('value'));
|
||||
else
|
||||
this.arrRemRec.splice(this.arrRemRec.indexOf(rec.get('value')), 1);
|
||||
var val = JSON.stringify(this.arrRemRec);
|
||||
val = JSON.stringify(this.arrRemRec);
|
||||
Common.Utils.InternalSettings.set(path, val);
|
||||
Common.localStorage.setItem(path, val);
|
||||
this.btnDeleteRec.setCaption(disabled ? this.textRestore : this.textDelete);
|
||||
disabled ? this.api.asc_deleteFromAutoCorrectMathFunctions(rec.get('value')) : this.api.asc_AddFromAutoCorrectMathFunctions(rec.get('value'));
|
||||
} else {
|
||||
_functionsStore.remove(rec);
|
||||
|
||||
this.arrAddRec.splice(this.arrAddRec.indexOf(rec.get('value')), 1);
|
||||
path = this.appPrefix + "settings-rec-functions-add";
|
||||
val = JSON.stringify(this.arrAddRec);
|
||||
Common.Utils.InternalSettings.set(path, val);
|
||||
Common.localStorage.setItem(path, val);
|
||||
this.mathRecList.scroller && this.mathRecList.scroller.update({});
|
||||
this.api.asc_deleteFromAutoCorrectMathFunctions(rec.get('value'));
|
||||
}
|
||||
|
|
|
@ -336,9 +336,24 @@ define([
|
|||
// text box setup autosize input text
|
||||
|
||||
this.setupAutoSizingTextBox();
|
||||
this.txtMessage.bind('input propertychange', _.bind(this.updateHeightTextBox, this));
|
||||
this.disableTextBoxButton($(this.txtMessage));
|
||||
this.txtMessage.bind('input propertychange', _.bind(this.onTextareaInput, this));
|
||||
},
|
||||
onTextareaInput: function(event) {
|
||||
this.updateHeightTextBox(event);
|
||||
this.disableTextBoxButton($(event.target));
|
||||
},
|
||||
disableTextBoxButton: function(textboxEl) {
|
||||
var button = $(textboxEl.siblings('#chat-msg-btn-add')[0]);
|
||||
|
||||
if(textboxEl.val().trim().length > 0) {
|
||||
button.removeAttr('disabled');
|
||||
button.removeClass('disabled');
|
||||
} else {
|
||||
button.attr('disabled', true);
|
||||
button.addClass('disabled');
|
||||
}
|
||||
},
|
||||
updateLayout: function (applyUsersAutoSizig) {
|
||||
var me = this;
|
||||
var height = this.panelBox.height();
|
||||
|
|
|
@ -98,6 +98,17 @@ define([
|
|||
var text = $(this.el).find('textarea');
|
||||
return (text && text.length) ? text.val().trim() : '';
|
||||
},
|
||||
disableTextBoxButton: function(textboxEl) {
|
||||
var button = $(textboxEl.siblings('#id-comments-change')[0]);
|
||||
|
||||
if(textboxEl.val().trim().length > 0) {
|
||||
button.removeAttr('disabled');
|
||||
button.removeClass('disabled');
|
||||
} else {
|
||||
button.attr('disabled', true);
|
||||
button.addClass('disabled');
|
||||
}
|
||||
},
|
||||
autoHeightTextBox: function () {
|
||||
var view = this,
|
||||
textBox = $(this.el).find('textarea'),
|
||||
|
@ -127,13 +138,19 @@ define([
|
|||
view.autoScrollToEditButtons();
|
||||
}
|
||||
|
||||
function onTextareaInput(event) {
|
||||
updateTextBoxHeight();
|
||||
view.disableTextBoxButton($(event.target));
|
||||
}
|
||||
|
||||
if (textBox && textBox.length) {
|
||||
domTextBox = textBox.get(0);
|
||||
|
||||
view.disableTextBoxButton(textBox);
|
||||
if (domTextBox) {
|
||||
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
|
||||
updateTextBoxHeight();
|
||||
textBox.bind('input propertychange', updateTextBoxHeight)
|
||||
textBox.bind('input propertychange', onTextareaInput)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,7 +188,7 @@ define([
|
|||
|
||||
addCommentHeight: 45,
|
||||
newCommentHeight: 110,
|
||||
textBoxAutoSizeLocked: undefined, // disable autosize textbox
|
||||
textBoxAutoSizeLocked: undefined, // disable autoHeightTextBoxsize textbox
|
||||
viewmode: false,
|
||||
|
||||
_commentsViewOnItemClick: function (picker, item, record, e) {
|
||||
|
@ -694,7 +711,17 @@ define([
|
|||
this.layout.setResizeValue(0, container.height() - this.addCommentHeight);
|
||||
}
|
||||
},
|
||||
disableTextBoxButton: function(textboxEl) {
|
||||
var button = $(textboxEl.parent().siblings('.add')[0]);
|
||||
|
||||
if(textboxEl.val().trim().length > 0) {
|
||||
button.removeAttr('disabled');
|
||||
button.removeClass('disabled');
|
||||
} else {
|
||||
button.attr('disabled', true);
|
||||
button.addClass('disabled');
|
||||
}
|
||||
},
|
||||
autoHeightTextBox: function () {
|
||||
var me = this, domTextBox = null, lineHeight = 0, minHeight = 44;
|
||||
var textBox = $('#comment-msg-new', this.el);
|
||||
|
@ -736,9 +763,15 @@ define([
|
|||
Math.min(height - contentHeight - textBoxMinHeightIndent, height - me.newCommentHeight)));
|
||||
}
|
||||
|
||||
function onTextareaInput(event) {
|
||||
updateTextBoxHeight();
|
||||
me.disableTextBoxButton($(event.target));
|
||||
}
|
||||
|
||||
me.disableTextBoxButton(textBox);
|
||||
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
|
||||
updateTextBoxHeight();
|
||||
textBox.bind('input propertychange', updateTextBoxHeight);
|
||||
textBox.bind('input propertychange', onTextareaInput);
|
||||
|
||||
this.textBox = textBox;
|
||||
},
|
||||
|
@ -806,11 +839,19 @@ define([
|
|||
return str_res;
|
||||
},
|
||||
|
||||
pickEMail: function (commentId, message) {
|
||||
pickEMail: function (commentId, message, oldMessage) {
|
||||
var old_arr = [];
|
||||
if (oldMessage) {
|
||||
old_arr = Common.Utils.String.htmlEncode(oldMessage).match(/\B[@+][A-Z0-9._%+-]+@[A-Z0-9._-]+\.[A-Z]+\b/gi);
|
||||
old_arr = _.map(old_arr, function(str){
|
||||
return str.slice(1, str.length);
|
||||
});
|
||||
}
|
||||
var arr = Common.Utils.String.htmlEncode(message).match(/\B[@+][A-Z0-9._%+-]+@[A-Z0-9._-]+\.[A-Z]+\b/gi);
|
||||
arr = _.map(arr, function(str){
|
||||
return str.slice(1, str.length);
|
||||
});
|
||||
arr = _.difference(arr, old_arr);
|
||||
(arr.length>0) && Common.Gateway.requestSendNotify({
|
||||
emails: arr,
|
||||
actionId: commentId, // comment id
|
||||
|
|
|
@ -39,59 +39,30 @@
|
|||
*/
|
||||
|
||||
define([
|
||||
'common/main/lib/component/Window'
|
||||
'common/main/lib/view/ExternalEditor'
|
||||
], function () { 'use strict';
|
||||
|
||||
Common.Views.ExternalDiagramEditor = Common.UI.Window.extend(_.extend({
|
||||
Common.Views.ExternalDiagramEditor = Common.Views.ExternalEditor.extend(_.extend({
|
||||
initialize : function(options) {
|
||||
var _options = {};
|
||||
var _inner_height = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top');
|
||||
_.extend(_options, {
|
||||
id: 'id-external-diagram-editor',
|
||||
title: this.textTitle,
|
||||
width: 910,
|
||||
height: (_inner_height - 700)<0 ? _inner_height : 700,
|
||||
cls: 'advanced-settings-dlg',
|
||||
header: true,
|
||||
toolclose: 'hide',
|
||||
toolcallback: _.bind(this.onToolClose, this)
|
||||
storageName: 'diagram-editor',
|
||||
sdkplaceholder: 'id-diagram-editor-placeholder',
|
||||
initwidth: 900,
|
||||
initheight: 700,
|
||||
minwidth: 730,
|
||||
minheight: 275
|
||||
}, options);
|
||||
|
||||
this.template = [
|
||||
'<div id="id-diagram-editor-container" class="box" style="height:' + (_options.height-85) + 'px;">',
|
||||
'<div id="id-diagram-editor-placeholder" style="width: 100%;height: 100%;"></div>',
|
||||
'</div>',
|
||||
'<div class="separator horizontal"></div>',
|
||||
'<div class="footer" style="text-align: center;">',
|
||||
'<button id="id-btn-diagram-editor-apply" class="btn normal dlg-btn primary custom" result="ok" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textSave + '</button>',
|
||||
'<button id="id-btn-diagram-editor-cancel" class="btn normal dlg-btn" result="cancel" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textClose + '</button>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
_options.tpl = _.template(this.template)(_options);
|
||||
|
||||
this.handler = _options.handler;
|
||||
this._chartData = null;
|
||||
this._isNewChart = true;
|
||||
Common.UI.Window.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
this.btnSave = new Common.UI.Button({
|
||||
el: $('#id-btn-diagram-editor-apply'),
|
||||
disabled: true
|
||||
});
|
||||
this.btnCancel = new Common.UI.Button({
|
||||
el: $('#id-btn-diagram-editor-cancel')
|
||||
});
|
||||
|
||||
this.$window.find('.dlg-btn').on('click', _.bind(this.onDlgBtnClick, this));
|
||||
Common.Views.ExternalEditor.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
show: function() {
|
||||
this.setPlaceholder();
|
||||
Common.UI.Window.prototype.show.apply(this, arguments);
|
||||
Common.Views.ExternalEditor.prototype.show.apply(this, arguments);
|
||||
},
|
||||
|
||||
setChartData: function(data) {
|
||||
|
@ -100,55 +71,6 @@ define([
|
|||
this.fireEvent('setchartdata', this);
|
||||
},
|
||||
|
||||
setEditMode: function(mode) {
|
||||
this._isNewChart = !mode;
|
||||
},
|
||||
|
||||
isEditMode: function() {
|
||||
return !this._isNewChart;
|
||||
},
|
||||
|
||||
setControlsDisabled: function(disable) {
|
||||
this.btnSave.setDisabled(disable);
|
||||
this.btnCancel.setDisabled(disable);
|
||||
(disable) ? this.$window.find('.tool.close').addClass('disabled') : this.$window.find('.tool.close').removeClass('disabled');
|
||||
},
|
||||
|
||||
onDlgBtnClick: function(event) {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, event.currentTarget.attributes['result'].value);
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
onToolClose: function() {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, 'cancel');
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
setHeight: function(height) {
|
||||
if (height >= 0) {
|
||||
var min = parseInt(this.$window.css('min-height'));
|
||||
height < min && (height = min);
|
||||
this.$window.height(height);
|
||||
|
||||
var header_height = (this.initConfig.header) ? parseInt(this.$window.find('> .header').css('height')) : 0;
|
||||
|
||||
this.$window.find('> .body').css('height', height-header_height);
|
||||
this.$window.find('> .body > .box').css('height', height-85);
|
||||
|
||||
var top = (Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top') - parseInt(height)) / 2;
|
||||
var left = (Common.Utils.innerWidth() - parseInt(this.initConfig.width)) / 2;
|
||||
|
||||
this.$window.css('left',left);
|
||||
this.$window.css('top', Common.Utils.InternalSettings.get('window-inactive-area-top') + top);
|
||||
}
|
||||
},
|
||||
|
||||
setPlaceholder: function(placeholder) {
|
||||
this._placeholder = placeholder;
|
||||
},
|
||||
|
@ -157,8 +79,6 @@ define([
|
|||
return this._placeholder;
|
||||
},
|
||||
|
||||
textSave: 'Save & Exit',
|
||||
textClose: 'Close',
|
||||
textTitle: 'Chart Editor'
|
||||
}, Common.Views.ExternalDiagramEditor || {}));
|
||||
});
|
||||
|
|
195
apps/common/main/lib/view/ExternalEditor.js
Normal file
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2010-2022
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* ExternalEditor.js
|
||||
*
|
||||
* Created by Julia Radzhabova on 22/06/22
|
||||
* Copyright (c) 2022 Ascensio System SIA. All rights reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
define([
|
||||
'common/main/lib/component/Window'
|
||||
], function () { 'use strict';
|
||||
|
||||
Common.Views.ExternalEditor = Common.UI.Window.extend(_.extend({
|
||||
initialize : function(options) {
|
||||
var filter = Common.localStorage.getKeysFilter(),
|
||||
appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
this.storageName = appPrefix + (options.storageName || 'external-editor');
|
||||
|
||||
var _options = {},
|
||||
width = options.initwidth || 900,
|
||||
height = options.initheight || 700;
|
||||
var value = Common.localStorage.getItem(this.storageName + '-width');
|
||||
value && (width = parseInt(value));
|
||||
value = Common.localStorage.getItem(this.storageName + '-height');
|
||||
value && (height = parseInt(value));
|
||||
|
||||
var _inner_height = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top');
|
||||
_.extend(_options, {
|
||||
width: width,
|
||||
height: (_inner_height - height)<0 ? _inner_height : height,
|
||||
cls: 'advanced-settings-dlg',
|
||||
header: true,
|
||||
toolclose: 'hide',
|
||||
toolcallback: _.bind(this.onToolClose, this),
|
||||
resizable: true
|
||||
}, options);
|
||||
|
||||
this._headerFooterHeight = 85;
|
||||
|
||||
this.template = [
|
||||
'<div id="id-editor-container" class="box" style="height:' + (_options.height-this._headerFooterHeight) + 'px; padding: 0 5px;">',
|
||||
'<div id="' + (_options.sdkplaceholder || '') + '" style="width: 100%;height: 100%;"></div>',
|
||||
'</div>',
|
||||
'<div class="separator horizontal"></div>',
|
||||
'<div class="footer" style="text-align: center;">',
|
||||
'<button id="id-btn-editor-apply" class="btn normal dlg-btn primary custom" result="ok" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textSave + '</button>',
|
||||
'<button id="id-btn-editor-cancel" class="btn normal dlg-btn" result="cancel" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textClose + '</button>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
_options.tpl = _.template(this.template)(_options);
|
||||
|
||||
this.handler = _options.handler;
|
||||
this._isNewObject = true;
|
||||
this.on('resize', _.bind(this.onWindowResize, this));
|
||||
Common.UI.Window.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
this.boxEl = this.$window.find('.body > .box');
|
||||
|
||||
this.btnSave = new Common.UI.Button({
|
||||
el: this.$window.find('#id-btn-editor-apply'),
|
||||
disabled: true
|
||||
});
|
||||
this.btnCancel = new Common.UI.Button({
|
||||
el: this.$window.find('#id-btn-editor-cancel')
|
||||
});
|
||||
|
||||
this.$window.find('.dlg-btn').on('click', _.bind(this.onDlgBtnClick, this));
|
||||
},
|
||||
|
||||
show: function() {
|
||||
Common.UI.Window.prototype.show.apply(this, arguments);
|
||||
},
|
||||
|
||||
setEditMode: function(mode) {
|
||||
this._isNewObject = !mode;
|
||||
},
|
||||
|
||||
isEditMode: function() {
|
||||
return !this._isNewObject;
|
||||
},
|
||||
|
||||
setControlsDisabled: function(disable) {
|
||||
this.btnSave.setDisabled(disable);
|
||||
this.btnCancel.setDisabled(disable);
|
||||
(disable) ? this.$window.find('.tool.close').addClass('disabled') : this.$window.find('.tool.close').removeClass('disabled');
|
||||
},
|
||||
|
||||
onDlgBtnClick: function(event) {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, event.currentTarget.attributes['result'].value);
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
onToolClose: function() {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, 'cancel');
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
setHeight: function(height) {
|
||||
if (height >= 0) {
|
||||
var min = parseInt(this.$window.css('min-height'));
|
||||
height < min && (height = min);
|
||||
this.$window.height(height);
|
||||
|
||||
var header_height = (this.initConfig.header) ? parseInt(this.$window.find('> .header').css('height')) : 0;
|
||||
|
||||
this.$window.find('> .body').css('height', height-header_height);
|
||||
this.$window.find('> .body > .box').css('height', height-this._headerFooterHeight);
|
||||
}
|
||||
},
|
||||
|
||||
setInCenter: function() {
|
||||
var height = this.$window.height(),
|
||||
top = (Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top') - parseInt(height)) / 2,
|
||||
left = (Common.Utils.innerWidth() - parseInt(this.initConfig.width)) / 2;
|
||||
|
||||
this.$window.css('left',left);
|
||||
this.$window.css('top', Common.Utils.InternalSettings.get('window-inactive-area-top') + top);
|
||||
},
|
||||
|
||||
setInnerSize: function(width, height) {
|
||||
var maxHeight = Common.Utils.innerHeight(),
|
||||
maxWidth = Common.Utils.innerWidth(),
|
||||
borders_width = (parseInt(this.$window.css('border-left-width')) + parseInt(this.$window.css('border-right-width'))),
|
||||
paddings = (parseInt(this.boxEl.css('padding-left')) + parseInt(this.boxEl.css('padding-right')));
|
||||
height += 90; // add toolbar and statusbar height
|
||||
if (maxHeight<height + this._headerFooterHeight)
|
||||
height = maxHeight - this._headerFooterHeight;
|
||||
if (maxWidth<width + paddings + borders_width)
|
||||
width = maxWidth - paddings - borders_width;
|
||||
|
||||
this.boxEl.css('height', height);
|
||||
|
||||
this.setHeight(height + this._headerFooterHeight);
|
||||
this.setWidth(width + paddings + borders_width);
|
||||
|
||||
if (this.getLeft()<0)
|
||||
this.$window.css('left', 0);
|
||||
if (this.getTop() < Common.Utils.InternalSettings.get('window-inactive-area-top') )
|
||||
this.$window.css('top', Common.Utils.InternalSettings.get('window-inactive-area-top'));
|
||||
},
|
||||
|
||||
onWindowResize: function (args) {
|
||||
if (args && args[1]=='end') {
|
||||
var value = this.getSize();
|
||||
Common.localStorage.setItem(this.storageName + '-width', value[0]);
|
||||
Common.localStorage.setItem(this.storageName + '-height', value[1]);
|
||||
}
|
||||
},
|
||||
|
||||
textSave: 'Save & Exit',
|
||||
textClose: 'Close'
|
||||
}, Common.Views.ExternalEditor || {}));
|
||||
});
|
|
@ -39,55 +39,25 @@
|
|||
*/
|
||||
|
||||
define([
|
||||
'common/main/lib/component/Window'
|
||||
'common/main/lib/view/ExternalEditor'
|
||||
], function () { 'use strict';
|
||||
|
||||
Common.Views.ExternalMergeEditor = Common.UI.Window.extend(_.extend({
|
||||
Common.Views.ExternalMergeEditor = Common.Views.ExternalEditor.extend(_.extend({
|
||||
initialize : function(options) {
|
||||
var _options = {};
|
||||
_.extend(_options, {
|
||||
id: 'id-external-merge-editor',
|
||||
title: this.textTitle,
|
||||
width: 910,
|
||||
height: (Common.Utils.innerHeight()-700)<0 ? Common.Utils.innerHeight(): 700,
|
||||
cls: 'advanced-settings-dlg',
|
||||
header: true,
|
||||
toolclose: 'hide',
|
||||
toolcallback: _.bind(this.onToolClose, this)
|
||||
storageName: 'merge-editor',
|
||||
sdkplaceholder: 'id-merge-editor-placeholder',
|
||||
initwidth: 900,
|
||||
initheight: 700,
|
||||
minwidth: 370,
|
||||
minheight: 275
|
||||
}, options);
|
||||
|
||||
this.template = [
|
||||
'<div id="id-merge-editor-container" class="box" style="height:' + (_options.height-85) + 'px;">',
|
||||
'<div id="id-merge-editor-placeholder" style="width: 100%;height: 100%;"></div>',
|
||||
'</div>',
|
||||
'<div class="separator horizontal"></div>',
|
||||
'<div class="footer" style="text-align: center;">',
|
||||
'<button id="id-btn-merge-editor-apply" class="btn normal dlg-btn primary custom" result="ok" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textSave + '</button>',
|
||||
'<button id="id-btn-merge-editor-cancel" class="btn normal dlg-btn" result="cancel" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textClose + '</button>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
_options.tpl = _.template(this.template)(_options);
|
||||
|
||||
this.handler = _options.handler;
|
||||
this._mergeData = null;
|
||||
this._isNewMerge = true;
|
||||
Common.UI.Window.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
this.btnSave = new Common.UI.Button({
|
||||
el: $('#id-btn-merge-editor-apply'),
|
||||
disabled: true
|
||||
});
|
||||
this.btnCancel = new Common.UI.Button({
|
||||
el: $('#id-btn-merge-editor-cancel'),
|
||||
disabled: true
|
||||
});
|
||||
|
||||
this.$window.find('.tool.close').addClass('disabled');
|
||||
this.$window.find('.dlg-btn').on('click', _.bind(this.onDlgBtnClick, this));
|
||||
Common.Views.ExternalEditor.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
setMergeData: function(data) {
|
||||
|
@ -96,54 +66,6 @@ define([
|
|||
this.fireEvent('setmergedata', this);
|
||||
},
|
||||
|
||||
setEditMode: function(mode) {
|
||||
this._isNewMerge = !mode;
|
||||
},
|
||||
|
||||
isEditMode: function() {
|
||||
return !this._isNewMerge;
|
||||
},
|
||||
|
||||
setControlsDisabled: function(disable) {
|
||||
this.btnSave.setDisabled(disable);
|
||||
this.btnCancel.setDisabled(disable);
|
||||
(disable) ? this.$window.find('.tool.close').addClass('disabled') : this.$window.find('.tool.close').removeClass('disabled');
|
||||
},
|
||||
|
||||
onDlgBtnClick: function(event) {
|
||||
var state = event.currentTarget.attributes['result'].value;
|
||||
if ( this.handler && this.handler.call(this, state) )
|
||||
return;
|
||||
this.hide();
|
||||
},
|
||||
|
||||
onToolClose: function() {
|
||||
if ( this.handler && this.handler.call(this, 'cancel') )
|
||||
return;
|
||||
this.hide();
|
||||
},
|
||||
|
||||
setHeight: function(height) {
|
||||
if (height >= 0) {
|
||||
var min = parseInt(this.$window.css('min-height'));
|
||||
height < min && (height = min);
|
||||
this.$window.height(height);
|
||||
|
||||
var header_height = (this.initConfig.header) ? parseInt(this.$window.find('> .header').css('height')) : 0;
|
||||
|
||||
this.$window.find('> .body').css('height', height-header_height);
|
||||
this.$window.find('> .body > .box').css('height', height-85);
|
||||
|
||||
var top = (Common.Utils.innerHeight() - parseInt(height)) / 2;
|
||||
var left = (Common.Utils.innerWidth() - parseInt(this.initConfig.width)) / 2;
|
||||
|
||||
this.$window.css('left',left);
|
||||
this.$window.css('top',top);
|
||||
}
|
||||
},
|
||||
|
||||
textSave: 'Save & Exit',
|
||||
textClose: 'Close',
|
||||
textTitle: 'Mail Merge Recipients'
|
||||
}, Common.Views.ExternalMergeEditor || {}));
|
||||
});
|
|
@ -39,59 +39,25 @@
|
|||
*/
|
||||
|
||||
define([
|
||||
'common/main/lib/component/Window'
|
||||
'common/main/lib/view/ExternalEditor'
|
||||
], function () { 'use strict';
|
||||
|
||||
Common.Views.ExternalOleEditor = Common.UI.Window.extend(_.extend({
|
||||
Common.Views.ExternalOleEditor = Common.Views.ExternalEditor.extend(_.extend({
|
||||
initialize : function(options) {
|
||||
var _options = {};
|
||||
var _inner_height = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top');
|
||||
_.extend(_options, {
|
||||
id: 'id-external-ole-editor',
|
||||
title: this.textTitle,
|
||||
width: 910,
|
||||
height: (_inner_height - 700)<0 ? _inner_height : 700,
|
||||
cls: 'advanced-settings-dlg',
|
||||
header: true,
|
||||
toolclose: 'hide',
|
||||
toolcallback: _.bind(this.onToolClose, this)
|
||||
storageName: 'ole-editor',
|
||||
sdkplaceholder: 'id-ole-editor-placeholder',
|
||||
initwidth: 900,
|
||||
initheight: 700,
|
||||
minwidth: 860,
|
||||
minheight: 275
|
||||
}, options);
|
||||
|
||||
this.template = [
|
||||
'<div id="id-ole-editor-container" class="box" style="height:' + (_options.height-85) + 'px;">',
|
||||
'<div id="id-ole-editor-placeholder" style="width: 100%;height: 100%;"></div>',
|
||||
'</div>',
|
||||
'<div class="separator horizontal"></div>',
|
||||
'<div class="footer" style="text-align: center;">',
|
||||
'<button id="id-btn-ole-editor-apply" class="btn normal dlg-btn primary custom" result="ok" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textSave + '</button>',
|
||||
'<button id="id-btn-ole-editor-cancel" class="btn normal dlg-btn" result="cancel" data-hint="1" data-hint-direction="bottom" data-hint-offset="big">' + this.textClose + '</button>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
_options.tpl = _.template(this.template)(_options);
|
||||
|
||||
this.handler = _options.handler;
|
||||
this._oleData = null;
|
||||
this._isNewOle = true;
|
||||
Common.UI.Window.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
this.btnSave = new Common.UI.Button({
|
||||
el: $('#id-btn-ole-editor-apply'),
|
||||
disabled: true
|
||||
});
|
||||
this.btnCancel = new Common.UI.Button({
|
||||
el: $('#id-btn-ole-editor-cancel')
|
||||
});
|
||||
|
||||
this.$window.find('.dlg-btn').on('click', _.bind(this.onDlgBtnClick, this));
|
||||
},
|
||||
|
||||
show: function() {
|
||||
this.setPlaceholder();
|
||||
Common.UI.Window.prototype.show.apply(this, arguments);
|
||||
Common.Views.ExternalEditor.prototype.initialize.call(this, _options);
|
||||
},
|
||||
|
||||
setOleData: function(data) {
|
||||
|
@ -100,65 +66,6 @@ define([
|
|||
this.fireEvent('setoledata', this);
|
||||
},
|
||||
|
||||
setEditMode: function(mode) {
|
||||
this._isNewOle = !mode;
|
||||
},
|
||||
|
||||
isEditMode: function() {
|
||||
return !this._isNewOle;
|
||||
},
|
||||
|
||||
setControlsDisabled: function(disable) {
|
||||
this.btnSave.setDisabled(disable);
|
||||
this.btnCancel.setDisabled(disable);
|
||||
(disable) ? this.$window.find('.tool.close').addClass('disabled') : this.$window.find('.tool.close').removeClass('disabled');
|
||||
},
|
||||
|
||||
onDlgBtnClick: function(event) {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, event.currentTarget.attributes['result'].value);
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
onToolClose: function() {
|
||||
if ( this.handler ) {
|
||||
this.handler.call(this, 'cancel');
|
||||
return;
|
||||
}
|
||||
this.hide();
|
||||
},
|
||||
|
||||
setHeight: function(height) {
|
||||
if (height >= 0) {
|
||||
var min = parseInt(this.$window.css('min-height'));
|
||||
height < min && (height = min);
|
||||
this.$window.height(height);
|
||||
|
||||
var header_height = (this.initConfig.header) ? parseInt(this.$window.find('> .header').css('height')) : 0;
|
||||
|
||||
this.$window.find('> .body').css('height', height-header_height);
|
||||
this.$window.find('> .body > .box').css('height', height-85);
|
||||
|
||||
var top = (Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top') - parseInt(height)) / 2;
|
||||
var left = (Common.Utils.innerWidth() - parseInt(this.initConfig.width)) / 2;
|
||||
|
||||
this.$window.css('left',left);
|
||||
this.$window.css('top', Common.Utils.InternalSettings.get('window-inactive-area-top') + top);
|
||||
}
|
||||
},
|
||||
|
||||
setPlaceholder: function(placeholder) {
|
||||
this._placeholder = placeholder;
|
||||
},
|
||||
|
||||
getPlaceholder: function() {
|
||||
return this._placeholder;
|
||||
},
|
||||
|
||||
textSave: 'Save & Exit',
|
||||
textClose: 'Close',
|
||||
textTitle: 'Spreadsheet Editor'
|
||||
}, Common.Views.ExternalOleEditor || {}));
|
||||
});
|
||||
|
|
|
@ -124,9 +124,10 @@ define([
|
|||
'<div id="header-logo"><i></i></div>' +
|
||||
'</section>';
|
||||
|
||||
var templateTitleBox = '<section id="box-document-title">' +
|
||||
var templateTitleBox = '<section id="box-document-title">' +
|
||||
'<div class="extra"></div>' +
|
||||
'<div class="hedset">' +
|
||||
'<div class="btn-slot" id="slot-btn-dt-home"></div>' +
|
||||
'<div class="btn-slot" id="slot-btn-dt-save" data-layout-name="header-save"></div>' +
|
||||
'<div class="btn-slot" id="slot-btn-dt-print"></div>' +
|
||||
'<div class="btn-slot" id="slot-btn-dt-print-quick"></div>' +
|
||||
|
|
|
@ -207,6 +207,7 @@ define([
|
|||
type: 'password',
|
||||
showCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' btn-sheet-view',
|
||||
hideCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' hide-password',
|
||||
maxLength: this.options.maxPasswordLength,
|
||||
validateOnBlur: false,
|
||||
showPwdOnClick: true,
|
||||
validation : function(value) {
|
||||
|
|
|
@ -101,7 +101,10 @@ define([
|
|||
this.checkedIndex = i;
|
||||
}
|
||||
}
|
||||
(this.checkedIndex>=0) && this.radio[this.checkedIndex].setValue(true);
|
||||
if (this.checkedIndex>=0) {
|
||||
this.radio[this.checkedIndex].setValue(true);
|
||||
this.currentCell = this.radio[this.checkedIndex].options.value;
|
||||
}
|
||||
}
|
||||
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
|
||||
},
|
||||
|
|
|
@ -154,6 +154,8 @@ define([
|
|||
|
||||
this.$window.css('left',(maxWidth - width - borders_width) / 2);
|
||||
this.$window.css('top',(maxHeight - height - this._headerFooterHeight) / 2);
|
||||
|
||||
this._restoreHeight = this._restoreWidth = undefined;
|
||||
},
|
||||
|
||||
onWindowResize: function() {
|
||||
|
@ -162,26 +164,38 @@ define([
|
|||
win_width = this.getWidth(),
|
||||
win_height = this.getHeight(),
|
||||
bordersOffset = (this.resizable) ? 0 : this.bordersOffset;
|
||||
if (win_height<main_height-bordersOffset*2+0.1 && win_width<main_width-bordersOffset*2+0.1) {
|
||||
var left = this.getLeft(),
|
||||
top = this.getTop();
|
||||
|
||||
if (win_height<main_height-bordersOffset*2+0.1 ) {
|
||||
if (!this.resizable && this._restoreHeight>0 && win_height < this._restoreHeight) {
|
||||
var height = Math.max(Math.min(this._restoreHeight, main_height-bordersOffset*2), this.initConfig.minheight);
|
||||
this.setHeight(height);
|
||||
this.boxEl.css('height', height - this._headerFooterHeight);
|
||||
}
|
||||
var top = this.getTop();
|
||||
if (top<bordersOffset) this.$window.css('top', bordersOffset);
|
||||
else if (top+win_height>main_height-bordersOffset)
|
||||
this.$window.css('top', main_height-bordersOffset - win_height);
|
||||
} else {
|
||||
if (this._restoreHeight===undefined) {
|
||||
this._restoreHeight = win_height;
|
||||
}
|
||||
this.setHeight(Math.max(main_height-bordersOffset*2, this.initConfig.minheight));
|
||||
this.boxEl.css('height', Math.max(main_height-bordersOffset*2, this.initConfig.minheight) - this._headerFooterHeight);
|
||||
this.$window.css('top', bordersOffset);
|
||||
}
|
||||
if (win_width<main_width-bordersOffset*2+0.1) {
|
||||
if (!this.resizable && this._restoreWidth>0 && win_width < this._restoreWidth) {
|
||||
this.setWidth(Math.max(Math.min(this._restoreWidth, main_width-bordersOffset*2), this.initConfig.minwidth));
|
||||
}
|
||||
var left = this.getLeft();
|
||||
if (left<bordersOffset) this.$window.css('left', bordersOffset);
|
||||
else if (left+win_width>main_width-bordersOffset)
|
||||
this.$window.css('left', main_width-bordersOffset-win_width);
|
||||
} else {
|
||||
if (win_height>main_height-bordersOffset*2) {
|
||||
this.setHeight(Math.max(main_height-bordersOffset*2, this.initConfig.minheight));
|
||||
this.boxEl.css('height', Math.max(main_height-bordersOffset*2, this.initConfig.minheight) - this._headerFooterHeight);
|
||||
this.$window.css('top', bordersOffset);
|
||||
}
|
||||
if (win_width>main_width-bordersOffset*2) {
|
||||
this.setWidth(Math.max(main_width-bordersOffset*2, this.initConfig.minwidth));
|
||||
this.$window.css('left', bordersOffset);
|
||||
if (this._restoreWidth===undefined) {
|
||||
this._restoreWidth = win_width;
|
||||
}
|
||||
this.setWidth(Math.max(main_width-bordersOffset*2, this.initConfig.minwidth));
|
||||
this.$window.css('left', bordersOffset);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -74,14 +74,16 @@ define([
|
|||
_.extend(this, options);
|
||||
this._locked = false;
|
||||
this._state = {
|
||||
DisabledControls: false
|
||||
DisabledControls: false,
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
this.lockedControls = [];
|
||||
Common.UI.BaseView.prototype.initialize.call(this, arguments);
|
||||
|
||||
Common.NotificationCenter.on('app:ready', function (mode) {
|
||||
Common.Utils.asyncCall(this._onAppReady, this, mode);
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
render: function(el) {
|
||||
|
@ -153,6 +155,7 @@ define([
|
|||
if ( !this.storePlugins.isEmpty() ) {
|
||||
var me = this;
|
||||
var _group = $('<div class="group"></div>');
|
||||
var _set = Common.enumLock;
|
||||
this.storePlugins.each(function (model) {
|
||||
if (model.get('visible')) {
|
||||
var modes = model.get('variations'),
|
||||
|
@ -167,6 +170,7 @@ define([
|
|||
split: modes && modes.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -179,6 +183,10 @@ define([
|
|||
me.lockedControls.push(btn);
|
||||
}
|
||||
});
|
||||
var docProtection = me._state.docProtection
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.lockedControls});
|
||||
|
||||
parent.html(_group);
|
||||
$('<div class="separator long"></div>').prependTo(parent);
|
||||
|
@ -204,6 +212,16 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
SetDisabled: function(disable, reviewMode, fillFormMode) {
|
||||
if (reviewMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.previewReviewMode, disable, {array: this.lockedControls});
|
||||
} else if (fillFormMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.viewFormMode, disable, {array: this.lockedControls});
|
||||
} else {
|
||||
Common.Utils.lockControls(Common.enumLock.viewMode, disable, {array: this.lockedControls});
|
||||
}
|
||||
},
|
||||
|
||||
openInsideMode: function(name, url, frameId) {
|
||||
if (!this.pluginsPanel) return false;
|
||||
|
||||
|
@ -289,9 +307,6 @@ define([
|
|||
this.loadMask.hide();
|
||||
},
|
||||
|
||||
_onAppReady: function (mode) {
|
||||
},
|
||||
|
||||
parseIcons: function(icons) {
|
||||
if (icons.length && typeof icons[0] !== 'string') {
|
||||
var theme = Common.UI.Themes.currentThemeId().toLowerCase(),
|
||||
|
@ -389,6 +404,7 @@ define([
|
|||
});
|
||||
});
|
||||
|
||||
var _set = Common.enumLock;
|
||||
var btn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconImg: icon_url,
|
||||
|
@ -397,6 +413,7 @@ define([
|
|||
split: _menu_items.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula ],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
|
|
@ -78,16 +78,26 @@ define([
|
|||
});
|
||||
});
|
||||
|
||||
this.btnPwd.on('click', function (b, e) {
|
||||
!b.pressed && me.fireEvent('protect:password', [b, 'delete']);
|
||||
});
|
||||
this.btnPwd.menu.on('item:click', function (menu, item, e) {
|
||||
me.fireEvent('protect:password', [menu, item.value]);
|
||||
});
|
||||
}
|
||||
|
||||
if (me.appConfig.isSignatureSupport) {
|
||||
if (this.btnSignature.menu)
|
||||
if (this.btnSignature.menu) {
|
||||
this.btnSignature.menu.on('item:click', function (menu, item, e) {
|
||||
me.fireEvent('protect:signature', [item.value, false]);
|
||||
});
|
||||
this.btnSignature.menu.on('show:after', function (menu, e) {
|
||||
if (me._state) {
|
||||
var isProtected = me._state.docProtection ? me._state.docProtection.isReadOnly || me._state.docProtection.isFormsOnly || me._state.docProtection.isCommentsOnly : false;
|
||||
menu.items && menu.items[1].setDisabled(isProtected || me._state.disabled);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.btnsInvisibleSignature.forEach(function(button) {
|
||||
button.on('click', function (b, e) {
|
||||
|
@ -132,6 +142,8 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-protect',
|
||||
caption: this.txtEncrypt,
|
||||
split: true,
|
||||
enableToggle: true,
|
||||
menu: true,
|
||||
visible: false,
|
||||
dataHint : '1',
|
||||
|
@ -172,7 +184,7 @@ define([
|
|||
if ( config.canProtect) {
|
||||
if ( config.isPasswordSupport) {
|
||||
me.btnAddPwd.updateHint(me.hintAddPwd);
|
||||
me.btnPwd.updateHint(me.hintPwd);
|
||||
me.btnPwd.updateHint([me.hintDelPwd, me.hintPwd]);
|
||||
|
||||
me.btnPwd.setMenu(
|
||||
new Common.UI.Menu({
|
||||
|
@ -309,13 +321,14 @@ define([
|
|||
SetDisabled: function (state, canProtect) {
|
||||
this._state.disabled = state;
|
||||
this._state.invisibleSignDisabled = state && !canProtect;
|
||||
var isProtected = this._state.docProtection ? this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly : false;
|
||||
this.btnsInvisibleSignature && this.btnsInvisibleSignature.forEach(function(button) {
|
||||
if ( button ) {
|
||||
button.setDisabled(state && !canProtect);
|
||||
}
|
||||
}, this);
|
||||
if (this.btnSignature && this.btnSignature.menu) {
|
||||
this.btnSignature.menu.items && this.btnSignature.menu.items[1].setDisabled(state); // disable adding signature line
|
||||
this.btnSignature.menu.items && this.btnSignature.menu.items[1].setDisabled(state || isProtected); // disable adding signature line
|
||||
this.btnSignature.setDisabled(state && !canProtect); // disable adding any signature
|
||||
}
|
||||
this.btnsAddPwd.concat(this.btnsDelPwd, this.btnsChangePwd).forEach(function(button) {
|
||||
|
@ -342,6 +355,7 @@ define([
|
|||
}
|
||||
}, this);
|
||||
this.btnPwd.setVisible(hasPassword);
|
||||
this.btnPwd.toggle(hasPassword, true);
|
||||
},
|
||||
|
||||
txtEncrypt: 'Encrypt',
|
||||
|
@ -353,7 +367,8 @@ define([
|
|||
txtDeletePwd: 'Delete password',
|
||||
txtAddPwd: 'Add password',
|
||||
txtInvisibleSignature: 'Add digital signature',
|
||||
txtSignatureLine: 'Add Signature line'
|
||||
txtSignatureLine: 'Add Signature line',
|
||||
hintDelPwd: 'Delete password'
|
||||
}
|
||||
}()), Common.Views.Protection || {}));
|
||||
});
|
|
@ -238,6 +238,10 @@ define([
|
|||
me.fireEvent('comment:resolveComments', [item.value]);
|
||||
});
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', function (e) {
|
||||
me.fireEvent('protect:update');
|
||||
});
|
||||
me.fireEvent('protect:update');
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -259,7 +263,7 @@ define([
|
|||
caption: this.txtAccept,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-save',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -271,7 +275,7 @@ define([
|
|||
caption: this.txtReject,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-deny',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -284,7 +288,7 @@ define([
|
|||
caption: this.txtCompare,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-compare',
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -294,7 +298,7 @@ define([
|
|||
this.btnTurnOn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-review',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
caption: this.txtTurnon,
|
||||
split: !this.appConfig.isReviewOnly,
|
||||
enableToggle: true,
|
||||
|
@ -309,7 +313,7 @@ define([
|
|||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-prev',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtPrev,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -320,7 +324,7 @@ define([
|
|||
this.btnNext = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-next',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtNext,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -336,7 +340,7 @@ define([
|
|||
this.btnReviewView = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-reviewview',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtView,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -404,7 +408,7 @@ define([
|
|||
this.btnCoAuthMode = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-coedit',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView],
|
||||
caption: this.txtCoAuthMode,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -445,12 +449,13 @@ define([
|
|||
}
|
||||
|
||||
if ( this.appConfig.canCoAuthoring && this.appConfig.canComments ) {
|
||||
this.canComments = true; // fix for loading protected document
|
||||
this.btnCommentRemove = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
caption: this.txtCommentRemove,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-rem-comment',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -461,15 +466,13 @@ define([
|
|||
caption: this.txtCommentResolve,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-resolve-all',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
});
|
||||
this.lockedControls.push(this.btnCommentResolve);
|
||||
}
|
||||
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
render: function (el) {
|
||||
|
@ -658,7 +661,7 @@ define([
|
|||
}
|
||||
|
||||
var separator_sharing = !(me.btnSharing || me.btnCoAuthMode) ? me.$el.find('.separator.sharing') : '.separator.sharing',
|
||||
separator_comments = !(config.canComments && config.canCoAuthoring) ? me.$el.find('.separator.comments') : '.separator.comments',
|
||||
separator_comments = !(me.btnCommentRemove || me.btnCommentResolve) ? me.$el.find('.separator.comments') : '.separator.comments',
|
||||
separator_review = !(config.canReview || config.canViewReview) ? me.$el.find('.separator.review') : '.separator.review',
|
||||
separator_compare = !(config.canReview && config.canFeatureComparison) ? me.$el.find('.separator.compare') : '.separator.compare',
|
||||
separator_chat = !me.btnChat ? me.$el.find('.separator.chat') : '.separator.chat',
|
||||
|
@ -692,8 +695,7 @@ define([
|
|||
if (!me.btnHistory && separator_last)
|
||||
me.$el.find(separator_last).hide();
|
||||
|
||||
Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || config.canCoAuthoring && config.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration'));
|
||||
|
||||
Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || me.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration'));
|
||||
setEvents.call(me);
|
||||
});
|
||||
},
|
||||
|
@ -731,7 +733,7 @@ define([
|
|||
var button = new Common.UI.Button({
|
||||
cls : 'btn-toolbar',
|
||||
iconCls : 'toolbar__icon btn-ic-review',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments, Common.enumLock.docLockReview],
|
||||
hintAnchor : 'top',
|
||||
hint : this.tipReview,
|
||||
split : !this.appConfig.isReviewOnly,
|
||||
|
@ -778,7 +780,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-docspell',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetSpelling,
|
||||
enableToggle: true,
|
||||
|
@ -794,7 +796,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-doclang',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetDocLang,
|
||||
dataHint: '0',
|
||||
|
@ -973,6 +975,7 @@ define([
|
|||
this.options.tpl = _.template(this.template)(this.options);
|
||||
this.popoverChanges = this.options.popoverChanges;
|
||||
this.mode = this.options.mode;
|
||||
this.docProtection = this.options.docProtection;
|
||||
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
|
@ -983,6 +986,7 @@ define([
|
|||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
var _set = Common.enumLock;
|
||||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'dlg-btn iconic',
|
||||
iconCls: 'img-commonctrl prev',
|
||||
|
@ -1003,7 +1007,8 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtAccept,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
disabled : this.mode.isReviewOnly || this.docProtection.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuAcceptCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1023,7 +1028,7 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtReject,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuRejectCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1038,6 +1043,13 @@ define([
|
|||
})
|
||||
});
|
||||
this.btnReject.render(this.$window.find('#id-review-button-reject'));
|
||||
var arr = [this.btnAccept, this.btnReject];
|
||||
Common.Utils.lockControls(Common.enumLock.isReviewOnly, this.mode.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, this.docProtection.isReadOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, this.docProtection.isFormsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, this.docProtection.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, this.docProtection.isCommentsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"), {array: arr});
|
||||
|
||||
var me = this;
|
||||
this.btnPrev.on('click', function (e) {
|
||||
|
|
|
@ -173,6 +173,17 @@ define([
|
|||
var text = $(this.el).find('textarea');
|
||||
return (text && text.length) ? text.val().trim() : '';
|
||||
},
|
||||
disableTextBoxButton: function(textboxEl) {
|
||||
var button = $(textboxEl.siblings('#id-comments-change-popover')[0]);
|
||||
|
||||
if(textboxEl.val().trim().length > 0) {
|
||||
button.removeAttr('disabled');
|
||||
button.removeClass('disabled');
|
||||
} else {
|
||||
button.attr('disabled', true);
|
||||
button.addClass('disabled');
|
||||
}
|
||||
},
|
||||
autoHeightTextBox: function () {
|
||||
var view = this,
|
||||
textBox = this.$el.find('textarea'),
|
||||
|
@ -183,6 +194,7 @@ define([
|
|||
oldHeight = 0,
|
||||
newHeight = 0;
|
||||
|
||||
|
||||
function updateTextBoxHeight() {
|
||||
scrollPos = parentView.scroller.getScrollTop();
|
||||
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
|
||||
|
@ -211,13 +223,20 @@ define([
|
|||
parentView.autoScrollToEditButtons();
|
||||
}
|
||||
|
||||
function onTextareaInput(event) {
|
||||
updateTextBoxHeight();
|
||||
view.disableTextBoxButton($(event.target));
|
||||
}
|
||||
|
||||
|
||||
if (textBox && textBox.length && parentView.scroller) {
|
||||
domTextBox = textBox.get(0);
|
||||
|
||||
view.disableTextBoxButton(textBox);
|
||||
if (domTextBox) {
|
||||
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
|
||||
updateTextBoxHeight();
|
||||
textBox.bind('input propertychange', updateTextBoxHeight)
|
||||
textBox.bind('input propertychange', onTextareaInput)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,13 +259,14 @@ define([
|
|||
el: $('#id-comments-popover'),
|
||||
itemTemplate: _.template(replaceWords(commentsTemplate, {
|
||||
textAddReply: me.textAddReply,
|
||||
textMentionReply: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : me.textAddReply,
|
||||
textAdd: me.textAdd,
|
||||
textCancel: me.textCancel,
|
||||
textEdit: me.textEdit,
|
||||
textReply: me.textReply,
|
||||
textClose: me.textClose,
|
||||
maxCommLength: Asc.c_oAscMaxCellOrCommentLength,
|
||||
textMention: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : ''
|
||||
textMentionComment: me.canRequestSendNotify ? (me.mentionShare ? me.textMention : me.textMentionNotify) : me.textEnterComment
|
||||
})
|
||||
)
|
||||
});
|
||||
|
@ -321,7 +341,9 @@ define([
|
|||
|
||||
if (record.get('hint')) {
|
||||
me.fireEvent('comment:disableHint', [record]);
|
||||
return;
|
||||
|
||||
if(!record.get('fullInfoInHint'))
|
||||
return;
|
||||
}
|
||||
|
||||
if (btn.hasClass('btn-edit')) {
|
||||
|
@ -516,8 +538,10 @@ define([
|
|||
},
|
||||
'animate:before': function () {
|
||||
var text = me.$window.find('textarea');
|
||||
if (text && text.length)
|
||||
if (text && text.length){
|
||||
text.focus();
|
||||
me.commentsView.disableTextBoxButton(text);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1292,6 +1316,7 @@ define([
|
|||
textFollowMove : 'Follow Move',
|
||||
textMention : '+mention will provide access to the document and send an email',
|
||||
textMentionNotify : '+mention will notify the user via email',
|
||||
textEnterComment : 'Enter your comment here',
|
||||
textViewResolved : 'You have not permission for reopen comment',
|
||||
txtAccept: 'Accept',
|
||||
txtReject: 'Reject',
|
||||
|
|
|
@ -176,6 +176,13 @@ define([
|
|||
this.$resultsContainer = $('#search-results');
|
||||
this.$resultsContainer.hide();
|
||||
|
||||
this.$searchContainer = $('#search-container');
|
||||
this.$searchContainer.scroller = new Common.UI.Scroller({
|
||||
el : $('#search-container'),
|
||||
useKeyboard : true,
|
||||
minScrollbarLength: 40
|
||||
});
|
||||
|
||||
Common.NotificationCenter.on('search:updateresults', _.bind(this.disableNavButtons, this));
|
||||
if (window.SSE) {
|
||||
this.cmbWithin = new Common.UI.ComboBox({
|
||||
|
@ -327,10 +334,23 @@ define([
|
|||
ChangeSettings: function(props) {
|
||||
},
|
||||
|
||||
updateScrollers: function () {
|
||||
this.$resultsContainer.scroller.update({alwaysVisibleY: true});
|
||||
this.$searchContainer.scroller.update({alwaysVisibleY: true});
|
||||
|
||||
setTimeout(_.bind(function () {
|
||||
if (this.$searchContainer.find('> .ps-scrollbar-y-rail').is(':visible')) {
|
||||
this.$resultsContainer.find('.ps-scrollbar-y-rail').addClass('set-left');
|
||||
} else {
|
||||
this.$resultsContainer.find('.ps-scrollbar-y-rail').removeClass('set-left');
|
||||
}
|
||||
}, this), 100);
|
||||
},
|
||||
|
||||
updateResultsContainerHeight: function () {
|
||||
if (this.$resultsContainer) {
|
||||
this.$resultsContainer.outerHeight($('#search-box').outerHeight() - $('#search-header').outerHeight() - $('#search-adv-settings').outerHeight());
|
||||
this.$resultsContainer.scroller.update({alwaysVisibleY: true});
|
||||
this.$resultsContainer.outerHeight(Math.max($('#search-box').outerHeight() - $('#search-header').outerHeight() - $('#search-adv-settings').outerHeight(), 112));
|
||||
this.updateScrollers();
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -63,10 +63,7 @@ define([
|
|||
}, options || {});
|
||||
|
||||
this.template = [
|
||||
'<div class="box" style="height: 260px;">',
|
||||
'<div class="input-row">',
|
||||
'<label>' + this.textInfo + '</label>',
|
||||
'</div>',
|
||||
'<div class="box" style="height: 250px;">',
|
||||
'<div class="input-row">',
|
||||
'<label>' + this.textInfoName + '</label>',
|
||||
'</div>',
|
||||
|
@ -82,7 +79,7 @@ define([
|
|||
'<div class="input-row">',
|
||||
'<label>' + this.textInstructions + '</label>',
|
||||
'</div>',
|
||||
'<textarea id="id-dlg-sign-settings-instructions" class="form-control" style="width: 100%;height: 35px;margin-bottom: 10px;resize: none;"></textarea>',
|
||||
'<div id="id-dlg-sign-settings-instructions">',
|
||||
'<div id="id-dlg-sign-settings-date"></div>',
|
||||
'</div>',
|
||||
'<div class="footer center">',
|
||||
|
@ -124,19 +121,18 @@ define([
|
|||
disabled : this.type=='view'
|
||||
});
|
||||
|
||||
me.textareaInstructions = this.$window.find('textarea');
|
||||
me.textareaInstructions.keydown(function (event) {
|
||||
if (event.keyCode == Common.UI.Keys.RETURN) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
me.textareaInstructions = new Common.UI.TextareaField({
|
||||
el : $window.find('#id-dlg-sign-settings-instructions'),
|
||||
style : 'width: 100%; height: 35px;margin-bottom: 10px;',
|
||||
value : this.textDefInstruction,
|
||||
disabled : this.type=='view'
|
||||
});
|
||||
(this.type=='view') ? this.textareaInstructions.attr('disabled', 'disabled') : this.textareaInstructions.removeAttr('disabled');
|
||||
this.textareaInstructions.toggleClass('disabled', this.type=='view');
|
||||
|
||||
this.chDate = new Common.UI.CheckBox({
|
||||
el: $('#id-dlg-sign-settings-date'),
|
||||
labelText: this.textShowDate,
|
||||
disabled: this.type=='view'
|
||||
disabled: this.type=='view',
|
||||
value: 'checked'
|
||||
});
|
||||
|
||||
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
|
||||
|
@ -161,7 +157,7 @@ define([
|
|||
value = props.asc_getEmail();
|
||||
me.inputEmail.setValue(value ? value : '');
|
||||
value = props.asc_getInstructions();
|
||||
me.textareaInstructions.val(value ? value : '');
|
||||
me.textareaInstructions.setValue(value ? value : '');
|
||||
me.chDate.setValue(props.asc_getShowDate());
|
||||
|
||||
me._currentGuid = props.asc_getGuid();
|
||||
|
@ -175,7 +171,7 @@ define([
|
|||
props.asc_setSigner1(me.inputName.getValue());
|
||||
props.asc_setSigner2(me.inputTitle.getValue());
|
||||
props.asc_setEmail(me.inputEmail.getValue());
|
||||
props.asc_setInstructions(me.textareaInstructions.val());
|
||||
props.asc_setInstructions(me.textareaInstructions.getValue());
|
||||
props.asc_setShowDate(me.chDate.getValue()=='checked');
|
||||
(me._currentGuid!==undefined) && props.asc_setGuid(me._currentGuid);
|
||||
|
||||
|
@ -198,13 +194,14 @@ define([
|
|||
},
|
||||
|
||||
textInfo: 'Signer Info',
|
||||
textInfoName: 'Name',
|
||||
textInfoTitle: 'Signer Title',
|
||||
textInfoEmail: 'E-mail',
|
||||
textInstructions: 'Instructions for Signer',
|
||||
textInfoName: 'Suggested signer',
|
||||
textInfoTitle: 'Suggested signer\'s title',
|
||||
textInfoEmail: 'Suggested signer\'s e-mail',
|
||||
textInstructions: 'Instructions for signer',
|
||||
txtEmpty: 'This field is required',
|
||||
textAllowComment: 'Allow signer to add comment in the signature dialog',
|
||||
textShowDate: 'Show sign date in signature line',
|
||||
textTitle: 'Signature Setup'
|
||||
textTitle: 'Signature Setup',
|
||||
textDefInstruction: 'Before signing this document, verify that the content you are signing is correct.'
|
||||
}, Common.Views.SignSettingsDialog || {}))
|
||||
});
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 5.4 KiB |
|
@ -1,5 +1,4 @@
|
|||
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
|
||||
<symbol id="svg-format-djvu">
|
||||
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#BC8C18"/>
|
||||
<path opacity="0.2" d="M95 23H80C79.2044 23 78.4413 22.6839 77.8787 22.1213C77.3161 21.5587 77 20.7956 77 20V5L95 23Z" fill="black"/>
|
||||
<path d="M44.5845 109.635C44.5845 111.045 44.1821 112.125 43.3774 112.875C42.5767 113.625 41.4185 114 39.9028 114H37.4771V105.434H40.1665C41.5649 105.434 42.6509 105.803 43.4243 106.541C44.1978 107.279 44.5845 108.311 44.5845 109.635ZM42.6978 109.682C42.6978 107.842 41.8853 106.922 40.2603 106.922H39.2935V112.5H40.0728C41.8228 112.5 42.6978 111.561 42.6978 109.682ZM45.6919 116.883C45.2349 116.883 44.8423 116.834 44.5142 116.736V115.33C44.7876 115.404 45.0669 115.441 45.3521 115.441C45.6528 115.441 45.8716 115.357 46.0083 115.189C46.1489 115.021 46.2192 114.773 46.2192 114.445V107.449H48.0063V114.709C48.0063 115.404 47.8052 115.939 47.4028 116.314C47.0005 116.693 46.4302 116.883 45.6919 116.883ZM46.1431 105.756C46.1431 105.174 46.4673 104.883 47.1157 104.883C47.7642 104.883 48.0884 105.174 48.0884 105.756C48.0884 106.033 48.0063 106.25 47.8423 106.406C47.6821 106.559 47.4399 106.635 47.1157 106.635C46.4673 106.635 46.1431 106.342 46.1431 105.756ZM54.9146 105.434H56.7485L53.8364 114H51.856L48.9497 105.434H50.7837L52.395 110.531C52.4849 110.832 52.5767 111.184 52.6704 111.586C52.7681 111.984 52.8286 112.262 52.8521 112.418C52.895 112.059 53.0415 111.43 53.2915 110.531L54.9146 105.434ZM62.3325 114L62.0923 113.162H61.9985C61.8071 113.467 61.5356 113.703 61.1841 113.871C60.8325 114.035 60.4321 114.117 59.9829 114.117C59.2134 114.117 58.6333 113.912 58.2427 113.502C57.8521 113.088 57.6567 112.494 57.6567 111.721V107.449H59.4438V111.275C59.4438 111.748 59.5278 112.104 59.6958 112.342C59.8638 112.576 60.1313 112.693 60.4985 112.693C60.9985 112.693 61.3599 112.527 61.5825 112.195C61.8052 111.859 61.9165 111.305 61.9165 110.531V107.449H63.7036V114H62.3325Z" fill="white"/>
|
||||
|
@ -14,5 +13,4 @@
|
|||
<rect x="55" y="74" width="19" height="2" fill="white"/>
|
||||
<rect x="55" y="74" width="19" height="2" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M80 43.4348H21V82.5653H80V43.4348ZM19 41.4348V84.5653H82V41.4348H19Z" fill="white"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.1 KiB |
|
@ -1,5 +1,4 @@
|
|||
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
|
||||
<symbol id="svg-format-oxps">
|
||||
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#51968F"/>
|
||||
<circle cx="44.5" cy="62.5" r="2.5" fill="white"/>
|
||||
<circle cx="54.5" cy="62.5" r="2.5" fill="white"/>
|
||||
|
@ -7,5 +6,4 @@
|
|||
<path d="M42.894 109.705C42.894 111.123 42.5425 112.213 41.8394 112.975C41.1362 113.736 40.1284 114.117 38.8159 114.117C37.5034 114.117 36.4956 113.736 35.7925 112.975C35.0894 112.213 34.7378 111.119 34.7378 109.693C34.7378 108.268 35.0894 107.18 35.7925 106.43C36.4995 105.676 37.5112 105.299 38.8276 105.299C40.144 105.299 41.1499 105.678 41.8452 106.436C42.5444 107.193 42.894 108.283 42.894 109.705ZM36.6421 109.705C36.6421 110.662 36.8237 111.383 37.187 111.867C37.5503 112.352 38.0933 112.594 38.8159 112.594C40.2651 112.594 40.9897 111.631 40.9897 109.705C40.9897 107.775 40.269 106.811 38.8276 106.811C38.105 106.811 37.5601 107.055 37.1929 107.543C36.8257 108.027 36.6421 108.748 36.6421 109.705ZM51.5952 114H49.521L47.5288 110.76L45.5366 114H43.5913L46.4331 109.582L43.7729 105.434H45.7769L47.6226 108.516L49.4331 105.434H51.3901L48.7007 109.682L51.5952 114ZM54.4897 109.465H55.0874C55.646 109.465 56.064 109.355 56.3413 109.137C56.6187 108.914 56.7573 108.592 56.7573 108.17C56.7573 107.744 56.6401 107.43 56.4058 107.227C56.1753 107.023 55.812 106.922 55.3159 106.922H54.4897V109.465ZM58.5913 108.105C58.5913 109.027 58.3022 109.732 57.7241 110.221C57.1499 110.709 56.3315 110.953 55.269 110.953H54.4897V114H52.6733V105.434H55.4097C56.4487 105.434 57.2378 105.658 57.7769 106.107C58.3198 106.553 58.5913 107.219 58.5913 108.105ZM65.2651 111.621C65.2651 112.395 64.9858 113.004 64.4272 113.449C63.8726 113.895 63.0991 114.117 62.1069 114.117C61.1929 114.117 60.3843 113.945 59.6812 113.602V111.914C60.2593 112.172 60.7476 112.354 61.146 112.459C61.5483 112.564 61.9155 112.617 62.2476 112.617C62.646 112.617 62.9507 112.541 63.1616 112.389C63.3765 112.236 63.4839 112.01 63.4839 111.709C63.4839 111.541 63.437 111.393 63.3433 111.264C63.2495 111.131 63.1108 111.004 62.9272 110.883C62.7476 110.762 62.3784 110.568 61.8198 110.303C61.2964 110.057 60.9038 109.82 60.6421 109.594C60.3804 109.367 60.1714 109.104 60.0151 108.803C59.8589 108.502 59.7808 108.15 59.7808 107.748C59.7808 106.99 60.0366 106.395 60.5483 105.961C61.064 105.527 61.7749 105.311 62.6812 105.311C63.1265 105.311 63.5503 105.363 63.9526 105.469C64.3589 105.574 64.7827 105.723 65.2241 105.914L64.6382 107.326C64.1812 107.139 63.8022 107.008 63.5015 106.934C63.2046 106.859 62.9116 106.822 62.6226 106.822C62.2788 106.822 62.0151 106.902 61.8315 107.062C61.6479 107.223 61.5562 107.432 61.5562 107.689C61.5562 107.85 61.5933 107.99 61.6675 108.111C61.7417 108.229 61.8589 108.344 62.019 108.457C62.1831 108.566 62.5679 108.766 63.1733 109.055C63.9741 109.438 64.5229 109.822 64.8198 110.209C65.1167 110.592 65.2651 111.062 65.2651 111.621Z" fill="white"/>
|
||||
<path d="M62 53V57.8L75.5 62.5L62 67.2V72L80 64.2V60.8L62 53Z" fill="white"/>
|
||||
<path d="M19 64.2L37 72V67.2L23.5 62.5L37 57.8V53L19 60.8V64.2Z" fill="white"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
@ -1,5 +1,4 @@
|
|||
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 127" version="1.1" width="100" height="127">
|
||||
<symbol id="svg-format-xps">
|
||||
<path d="M95 23V119C95 119.796 94.6839 120.559 94.1213 121.121C93.5587 121.684 92.7956 122 92 122H8C7.20435 122 6.44129 121.684 5.87868 121.121C5.31607 120.559 5 119.796 5 119V8C5 7.20435 5.31607 6.44129 5.87868 5.87868C6.44129 5.31607 7.20435 5 8 5H77L95 23Z" fill="#51968F"/>
|
||||
<circle cx="44.5" cy="62.5" r="2.5" fill="white"/>
|
||||
<circle cx="54.5" cy="62.5" r="2.5" fill="white"/>
|
||||
|
@ -7,5 +6,4 @@
|
|||
<path d="M47.3198 114H45.2456L43.2534 110.76L41.2612 114H39.3159L42.1577 109.582L39.4976 105.434H41.5015L43.3472 108.516L45.1577 105.434H47.1147L44.4253 109.682L47.3198 114ZM50.2144 109.465H50.812C51.3706 109.465 51.7886 109.355 52.0659 109.137C52.3433 108.914 52.4819 108.592 52.4819 108.17C52.4819 107.744 52.3647 107.43 52.1304 107.227C51.8999 107.023 51.5366 106.922 51.0405 106.922H50.2144V109.465ZM54.3159 108.105C54.3159 109.027 54.0269 109.732 53.4487 110.221C52.8745 110.709 52.0562 110.953 50.9937 110.953H50.2144V114H48.3979V105.434H51.1343C52.1733 105.434 52.9624 105.658 53.5015 106.107C54.0444 106.553 54.3159 107.219 54.3159 108.105ZM60.9897 111.621C60.9897 112.395 60.7104 113.004 60.1519 113.449C59.5972 113.895 58.8237 114.117 57.8315 114.117C56.9175 114.117 56.1089 113.945 55.4058 113.602V111.914C55.9839 112.172 56.4722 112.354 56.8706 112.459C57.2729 112.564 57.6401 112.617 57.9722 112.617C58.3706 112.617 58.6753 112.541 58.8862 112.389C59.1011 112.236 59.2085 112.01 59.2085 111.709C59.2085 111.541 59.1616 111.393 59.0679 111.264C58.9741 111.131 58.8354 111.004 58.6519 110.883C58.4722 110.762 58.103 110.568 57.5444 110.303C57.021 110.057 56.6284 109.82 56.3667 109.594C56.105 109.367 55.896 109.104 55.7397 108.803C55.5835 108.502 55.5054 108.15 55.5054 107.748C55.5054 106.99 55.7612 106.395 56.2729 105.961C56.7886 105.527 57.4995 105.311 58.4058 105.311C58.8511 105.311 59.2749 105.363 59.6772 105.469C60.0835 105.574 60.5073 105.723 60.9487 105.914L60.3628 107.326C59.9058 107.139 59.5269 107.008 59.2261 106.934C58.9292 106.859 58.6362 106.822 58.3472 106.822C58.0034 106.822 57.7397 106.902 57.5562 107.062C57.3726 107.223 57.2808 107.432 57.2808 107.689C57.2808 107.85 57.3179 107.99 57.3921 108.111C57.4663 108.229 57.5835 108.344 57.7437 108.457C57.9077 108.566 58.2925 108.766 58.8979 109.055C59.6987 109.438 60.2476 109.822 60.5444 110.209C60.8413 110.592 60.9897 111.062 60.9897 111.621Z" fill="white"/>
|
||||
<path d="M62 53V57.8L75.5 62.5L62 67.2V72L80 64.2V60.8L62 53Z" fill="white"/>
|
||||
<path d="M19 64.2L37 72V67.2L23.5 62.5L37 57.8V53L19 60.8V64.2Z" fill="white"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 168 B |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 169 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/big/smart-art.png
Normal file
After Width: | Height: | Size: 431 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/btn-home.png
Normal file
After Width: | Height: | Size: 338 B |
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 135 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 310 B After Width: | Height: | Size: 185 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/btn-rotate-down.png
Normal file
After Width: | Height: | Size: 173 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/btn-rotate-up.png
Normal file
After Width: | Height: | Size: 174 B |
After Width: | Height: | Size: 297 B |
After Width: | Height: | Size: 292 B |
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 204 B |
After Width: | Height: | Size: 166 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/btn-text.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-cycle.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 158 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-list.png
Normal file
After Width: | Height: | Size: 135 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-matrix.png
Normal file
After Width: | Height: | Size: 153 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-process.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
apps/common/main/resources/img/toolbar/1.25x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 189 B |
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 191 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/big/smart-art.png
Normal file
After Width: | Height: | Size: 462 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/btn-home.png
Normal file
After Width: | Height: | Size: 360 B |
Before Width: | Height: | Size: 214 B After Width: | Height: | Size: 141 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 195 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/btn-rotate-down.png
Normal file
After Width: | Height: | Size: 185 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/btn-rotate-up.png
Normal file
After Width: | Height: | Size: 191 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 346 B |
Before Width: | Height: | Size: 296 B After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 164 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/btn-text.png
Normal file
After Width: | Height: | Size: 163 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-cycle.png
Normal file
After Width: | Height: | Size: 400 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-hierarchy.png
Normal file
After Width: | Height: | Size: 168 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-list.png
Normal file
After Width: | Height: | Size: 136 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-matrix.png
Normal file
After Width: | Height: | Size: 166 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-process.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
apps/common/main/resources/img/toolbar/1.5x/smart-pyramid.png
Normal file
After Width: | Height: | Size: 150 B |
After Width: | Height: | Size: 562 B |
After Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 193 B |