Save work.
This commit is contained in:
		
							parent
							
								
									ef2a94980b
								
							
						
					
					
						commit
						98027d17eb
					
				
					 5 changed files with 53 additions and 4 deletions
				
			
		| 
						 | 
					@ -6,8 +6,8 @@
 | 
				
			||||||
    <email>rotter.martinos@gmail.com</email>
 | 
					    <email>rotter.martinos@gmail.com</email>
 | 
				
			||||||
  </author>
 | 
					  </author>
 | 
				
			||||||
  <style/>
 | 
					  <style/>
 | 
				
			||||||
  <markup_wrapper>PCFET0NUWVBFIGh0bWw+CiAgCTxodG1sIGxhbmc9ImVuIj4KCQkgIDxoZWFkPiAgCgkJICAgIDxzdHlsZT4KCQkgICAgICBib2R5IHsKCQkgICAgICAgIG1hcmdpbjogMHB4OwoJCSAgICAgICAgcGFkZGluZzogMHB4OwoJCSAgICAgIH0KCQkgICAgCgkJICAgICAgcHJlIHsKCQkgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkgICAgICB9CgoJCSAgICAgIC5oZWFkZXJ0ZXh0IHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKCQkgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CgkJICAgICAgfQoKCQkgICAgICAuaGVhZGVyIHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTdweDsKCQkgICAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUscmdiYSg5OSwxMzUsMjI5LDEpKSwgY29sb3Itc3RvcCgxMDAlLHJnYmEoNjQsMTA5LDIzNiwxKSkpOwoJCSAgICAgICAgcGFkZGluZzogNnB4OwoJCSAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsKCQkgICAgICAgIGNvbG9yOiB3aGl0ZTsKCQkgICAgICAgIGJvcmRlcjogMC41cHggc29saWQgYmxhY2s7CgkJICAgICAgfQoJCSAgICAgIAoJCSAgICAgIC5idXR0b25zIHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTdweDsKCQkgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlZWVlZWUgMCUsI2NjY2NjYyAxMDAlKTsKCQkgICAgICAgIHBhZGRpbmc6IDZweDsKCQkgICAgICAgIG1hcmdpbjogMHB4IGF1dG87CgkJICAgICAgICBjb2xvcjogYmxhY2s7CgkJICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOwoJCSAgICAgIH0KCgkJICAgICAgLmhlYWRlciBhIHsKCQkgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKCQkgICAgICAgIGNvbG9yOiB3aGl0ZTsKCQkgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLmhlYWRlciAuZW5jbG9zdXJlIHsKCQkgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKCQkgICAgICAgIGNvbG9yOiBibGFjazsKCQkgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLm1hcmstcmVhZCB7CgkJICAgICAgICBjb2xvcjogYmx1ZTsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLm1hcmstdW5yZWFkIHsKCQkgICAgICAgIGNvbG9yOiByZWQ7CgkJICAgICAgfQoJCSAgICAgIAoJCSAgICAgIC5tYXJrLXN0YXJyZWQgewoJCSAgICAgICAgY29sb3I6IGdyZWVuOwoJCSAgICAgIH0KCQkgICAgICAKCQkgICAgICAubWFyay11bnN0YXJyZWQgewoJCSAgICAgICAgY29sb3I6IHdoaXRlOwoJCSAgICAgIH0KCQkgICAgICAKCQkgICAgICAuZW5jbG9zdXJlOmhvdmVyLCAuaGVhZGVyIGE6aG92ZXIgewoJCSAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CgkJICAgICAgfQoKCQkgICAgICAuY29udGVudCB7CgkJICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgZ3JheTsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKCQkgICAgICAgIG1hcmdpbjogMHB4IGF1dG87CgkJICAgICAgICBwYWRkaW5nOiA2cHg7CgkJICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLmNvbnRhaW5lciB7CgkJICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5OwoJCSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CgkJICAgICAgICBtYXJnaW46IDEwcHg7CgkJICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggMTZweCAwcHggcmdiYSg1MCwgNTAsIDUwLCAwLjYyKTsKCQkgICAgICB9CgkJICAgIDwvc3R5bGU+CgoJCSAgICA8dGl0bGU+CgkJICAgICAgJTEKCQkgICAgPC90aXRsZT4KCgkJICAgIDxzY3JpcHQ+CgkJICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgewoJCSAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdoZW4gbWVzc2FnZShzKSBnZXRzIGxvYWRlZC4KCQkgICAgICAgIGFsZXJ0KCJjYyIpOwoJCSAgICAgIH0sIGZhbHNlKTsKCQkgICAgICAKCQkgICAgICBmdW5jdGlvbiBzd2l0Y2hSZWFkU3RhdHVzKGxpbmspIHsKCQkgICAgICAgIGFsZXJ0KCJiYiIpOwoJCSAgICAgIAoJCSAgICAgICAgaWYgKGxpbmsuY2xhc3NOYW1lID09ICJtYXJrLXJlYWQiKSB7CgkJICAgICAgICAgIGxpbmsuY2xhc3NOYW1lID0gIm1hcmstdW5yZWFkIjsKCQkgICAgICAgIH0KCQkgICAgICAgIGVsc2UgewoJCSAgICAgICAgICBsaW5rLmNsYXNzTmFtZSA9ICJtYXJrLXJlYWQiOwoJCSAgICAgICAgfQoJCSAgICAgIH0KCQkgICAgICAKCQkgICAgICBmdW5jdGlvbiBzd2l0Y2hTdGFycmVkU3RhdHVzKGxpbmspIHsKCQkgICAgICAgIGFsZXJ0KCJhYSIpOwoJCSAgICAgIAoJCSAgICAgICAgaWYgKGxpbmsuY2xhc3NOYW1lID09ICJtYXJrLXN0YXJyZWQiKSB7CgkJICAgICAgICAgIGxpbmsuY2xhc3NOYW1lID0gIm1hcmstdW5zdGFycmVkIjsKCQkgICAgICAgIH0KCQkgICAgICAgIGVsc2UgewoJCSAgICAgICAgICBsaW5rLmNsYXNzTmFtZSA9ICJtYXJrLXN0YXJyZWQiOwoJCSAgICAgICAgfQoJCSAgICAgIH0KCQkgICAgPC9zY3JpcHQ+CgkJICA8L2hlYWQ+CgkJICA8Ym9keT4KCQkgICAgJTIKCQkgIDwvYm9keT4KCQk8L2h0bWw+</markup_wrapper>
 | 
					  <markup_wrapper>PCFET0NUWVBFIGh0bWw+CiAgCTxodG1sIGxhbmc9ImVuIj4KCQkgIDxoZWFkPiAgCgkJICAgIDxzdHlsZT4KCQkgICAgICBib2R5IHsKCQkgICAgICAgIG1hcmdpbjogMHB4OwoJCSAgICAgICAgcGFkZGluZzogMHB4OwoJCSAgICAgIH0KCQkgICAgCgkJICAgICAgcHJlIHsKCQkgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkgICAgICB9CgoJCSAgICAgIC5oZWFkZXJ0ZXh0IHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKCQkgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CgkJICAgICAgfQoKCQkgICAgICAuaGVhZGVyIHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTdweDsKCQkgICAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUscmdiYSg5OSwxMzUsMjI5LDEpKSwgY29sb3Itc3RvcCgxMDAlLHJnYmEoNjQsMTA5LDIzNiwxKSkpOwoJCSAgICAgICAgcGFkZGluZzogNnB4OwoJCSAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsKCQkgICAgICAgIGNvbG9yOiB3aGl0ZTsKCQkgICAgICAgIGJvcmRlcjogMC41cHggc29saWQgYmxhY2s7CgkJICAgICAgfQoJCSAgICAgIAoJCSAgICAgIC5idXR0b25zIHsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTdweDsKCQkgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlZWVlZWUgMCUsI2NjY2NjYyAxMDAlKTsKCQkgICAgICAgIHBhZGRpbmc6IDZweDsKCQkgICAgICAgIG1hcmdpbjogMHB4IGF1dG87CgkJICAgICAgICBjb2xvcjogYmxhY2s7CgkJICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOwoJCSAgICAgIH0KCgkJICAgICAgLmhlYWRlciBhIHsKCQkgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKCQkgICAgICAgIGNvbG9yOiB3aGl0ZTsKCQkgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLmhlYWRlciAuZW5jbG9zdXJlIHsKCQkgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKCQkgICAgICAgIGNvbG9yOiBibGFjazsKCQkgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLm1hcmstcmVhZCB7CgkJICAgICAgICBjb2xvcjogYmx1ZTsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLm1hcmstdW5yZWFkIHsKCQkgICAgICAgIGNvbG9yOiByZWQ7CgkJICAgICAgfQoJCSAgICAgIAoJCSAgICAgIC5tYXJrLXN0YXJyZWQgewoJCSAgICAgICAgY29sb3I6IGdyZWVuOwoJCSAgICAgIH0KCQkgICAgICAKCQkgICAgICAubWFyay11bnN0YXJyZWQgewoJCSAgICAgICAgY29sb3I6IHdoaXRlOwoJCSAgICAgIH0KCQkgICAgICAKCQkgICAgICAuZW5jbG9zdXJlOmhvdmVyLCAuaGVhZGVyIGE6aG92ZXIgewoJCSAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CgkJICAgICAgfQoKCQkgICAgICAuY29udGVudCB7CgkJICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgZ3JheTsKCQkgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKCQkgICAgICAgIG1hcmdpbjogMHB4IGF1dG87CgkJICAgICAgICBwYWRkaW5nOiA2cHg7CgkJICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgLmNvbnRhaW5lciB7CgkJICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5OwoJCSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CgkJICAgICAgICBtYXJnaW46IDEwcHg7CgkJICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggMTZweCAwcHggcmdiYSg1MCwgNTAsIDUwLCAwLjYyKTsKCQkgICAgICB9CgkJICAgIDwvc3R5bGU+CgoJCSAgICA8dGl0bGU+CgkJICAgICAgJTEKCQkgICAgPC90aXRsZT4KCgkJICAgIDxzY3JpcHQ+CgkJICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgewoJCSAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdoZW4gbWVzc2FnZShzKSBnZXRzIGxvYWRlZC4KCQkgICAgICB9LCBmYWxzZSk7CgkJICAgICAgCgkJICAgICAgZnVuY3Rpb24gc3dpdGNoUmVhZFN0YXR1cyhsaW5rKSB7CSAgICAgIAoJCSAgICAgICAgaWYgKGxpbmsuY2xhc3NOYW1lID09ICJtYXJrLXJlYWQiKSB7CgkJICAgICAgICAgIGxpbmsuY2xhc3NOYW1lID0gIm1hcmstdW5yZWFkIjsKCQkgICAgICAgICAgYWxlcnQobGluay5nZXRBdHRyaWJ1dGUoIm1lc3NhZ2VfaWQiKSArICItIiArICJyZWFkIik7CgkJICAgICAgICB9CgkJICAgICAgICBlbHNlIHsKCQkgICAgICAgICAgbGluay5jbGFzc05hbWUgPSAibWFyay1yZWFkIjsKCQkgICAgICAgICAgYWxlcnQobGluay5nZXRBdHRyaWJ1dGUoIm1lc3NhZ2VfaWQiKSArICItIiArICJ1bnJlYWQiKTsKCQkgICAgICAgIH0KCQkgICAgICB9CgkJICAgICAgCgkJICAgICAgZnVuY3Rpb24gc3dpdGNoU3RhcnJlZFN0YXR1cyhsaW5rKSB7CgkJICAgICAgICBpZiAobGluay5jbGFzc05hbWUgPT0gIm1hcmstc3RhcnJlZCIpIHsKCQkgICAgICAgICAgbGluay5jbGFzc05hbWUgPSAibWFyay11bnN0YXJyZWQiOwoJCSAgICAgICAgICBhbGVydChsaW5rLmdldEF0dHJpYnV0ZSgibWVzc2FnZV9pZCIpICsgIi0iICsgInN0YXJyZWQiKTsKCQkgICAgICAgIH0KCQkgICAgICAgIGVsc2UgewoJCSAgICAgICAgICBsaW5rLmNsYXNzTmFtZSA9ICJtYXJrLXN0YXJyZWQiOwoJCSAgICAgICAgICBhbGVydChsaW5rLmdldEF0dHJpYnV0ZSgibWVzc2FnZV9pZCIpICsgIi0iICsgInVuc3RhcnJlZCIpOwoJCSAgICAgICAgfQoJCSAgICAgIH0KCQkgICAgPC9zY3JpcHQ+CgkJICA8L2hlYWQ+CgkJICA8Ym9keT4KCQkgICAgJTIKCQkgIDwvYm9keT4KCQk8L2h0bWw+</markup_wrapper>
 | 
				
			||||||
  <markup>PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJ0ZXh0Ij4KICAgICAgICAgICUxCiAgICAgICAgPC9kaXY+CiAgICAgICAgJTIgKCU1KQogICAgICAgIDxiciAvPgogICAgICAgIDxhIGhyZWY9IiUzIj4lMzwvYT4KICAgICAgICAlNgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CiAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iJTciIG9uY2xpY2s9InN3aXRjaFJlYWRTdGF0dXModGhpcyk7IHJldHVybiBmYWxzZTsiPm1hcmsgcmVhZDwvYT4KICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSIlOCIgb25jbGljaz0ic3dpdGNoU3RhcnJlZFN0YXR1cyh0aGlzKTsgcmV0dXJuIGZhbHNlOyI+bWFyayBpbXBvcnRhbnQ8L2E+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAlNCAKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=</markup>
 | 
					  <markup>PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJ0ZXh0Ij4KICAgICAgICAgICUxCiAgICAgICAgPC9kaXY+CiAgICAgICAgJTIgKCU1KQogICAgICAgIDxiciAvPgogICAgICAgIDxhIGhyZWY9IiUzIj4lMzwvYT4KICAgICAgICAlNgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CiAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iJTciIG1lc3NhZ2VfaWQ9IiU5IiBvbmNsaWNrPSJzd2l0Y2hSZWFkU3RhdHVzKHRoaXMpOyByZXR1cm4gZmFsc2U7Ij5tYXJrIHJlYWQ8L2E+CiAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iJTgiIG1lc3NhZ2VfaWQ9IiU5IiBvbmNsaWNrPSJzd2l0Y2hTdGFycmVkU3RhdHVzKHRoaXMpOyByZXR1cm4gZmFsc2U7Ij5tYXJrIGltcG9ydGFudDwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgICU0IAogICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==</markup>
 | 
				
			||||||
  <markup_enclosure>PGEgY2xhc3M9ImVuY2xvc3VyZSIgaHJlZj0iJTMiPiUzPC9hPg==</markup_enclosure>
 | 
					  <markup_enclosure>PGEgY2xhc3M9ImVuY2xvc3VyZSIgaHJlZj0iJTMiPiUzPC9hPg==</markup_enclosure>
 | 
				
			||||||
  <data>UVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOiFhZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOmFkam9pbnMtaXRlbSB7DQogIGJvcmRlci1pbWFnZTogdXJsKHFzcy9kdW1teS5wbmcpIDA7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOiFoYXMtY2hpbGRyZW46IWhhcy1zaWJsaW5nczphZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3M6Y2xvc2VkLA0KUVRyZWVWaWV3OjpicmFuY2g6Y2xvc2VkOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtY2xvc2VkLnBuZyk7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOm9wZW46aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3MsDQpRVHJlZVZpZXc6OmJyYW5jaDpvcGVuOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtb3Blbi5wbmcpOw0KfQ0KDQpRVHJlZVZpZXc6Oml0ZW0gew0KICBwYWRkaW5nOiAxcHggMXB4IDFweCAxcHg7DQp9IA0KDQpRVHJlZVZpZXdbaGlkZVRyZWU9InRydWUiXTo6YnJhbmNoOiFoYXMtY2hsaWRyZW46aGFzU2libGluZ3Mgew0KICBib3JkZXItaW1hZ2U6IG5vbmU7DQogIGltYWdlOiBub25lOw0KfQ0KDQpRU3RhdHVzQmFyOjppdGVtIHsNCiAgYm9yZGVyOiBub25lOw0KfQ==</data>
 | 
					  <data>UVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOiFhZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOmFkam9pbnMtaXRlbSB7DQogIGJvcmRlci1pbWFnZTogdXJsKHFzcy9kdW1teS5wbmcpIDA7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOiFoYXMtY2hpbGRyZW46IWhhcy1zaWJsaW5nczphZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3M6Y2xvc2VkLA0KUVRyZWVWaWV3OjpicmFuY2g6Y2xvc2VkOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtY2xvc2VkLnBuZyk7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOm9wZW46aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3MsDQpRVHJlZVZpZXc6OmJyYW5jaDpvcGVuOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtb3Blbi5wbmcpOw0KfQ0KDQpRVHJlZVZpZXc6Oml0ZW0gew0KICBwYWRkaW5nOiAxcHggMXB4IDFweCAxcHg7DQp9IA0KDQpRVHJlZVZpZXdbaGlkZVRyZWU9InRydWUiXTo6YnJhbmNoOiFoYXMtY2hsaWRyZW46aGFzU2libGluZ3Mgew0KICBib3JkZXItaW1hZ2U6IG5vbmU7DQogIGltYWdlOiBub25lOw0KfQ0KDQpRU3RhdHVzQmFyOjppdGVtIHsNCiAgYm9yZGVyOiBub25lOw0KfQ==</data>
 | 
				
			||||||
