Compare commits
	
		
			599 commits
		
	
	
		
			master
			...
			fix/bug-60
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							
							
								 | 
						b5992ac29b | ||
| 
							
							
								 | 
						7fc21ceb52 | ||
| 
							
							
								 | 
						c2d4f8af02 | ||
| 
							
							
								 | 
						ea53ab8db5 | ||
| 
							
							
								 | 
						e88f1dfa8a | ||
| 
							
							
								 | 
						6b2159c18c | ||
| 
							
							
								 | 
						9e35ee62d1 | ||
| 
							
							
								 | 
						d2b89c0737 | ||
| 
							
							
								 | 
						d9ef7a349f | ||
| 
							
							
								 | 
						a1a2aa919f | ||
| 
							
							
								 | 
						e1160f8f00 | ||
| 
							
							
								 | 
						ff9b30e6ff | ||
| 
							
							
								 | 
						700573125d | ||
| 
							
							
								 | 
						806d8d47ae | ||
| 
							
							
								 | 
						653f3860c4 | ||
| 
							
							
								 | 
						22ec672082 | ||
| 
							
							
								 | 
						779b03d68a | ||
| 
							
							
								 | 
						a9bfaffdbe | ||
| 
							
							
								 | 
						7fe739605d | ||
| 
							
							
								 | 
						80be5eaede | ||
| 
							
							
								 | 
						f273539483 | ||
| 
							
							
								 | 
						ba32c0ab2a | ||
| 
							
							
								 | 
						fdfc6ddd2c | ||
| 
							
							
								 | 
						edd892e3cb | ||
| 
							
							
								 | 
						e7ba2e0180 | ||
| 
							
							
								 | 
						1e3b64f0e3 | ||
| 
							
							
								 | 
						efa7c5e0f7 | ||
| 
							
							
								 | 
						20a949da7e | ||
| 
							
							
								 | 
						9815364c8f | ||
| 
							
							
								 | 
						106eb52ae3 | ||
| 
							
							
								 | 
						b6971521c4 | ||
| 
							
							
								 | 
						fad08ff7e7 | ||
| 
							
							
								 | 
						40c7b24504 | ||
| 
							
							
								 | 
						92052e645a | ||
| 
							
							
								 | 
						9f21320d78 | ||
| 
							
							
								 | 
						3d24b01699 | ||
| 
							
							
								 | 
						af3f02b637 | ||
| 
							
							
								 | 
						78f7070faf | ||
| 
							
							
								 | 
						e8f356160d | ||
| 
							
							
								 | 
						7da772f609 | ||
| 
							
							
								 | 
						78bb545956 | ||
| 
							
							
								 | 
						728d142420 | ||
| 
							
							
								 | 
						1be5ed94e7 | ||
| 
							
							
								 | 
						e749085682 | ||
| 
							
							
								 | 
						51f0bfa089 | ||
| 
							
							
								 | 
						3074476533 | ||
| 
							
							
								 | 
						74e246e032 | ||
| 
							
							
								 | 
						3422e014d1 | ||
| 
							
							
								 | 
						228497c1d5 | ||
| 
							
							
								 | 
						ca5738bd99 | ||
| 
							
							
								 | 
						fce2e4fdc4 | ||
| 
							
							
								 | 
						7878e05c0d | ||
| 
							
							
								 | 
						5b587c1c13 | ||
| 
							
							
								 | 
						2a94c622d4 | ||
| 
							
							
								 | 
						d8e3a7be30 | ||
| 
							
							
								 | 
						dc91792801 | ||
| 
							
							
								 | 
						1d03ef54ee | ||
| 
							
							
								 | 
						1102a2f762 | ||
| 
							
							
								 | 
						02be3055da | ||
| 
							
							
								 | 
						95a4d207bc | ||
| 
							
							
								 | 
						f1adaca4b7 | ||
| 
							
							
								 | 
						99e1c4afa1 | ||
| 
							
							
								 | 
						0ceacd4e04 | ||
| 
							
							
								 | 
						87b75d5ce4 | ||
| 
							
							
								 | 
						57de4cd1e9 | ||
| 
							
							
								 | 
						dac85d6d0e | ||
| 
							
							
								 | 
						07390eb428 | ||
| 
							
							
								 | 
						f39be5e139 | ||
| 
							
							
								 | 
						17f250ef93 | ||
| 
							
							
								 | 
						81973b1ab1 | ||
| 
							
							
								 | 
						5055043c0b | ||
| 
							
							
								 | 
						55736a9cc6 | ||
| 
							
							
								 | 
						1b7df720a0 | ||
| 
							
							
								 | 
						afb4257942 | ||
| 
							
							
								 | 
						7a11ecd7d7 | ||
| 
							
							
								 | 
						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 | ||
| 
							
							
								 | 
						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 | ||
| 
							
							
								 | 
						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 | ||
| 
							
							
								 | 
						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 | ||
| 
							
							
								 | 
						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 | ||
| 
							
							
								 | 
						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' });
 | 
			
		||||
            },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -589,6 +589,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'
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -407,8 +407,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 +418,8 @@ define([
 | 
			
		|||
                        if (!itemCandidate) {
 | 
			
		||||
                            itemCandidate = item;
 | 
			
		||||
                            idxCandidate = i;
 | 
			
		||||
                            if(!isFirstCharsEqual) 
 | 
			
		||||
                                break;  
 | 
			
		||||
                        }
 | 
			
		||||
                        if (this._search.full && i==index || i>index) {
 | 
			
		||||
                            itemCandidate = item;
 | 
			
		||||
| 
						 | 
				
			
			@ -707,8 +710,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,6 +211,8 @@ 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;
 | 
			
		||||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
| 
						 | 
				
			
			@ -266,6 +289,45 @@ define([
 | 
			
		|||
                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;
 | 
			
		||||
| 
						 | 
				
			
			@ -1051,8 +1054,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 +1065,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);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			@ -91,14 +92,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)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -292,7 +291,41 @@ define([
 | 
			
		|||
 | 
			
		||||
                        titlebuttons = {};
 | 
			
		||||
                        if ( mode.isEdit ) {
 | 
			
		||||
                            const header = webapp.getController('Viewport').getView('Common.Views.Header');
 | 
			
		||||
                            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};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -333,7 +366,8 @@ define([
 | 
			
		|||
                        }
 | 
			
		||||
 | 
			
		||||
                        if ( native.features.singlewindow !== undefined ) {
 | 
			
		||||
                            $('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show']();
 | 
			
		||||
                            // $('#box-document-title .hedset')[native.features.singlewindow ? 'hide' : 'show']();
 | 
			
		||||
                            !!titlebuttons.home && titlebuttons.home.btn.setVisible(native.features.singlewindow);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			@ -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 || {}));
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,37 @@ 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.canReview) {
 | 
			
		||||
                    if (props.isReviewOnly) {
 | 
			
		||||
                        this.onTurnPreview(true);
 | 
			
		||||
                        this.onApiShowChange();
 | 
			
		||||
                    } else if (this._state.prevReviewProtected) {
 | 
			
		||||
                        this.onTurnPreview(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");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,6 +78,9 @@ 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]);
 | 
			
		||||
                });
 | 
			
		||||
| 
						 | 
				
			
			@ -132,6 +135,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 +177,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({
 | 
			
		||||
| 
						 | 
				
			
			@ -342,6 +347,7 @@ define([
 | 
			
		|||
                    }
 | 
			
		||||
                }, this);
 | 
			
		||||
                this.btnPwd.setVisible(hasPassword);
 | 
			
		||||
                this.btnPwd.toggle(hasPassword, true);
 | 
			
		||||
            },
 | 
			
		||||
 | 
			
		||||
            txtEncrypt: 'Encrypt',
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +359,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>',
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +122,7 @@ define([
 | 
			
		|||
            });
 | 
			
		||||
 | 
			
		||||
            me.textareaInstructions = this.$window.find('textarea');
 | 
			
		||||
            me.textareaInstructions.val(this.textDefInstruction);
 | 
			
		||||
            me.textareaInstructions.keydown(function (event) {
 | 
			
		||||
                if (event.keyCode == Common.UI.Keys.RETURN) {
 | 
			
		||||
                    event.stopPropagation();
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +134,8 @@ define([
 | 
			
		|||
            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));
 | 
			
		||||
| 
						 | 
				
			
			@ -198,13 +197,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  | 
							
								
								
									
										
											BIN
										
									
								
								apps/common/main/resources/img/toolbar/1.75x/big/smart-art.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 548 B  | 
							
								
								
									
										
											BIN
										
									
								
								apps/common/main/resources/img/toolbar/1.75x/btn-home.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 417 B  | 
| 
		 Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 139 B  |