</skin>
 | 
					</skin>
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define INTERNAL_URL_MESSAGE                  "rssguard:message"
 | 
					#define INTERNAL_URL_MESSAGE                  "rssguard:message"
 | 
				
			||||||
#define INTERNAL_URL_BLANK                    "rssguard:blank"
 | 
					#define INTERNAL_URL_BLANK                    "rssguard:blank"
 | 
				
			||||||
 | 
					#define INTERNAL_URL_HOST                     "rssguard"
 | 
				
			||||||
 | 
					#define INTERNAL_URL_MESSAGE_PORT             "message"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FEED_INITIAL_OPML_PATTERN             "feeds-%1.opml"
 | 
					#define FEED_INITIAL_OPML_PATTERN             "feeds-%1.opml"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,8 @@ void MessageBrowser::loadMessages(const QList<Message> &messages) {
 | 
				
			||||||
                                                     message.m_created.toString(Qt::DefaultLocaleShortDate),
 | 
					                                                     message.m_created.toString(Qt::DefaultLocaleShortDate),
 | 
				
			||||||
                                                     enclosures,
 | 
					                                                     enclosures,
 | 
				
			||||||
                                                     message.m_isRead ? "mark-unread" : "mark-read",
 | 
					                                                     message.m_isRead ? "mark-unread" : "mark-read",
 | 
				
			||||||
                                                     message.m_isImportant ? "mark-unstarred" : "mark-starred"));
 | 
					                                                     message.m_isImportant ? "mark-unstarred" : "mark-starred",
 | 
				
			||||||
 | 
					                                                     QString::number(message.m_id)));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  QString layout_wrapper = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"),
 | 
					  QString layout_wrapper = skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,13 +17,47 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "network-web/messagebrowserpage.h"
 | 
					#include "network-web/messagebrowserpage.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "definitions/definitions.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QStringList>
 | 
				
			||||||
 | 
					#include <QString>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MessageBrowserPage::MessageBrowserPage(QObject *parent) : QWebEnginePage(parent) {
 | 
					MessageBrowserPage::MessageBrowserPage(QObject *parent) : QWebEnginePage(parent) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MessageBrowserPage::javaScriptAlert(const QUrl &securityOrigin, const QString &msg) {
 | 
					void MessageBrowserPage::javaScriptAlert(const QUrl &securityOrigin, const QString &msg) {
 | 
				
			||||||
 | 
					  if (securityOrigin.isEmpty()) {
 | 
				
			||||||
 | 
					    QStringList parts = msg.split(QL1C('-'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (parts.size() == 2) {
 | 
				
			||||||
 | 
					      int message_id = parts.at(0).toInt();
 | 
				
			||||||
 | 
					      QString action = parts.at(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (action == QSL("read")) {
 | 
				
			||||||
 | 
					        emit messageStatusChangeRequested(message_id, MarkRead);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (action == QSL("unread")) {
 | 
				
			||||||
 | 
					        emit messageStatusChangeRequested(message_id, MarkUnread);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (action == QSL("starred")) {
 | 
				
			||||||
 | 
					        emit messageStatusChangeRequested(message_id, MarkStarred);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else if (action == QSL("unstarred")) {
 | 
				
			||||||
 | 
					        emit messageStatusChangeRequested(message_id, MarkUnstarred);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else {
 | 
				
			||||||
        QWebEnginePage::javaScriptAlert(securityOrigin, msg);
 | 
					        QWebEnginePage::javaScriptAlert(securityOrigin, msg);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					      QWebEnginePage::javaScriptAlert(securityOrigin, msg);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else {
 | 
				
			||||||
 | 
					    QWebEnginePage::javaScriptAlert(securityOrigin, msg);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool MessageBrowserPage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) {
 | 
					bool MessageBrowserPage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,12 +22,24 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MessageBrowserPage : public QWebEnginePage {
 | 
					class MessageBrowserPage : public QWebEnginePage {
 | 
				
			||||||
 | 
					    Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
 | 
					    enum MessageStatusChange {
 | 
				
			||||||
 | 
					      MarkRead,
 | 
				
			||||||
 | 
					      MarkUnread,
 | 
				
			||||||
 | 
					      MarkStarred,
 | 
				
			||||||
 | 
					      MarkUnstarred
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    explicit MessageBrowserPage(QObject *parent = 0);
 | 
					    explicit MessageBrowserPage(QObject *parent = 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    void javaScriptAlert(const QUrl &securityOrigin, const QString &msg);
 | 
					    void javaScriptAlert(const QUrl &securityOrigin, const QString &msg);
 | 
				
			||||||
    bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame);
 | 
					    bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  signals:
 | 
				
			||||||
 | 
					    void messageStatusChangeRequested(int message_id, MessageBrowserPage::MessageStatusChange change);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // MESSAGEBROWSERPAGE_H
 | 
					#endif // MESSAGEBROWSERPAGE_H
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue