Compare commits
704 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f99a0460c | |||
| d857400988 | |||
| 6731496f7a | |||
| 8eafab3f03 | |||
| b1202bc9af | |||
| d4baad799e | |||
| 514f188f4a | |||
| edaa4a4b32 | |||
| 350d0dbf64 | |||
| 7f3fb5a84d | |||
| 066e324710 | |||
| 406378f7d1 | |||
| 88803ec438 | |||
| 28aa4814dc | |||
| 5ff7d77a90 | |||
| 4cc569d048 | |||
| 810f469879 | |||
| eb32de261f | |||
| cee9453757 | |||
| fa0296a65c | |||
| 26de2d6fcf | |||
| 2842bffeaa | |||
| 1f6d485f32 | |||
| e32c077888 | |||
| 30152d1910 | |||
| 1bea32cc0e | |||
| 1696f47fe9 | |||
| 5c430e4a4e | |||
| 762ebea72e | |||
| af13cbac61 | |||
| 61be9a594c | |||
| ddb004598c | |||
| d3c690425c | |||
| 216fe39fde | |||
| 4ec5473ab1 | |||
| 971cfe4e10 | |||
| 41de9ea642 | |||
| 2ca1d2c2e7 | |||
| 6047914d2c | |||
| da5b40d168 | |||
| 3de138ff41 | |||
| b318f1eeab | |||
| 2f2afd4f8d | |||
| be5d115f55 | |||
| 194ed48f97 | |||
| 441e091505 | |||
| d97c1f90af | |||
| ac3eadb1e0 | |||
| 9235f5fb48 | |||
| b45f940689 | |||
| e5fc0fa4e4 | |||
| dae4e84621 | |||
| 150ba48902 | |||
| 5ab79a65b2 | |||
| 23d4bf9a7e | |||
| e3f1b76f23 | |||
| 3d01a1d434 | |||
| 788b450cd5 | |||
| 0fd2d6d6b9 | |||
| a691f1e43f | |||
| b0f1f762e2 | |||
| 9c2865dcb4 | |||
| 4bc7eeb0f0 | |||
| b9931fe705 | |||
| 75594b7b25 | |||
| e2fa83bf1d | |||
| 689fb97b47 | |||
| 292cba06f0 | |||
| e771f02a68 | |||
| 662538a3c1 | |||
| 38bacfd09c | |||
| f0ed4373d4 | |||
| ac334495b9 | |||
| c6f909a042 | |||
| 4776b309c0 | |||
| 2b593a528a | |||
| 8e5ddd0fa1 | |||
| c64ac91ab1 | |||
| d7c8f87b64 | |||
| d76fa752cb | |||
| 86c69883b8 | |||
| 28f262d163 | |||
| 2d6c391866 | |||
| 9727ff5dc0 | |||
| a6ee115908 | |||
| 82ad87dbfc | |||
| bc57c51b44 | |||
| 6269d3323c | |||
| 93dc90ce31 | |||
| 2510dc9110 | |||
| 7bacf51dd1 | |||
| 48b8bc3285 | |||
| 85d39db6bc | |||
| b08063eb1b | |||
| 5a68ee77b6 | |||
| a187cd3bf3 | |||
| 2f20c1652a | |||
| 6cd8708c16 | |||
| 765b9c5f9f | |||
| 120eec4f4f | |||
| 32d69043f3 | |||
| 2cf7237167 | |||
| 873c397b61 | |||
| 92fd2c18a7 | |||
| 956ce4b8f9 | |||
| f14437c45d | |||
| e26c35e488 | |||
| f902109b04 | |||
| 776dbb5e76 | |||
| a34a81e0a1 | |||
| 2d7ffb9e72 | |||
| bec2feb35a | |||
| 3d522fac92 | |||
| 654d9abd1b | |||
| c0ffaa3687 | |||
| 60ead4e6d7 | |||
| 4167e36921 | |||
| fae7636795 | |||
| 6e8750fe37 | |||
| 61a4a42cc4 | |||
| da2bcec6d6 | |||
| e172c50123 | |||
| 6fc12f81d4 | |||
| f86983cb23 | |||
| 8e65c97b93 | |||
| a467a5507d | |||
| 79478eb7dd | |||
| 24c0806d6c | |||
| 2045b08915 | |||
| c73c8284d7 | |||
| cd5ed17acd | |||
| 41a25c4823 | |||
| 4eb7a82673 | |||
| e0eb2f61f8 | |||
| f02f7bc27c | |||
| f1e03c20f8 | |||
| bf1c7e5d02 | |||
| 2957d152a6 | |||
| 71fdcb3d76 | |||
| 29bb69f3e4 | |||
| f5f64b1128 | |||
| 7eb2f8ae31 | |||
| b005106df0 | |||
| 632cb83925 | |||
| dc22b6af70 | |||
| ae24513273 | |||
| 72d0e85349 | |||
| 0a2f815fdb | |||
| 9aed6b4bfa | |||
| d2bf429fea | |||
| 569d0185c0 | |||
| a451d13805 | |||
| f7965c5880 | |||
| 57438c485f | |||
| 820c79048b | |||
| ce2f36c9dd | |||
| 25ef64928e | |||
| fdadf13e5c | |||
| 93cad86d6c | |||
| d65eae9cf3 | |||
| 51fa512990 | |||
| 5249df4485 | |||
| 4e9616c77e | |||
| e42770cf71 | |||
| 741fcc07dd | |||
| 376a4d92b8 | |||
| ee401e122d | |||
| c038a3e6c2 | |||
| e3077c963d | |||
| 9fb9e29f94 | |||
| d9c9d0c757 | |||
| c4ae0a8337 | |||
| 5b23455352 | |||
| 1916c7b964 | |||
| 6f72866fe9 | |||
| 6227bad426 | |||
| 9c31297055 | |||
| 6bf84acf6b | |||
| ddbd960faa | |||
| f78eb78286 | |||
| 6ca0b05f62 | |||
| 9d27072700 | |||
| 9287fb394b | |||
| 3f74f2d01f | |||
| 94250275f2 | |||
| 11554e6fba | |||
| 16aff78ce1 | |||
| 2c24bae908 | |||
| 5c158d9ac3 | |||
| e3e0334aa3 | |||
| f206b562c3 | |||
| a33669563f | |||
| 448239544a | |||
| e23fc02f63 | |||
| 6d061248de | |||
| eb16dd81e0 | |||
| 98075f9d8e | |||
| af347b4a8f | |||
| 6e68922879 | |||
| 2497b59604 | |||
| a6069f7e63 | |||
| 8d3e509f92 | |||
| 484cdde442 | |||
| d5ce15c3b6 | |||
| 255fff75e2 | |||
| b10dd484bf | |||
| 3c29857869 | |||
| a5fc9bc36e | |||
| c114b7e5fa | |||
| c3f607cfe3 | |||
| b42abecb05 | |||
| ee395c48d2 | |||
| a0ba937a46 | |||
| a6a820aba2 | |||
| 8411602316 | |||
| de09199b9e | |||
| a78326e1f1 | |||
| 13d7dc9a91 | |||
| fa67326797 | |||
| 05745b838f | |||
| 1331eb511b | |||
| c84c435318 | |||
| 58b5a24224 | |||
| f04daab22c | |||
| 643a756160 | |||
| 01b4a14d07 | |||
| 02f506f6ff | |||
| 0f6f1b68c0 | |||
| 5ac1a9b499 | |||
| a627bff08c | |||
| f61664692f | |||
| 2b2077fe3d | |||
| 16fff12b76 | |||
| c8b4c73bf5 | |||
| 51fa505bd7 | |||
| 28a3da5ca3 | |||
| 88d27b9390 | |||
| 32b995f1a1 | |||
| 6880153eda | |||
| 38bf4b8ce3 | |||
| d066200ef8 | |||
| da8952dcbd | |||
| d6e5434396 | |||
| 9294697e22 | |||
| 40666c2635 | |||
| 2d1e12f219 | |||
| 1b175e2533 | |||
| 05fe2004e7 | |||
| 4e6089b7a7 | |||
| 3b6a0f50af | |||
| 8d35c3ce11 | |||
| 6de46f5a9f | |||
| e89f96cf76 | |||
| 704c0e1882 | |||
| f0b9de8676 | |||
| fa39c87d0a | |||
| 67f82a3438 | |||
| 335798bad2 | |||
| 5f77b18ea4 | |||
| c04fe9a547 | |||
| f1783448ac | |||
| 3aa0adf4ad | |||
| 5cb862cf44 | |||
| 87a7991ed6 | |||
| 324589a360 | |||
| 92fa5a4ff6 | |||
| b576829d63 | |||
| 3d2a8dd830 | |||
| 55cc675ce3 | |||
| 869df57f95 | |||
| 45feff0feb | |||
| b162e13ee0 | |||
| bebc3af38b | |||
| b01145e5f2 | |||
| 26b30d2369 | |||
| c9af31e516 | |||
| d0b110a113 | |||
| 791c9e2c61 | |||
| 40adaf2ae2 | |||
| ed2c3a62f9 | |||
| d56df0f568 | |||
| 948c6c814c | |||
| e2a96cab36 | |||
| 76bea3bc04 | |||
| c8fa10e51d | |||
| cd609a9a9c | |||
| 90b679f454 | |||
| ac907caf40 | |||
| 49e2f98f64 | |||
| 6750edbe51 | |||
| c3274b0e65 | |||
| 367245ea4f | |||
| 097e620b30 | |||
| 08c67d9a86 | |||
| 679a051c58 | |||
| c89dc363ac | |||
| 0fb11cdfa7 | |||
| 3cf8a624fe | |||
| 888011cb99 | |||
| 0a9c6c8350 | |||
| 523e5de681 | |||
| 86e3ef4733 | |||
| 8015db6893 | |||
| f498b0a7cf | |||
| a184c1c122 | |||
| d606773ff4 | |||
| eabbc4d7a0 | |||
| e1519da45b | |||
| 7eaa1a81ed | |||
| 0fb8206b12 | |||
| 1ea64a68ad | |||
| 0f73b37520 | |||
| 94df3d43ec | |||
| 9a480e812e | |||
| 169804c73a | |||
| daec6992d2 | |||
| cb48448a5c | |||
| ddd6682d2b | |||
| 259bc5d2ba | |||
| 6b87cd2a1f | |||
| 3c13754018 | |||
| 9b48daead7 | |||
| 3d5f200f7f | |||
| d6d7ae5cf7 | |||
| d36cd9da39 | |||
| e2002b4766 | |||
| ca333c7273 | |||
| c65b78bccf | |||
| c9560b1433 | |||
| 6b59a82d88 | |||
| 583d76c314 | |||
| 0fc5021d31 | |||
| 98b7960746 | |||
| 5f1df4e369 | |||
| 4daf040e24 | |||
| caf6ae216b | |||
| 60c410a4b0 | |||
| ff4da34f3a | |||
| e0facf57b5 | |||
| 1703b86414 | |||
| c64a6fc8ca | |||
| 7e53a217e7 | |||
| e5435a6c72 | |||
| aaf613c1bd | |||
| d634102ad7 | |||
| 078c5e3447 | |||
| 64f7fe79c0 | |||
| a5f67f362c | |||
| 9e9cd55e43 | |||
| a92760accd | |||
| b7b2163c4f | |||
| 26505127d7 | |||
| e242b93fbd | |||
| ea84ccdf38 | |||
| 6e7a13eb11 | |||
| 2699aeacab | |||
| bc7ee6c040 | |||
| 93290f3177 | |||
| 86c0ffcad6 | |||
| 32bf9a342d | |||
| 94410d68e6 | |||
| 2a3767ad2f | |||
| c287c54a6c | |||
| 23f909772e | |||
| 2b04fd241d | |||
| f7e44acc27 | |||
| 316274f09a | |||
| 87531022ee | |||
| a1a352da1f | |||
| d9980dee0c | |||
| 1adcfe064a | |||
| 2a7ff64ee8 | |||
| 70bdc9abfc | |||
| 151e87c505 | |||
| b59d2325b9 | |||
| 6c317ae107 | |||
| 6d3209286d | |||
| ff5a287332 | |||
| 05eaffb6cc | |||
| 913daa1d1f | |||
| bebee9c1ca | |||
| 9b41548c12 | |||
| 763c4ba882 | |||
| f770d56b09 | |||
| 8395cd0329 | |||
| c8a486e718 | |||
| 34e8321a4e | |||
| b67d5d27b8 | |||
| c02b9367ea | |||
| 18684ae4d8 | |||
| 8af90f9e62 | |||
| 6d4262fdc2 | |||
| f558f136c1 | |||
| 6af18b24aa | |||
| 13f9cc5be1 | |||
| dfe2bef992 | |||
| 72bec7ebb7 | |||
| 551b8214b0 | |||
| dfe11c3cc4 | |||
| b720427f29 | |||
| 2b95893300 | |||
| 47be48583f | |||
| 21785345f7 | |||
| 2e698a11a5 | |||
| 31d6b27281 | |||
| 64e21fcc7b | |||
| 1c15191c03 | |||
| 8fccd76b7f | |||
| 18fae9f2ac | |||
| f51bd11769 | |||
| c06b28929c | |||
| 90bb2fd572 | |||
| d7c682d6b5 | |||
| e3ba84d046 | |||
| cbdc2d449b | |||
| 91b9691206 | |||
| c4a98e297a | |||
| 149ae94212 | |||
| 16c86f6a2d | |||
| 95c4668eee | |||
| 4fce937bfa | |||
| df1fbad91c | |||
| 1fe7e364ef | |||
| 9dcff890f2 | |||
| d569f4b62b | |||
| b3dd6d8ea8 | |||
| 46af4a7ddb | |||
| ff404b9078 | |||
| 7b45b8fd31 | |||
| 974fc4648b | |||
| 3cf4c58b66 | |||
| 069da32840 | |||
| bea083533d | |||
| 791f138d82 | |||
| 3982dbeece | |||
| 8ad2e1b6f2 | |||
| e57a0ed63e | |||
| 8c2c351dc9 | |||
| 73e0617f51 | |||
| b8a8855f4a | |||
| edc5f61d60 | |||
| 9634485510 | |||
| 68bb2fd54a | |||
| 7227d1f08c | |||
| 8e988fcf08 | |||
| be9a24165f | |||
| 81d0ec995e | |||
| c887f5fca2 | |||
| c374d00a5c | |||
| 48fb61de5b | |||
| cde9220cad | |||
| 8f3e0b78cf | |||
| f8bca77ee4 | |||
| e5a0e38d0c | |||
| 199b9a3879 | |||
| 8db391bbeb | |||
| 6e142f5bc0 | |||
| d8fe1f7223 | |||
| d71902ed61 | |||
| 3d1a22f1d5 | |||
| 78abf9e570 | |||
| a57532f34a | |||
| 1549f730e5 | |||
| 12494d8ac7 | |||
| 159ae46ec0 | |||
| ddb539578e | |||
| 72339ad8ee | |||
| 9e9803c698 | |||
| 1ce18f9337 | |||
| 3f1f192a42 | |||
| d024ac9e53 | |||
| e7f1e219d7 | |||
| 49c7d8e859 | |||
| eec7e33de5 | |||
| 7ad3e18cf0 | |||
| 974240ec09 | |||
| 54a02be1f7 | |||
| e0ab38bb7e | |||
| 1b253af8df | |||
| 2e22f050f2 | |||
| 750645ee5c | |||
| 9e0978fcf4 | |||
| 5f7dea1456 | |||
| bff366b392 | |||
| 7cbef7d479 | |||
| b6990cd89e | |||
| cb268761f4 | |||
| b055c73654 | |||
| cb68d726cf | |||
| 7f70116f6d | |||
| 89c57b151d | |||
| 8a0396eca1 | |||
| 9a8854b236 | |||
| 50a849b10b | |||
| 59a614df8c | |||
| 456e700762 | |||
| 40bb8e3813 | |||
| 87c047b55f | |||
| 640ab6289b | |||
| 645d34b2ef | |||
| 0954923381 | |||
| 2b1d99909b | |||
| 1c2c3a0703 | |||
| 84da36e364 | |||
| 0669d78772 | |||
| f0ae8a1afc | |||
| d8b93ef9e5 | |||
| 76912da581 | |||
| 945b0b1c41 | |||
| 18fe88cbb9 | |||
| 2fb6bd1e37 | |||
| 36b41451f0 | |||
| 31be8c9c56 | |||
| a16670221d | |||
| 9510495c5c | |||
| e98368c95d | |||
| 7405077ad7 | |||
| e2b4760156 | |||
| 3a41265181 | |||
| 5512da6156 | |||
| d282a0e2c0 | |||
| 49743245c1 | |||
| 805eff80ff | |||
| 487f2995b7 | |||
| 69f6c20ea0 | |||
| 6d593f3343 | |||
| 359a42758a | |||
| 7744a2fda9 | |||
| 75526565b8 | |||
| f4daec4cbc | |||
| 36e6493303 | |||
| 9ab2bcfbd4 | |||
| 9c97b7c6d9 | |||
| fe7b33cbc6 | |||
| 0ed56c45e1 | |||
| b232da100f | |||
| 7cf4aec8e6 | |||
| 5ca9f19699 | |||
| 648c50ba07 | |||
| 563e058e80 | |||
| fb8c5f3fa4 | |||
| 17322943b5 | |||
| 6c0920c812 | |||
| 342eaa4566 | |||
| da5a8565bc | |||
| fd96db6a8a | |||
| efb0e825b8 | |||
| c47bbcde7b | |||
| 5cedf36d70 | |||
| bc9f13ce97 | |||
| 29346ebb90 | |||
| a44e54faec | |||
| d5b163f0a4 | |||
| 4c99ccc1cd | |||
| 452a13f941 | |||
| 6455dbb61a | |||
| e9669b2ed1 | |||
| 95a7059f84 | |||
| 361c0f034b | |||
| 1ac2939ff5 | |||
| 7b2eb76c43 | |||
| 1908d78cb0 | |||
| 5b6d0a0188 | |||
| 19b1690d40 | |||
| 82b80b8a46 | |||
| 06076873a9 | |||
| b45aacaa11 | |||
| 70897de3bd | |||
| c85eea358a | |||
| 32ce4405e0 | |||
| d537c856b3 | |||
| 71d973de38 | |||
| 5f07849878 | |||
| a48f7039fc | |||
| 6e20cca06d | |||
| 8f36dba7f0 | |||
| 7bef64f17c | |||
| d489398f40 | |||
| b9f2b2f15c | |||
| e4f5a646b0 | |||
| 1bfffc47d0 | |||
| a3838a1215 | |||
| 4eb5e79bff | |||
| e104bada22 | |||
| 99675fc000 | |||
| 85a4a71e17 | |||
| 2edd8cdcfd | |||
| 6ba5e3b1a3 | |||
| 70775a2252 | |||
| 01dbbf7f78 | |||
| b55af3cf0d | |||
| b320d9388d | |||
| bc2eb77cde | |||
| dd3484a796 | |||
| df75dd2ba8 | |||
| eaba81c943 | |||
| c8c19e9f27 | |||
| 5dbf32cd8b | |||
| f66ca8dc17 | |||
| f4d1d7f36c | |||
| 08bc642199 | |||
| 2c03e7b4d3 | |||
| 95e106b740 | |||
| b57f6316c7 | |||
| 6705508660 | |||
| c789d835b6 | |||
| 7fcd9a7510 | |||
| 3c2a80b447 | |||
| e0195a11f9 | |||
| 8fc33d4191 | |||
| 8d0702b3d7 | |||
| e16a9fa10e | |||
| 9fdd2bf1c6 | |||
| 65937e0dca | |||
| 98c240e912 | |||
| 6956159ff9 | |||
| 951e740496 | |||
| d2d41e5ddb | |||
| cb93352bed | |||
| 5868b8dcb0 | |||
| 665151abff | |||
| a17e9bf27e | |||
| 762969933b | |||
| b42edc8edb | |||
| fdc6de9026 | |||
| 6fc656024e | |||
| 7354870ff6 | |||
| e33c8568f3 | |||
| b672347f58 | |||
| 2fb76f58d2 | |||
| 3d8a76d160 | |||
| 3e4cbccadb | |||
| 2e5bf8e3c6 | |||
| 1826a57f16 | |||
| b2888aca41 | |||
| 254e4a9086 | |||
| 4cf691a0ce | |||
| ece3e36a3c | |||
| 7f8557cfd8 | |||
| b62f974399 | |||
| 0dc7f230dc | |||
| ab3c64a0d5 | |||
| c3a6eead5b | |||
| e880dab1fb | |||
| ebc25a713c | |||
| 8e24495117 | |||
| e9d1a28ff6 | |||
| 9263123fec | |||
| 6863870837 | |||
| 340242f1ae | |||
| 4324699eae | |||
| ab96e0aed1 | |||
| e865fd62f6 | |||
| b75c9b0ca9 | |||
| 8ac43647b3 | |||
| 8c2fce3c30 | |||
| 0688412770 | |||
| cbb1bb13ab | |||
| 84b732b05f | |||
| c1ebdfe8d8 | |||
| c857c10e7c | |||
| 417d9ed799 | |||
| e7ff033de8 | |||
| ac875c56b5 | |||
| 6cec9f2af3 | |||
| 9f36ca83b9 | |||
| 68bf1df672 | |||
| 181e524667 | |||
| 3846709adb | |||
| 257db579f5 | |||
| 0664cad1a0 | |||
| d79b909d5c | |||
| a34895084c | |||
| dd70ee2310 | |||
| f9fffe700b | |||
| 869d0328fd | |||
| 668a84f861 | |||
| 81b47cb90d | |||
| 76bb7fa0ca | |||
| f1a3574dfc | |||
| 47b83cb1ed | |||
| b0e8cfc668 | |||
| a77e9ae9d7 | |||
| 342b916cea | |||
| dd13d35462 | |||
| 8c584cb04c | |||
| 13adf9a1fd | |||
| abc7c6ea44 | |||
| 70ddf4d6f1 | |||
| bb00ced9ba | |||
| 1979a4c208 | |||
| 4e49239c5a | |||
| bd0d613f8e | |||
| dd0afa105c | |||
| 125838cad5 | |||
| c8d9772d6d | |||
| b177a1249e | |||
| b4a566f841 | |||
| 0ef9a6e1a2 | |||
| 8c317fe2ef | |||
| 5b2df5a6be | |||
| 7d1e607fa6 | |||
| a090f8e89d | |||
| 24b948e18e |
@@ -0,0 +1,43 @@
|
|||||||
|
name: Deploy to Cloudflare R2
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
extended: true
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: hugo --config config-prod.toml --minify
|
||||||
|
|
||||||
|
- name: Configure AWS CLI for Cloudflare R2
|
||||||
|
uses: aws-actions/configure-aws-credentials@v2
|
||||||
|
with:
|
||||||
|
aws-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
|
||||||
|
aws-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
|
||||||
|
aws-region: auto
|
||||||
|
|
||||||
|
- name: Deploy to Cloudflare R2
|
||||||
|
run: |
|
||||||
|
aws s3 sync ./public/ s3://${{ secrets.BUCKET_NAME }}/ \
|
||||||
|
--endpoint-url=https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com \
|
||||||
|
--acl public-read \
|
||||||
|
--delete
|
||||||
|
|
||||||
|
- name: Purge Cloudflare Cache
|
||||||
|
uses: jakejarvis/cloudflare-purge-action@v0.3.0
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
|
||||||
|
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# Hugo default output directory
|
||||||
|
/public/
|
||||||
|
/resources/_gen/
|
||||||
|
/assets/jsconfig.json
|
||||||
|
hugo_stats.json
|
||||||
|
hugo.exe
|
||||||
|
hugo.darwin
|
||||||
|
hugo.linux
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
.temp
|
||||||
|
.temp-*
|
||||||
|
|
||||||
|
# OS Files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# IDE specific files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.sublime-workspace
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# Netlify
|
||||||
|
.netlify
|
||||||
|
.hugo_build.lock
|
||||||
|
|
||||||
|
# Sensitive files - DO NOT COMMIT THESE
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
*.env
|
||||||
|
.aws/credentials
|
||||||
|
.aws/config
|
||||||
|
*_secret*
|
||||||
|
*_key*
|
||||||
|
*password*
|
||||||
|
*apikey*
|
||||||
|
*token*gitea
|
||||||
|
gitea.pub
|
||||||
|
|
||||||
|
# Local development folders
|
||||||
|
/scripts/
|
||||||
|
!themes/**/scripts/
|
||||||
|
telegram/
|
||||||
|
migration-s3/
|
||||||
|
INFO/*
|
||||||
|
!INFO/Deployment/
|
||||||
|
!INFO/Deployment/*.md
|
||||||
|
forms/.env
|
||||||
|
|
||||||
|
# Debug and test pages - не для продакшена
|
||||||
|
static/debug-*.html
|
||||||
|
static/test-*.html
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
module.exports = function () {
|
||||||
|
const project = this.project
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
title: "Open in vscode", // This is what displays in the main menu
|
||||||
|
keys: ['alt+o'], // This is the keyboard shortcut
|
||||||
|
icon: "code", // This is the font awesome icon that displays in the main menu
|
||||||
|
action (task) {
|
||||||
|
const url = `vscode://file/${path.join(project.path, task.path)}:${task.line}`
|
||||||
|
project.openUrl(url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module.exports = function (task) {
|
||||||
|
const project = this.project
|
||||||
|
return []
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
keepEmptyPriority: true
|
||||||
|
code:
|
||||||
|
include_lists:
|
||||||
|
- TODO
|
||||||
|
- DOING
|
||||||
|
- DONE
|
||||||
|
- PLANNING
|
||||||
|
- FIXME
|
||||||
|
- ARCHIVE
|
||||||
|
- HACK
|
||||||
|
- CHANGED
|
||||||
|
- XXX
|
||||||
|
- IDEA
|
||||||
|
- NOTE
|
||||||
|
- REVIEW
|
||||||
|
lists:
|
||||||
|
- name: NOTE
|
||||||
|
hidden: false
|
||||||
|
id: ojbrkhmfgw01p1
|
||||||
|
- name: Past Due Reminders
|
||||||
|
hidden: true
|
||||||
|
ignore: false
|
||||||
|
filter: 'remind = /./ and remind < "${now}" and list != DONE -remind'
|
||||||
|
id: ojbrkhmfgw01p2
|
||||||
|
- name: What's Due?
|
||||||
|
hidden: true
|
||||||
|
ignore: false
|
||||||
|
filter: 'dueDate < "${in 15 days}" AND list != DONE +dueDate +order'
|
||||||
|
id: ojbrkhmfgw01p3
|
||||||
|
- name: TODO
|
||||||
|
hidden: false
|
||||||
|
id: ojbrkhmfgw01p4
|
||||||
|
- name: DOING
|
||||||
|
hidden: false
|
||||||
|
id: ojbrkhmfgw01p5
|
||||||
|
- name: DONE
|
||||||
|
hidden: false
|
||||||
|
ignore: true
|
||||||
|
id: ojbrkhmfgw01p6
|
||||||
|
- name: Recently Completed
|
||||||
|
filter: 'completedDate > "${14 days ago}" -completed'
|
||||||
|
hidden: false
|
||||||
|
id: ojbrkhmfgw01p7
|
||||||
|
settings:
|
||||||
|
'0': object Object
|
||||||
|
openIn: default
|
||||||
|
openCodeIn: default
|
||||||
|
journalType: New File
|
||||||
|
journalPath: backlog
|
||||||
|
appendNewCardsTo: null
|
||||||
|
newCardSyntax: HASHTAG
|
||||||
|
replaceSpacesWith: '-'
|
||||||
|
plugins: {}
|
||||||
|
journalTemplate: null
|
||||||
|
markdownOnly: false
|
||||||
|
kudosProbability: 0.33
|
||||||
|
views: []
|
||||||
|
name: ptp
|
||||||
|
cards:
|
||||||
|
colors: []
|
||||||
|
template: |
|
||||||
|
|
||||||
|
<!--
|
||||||
|
created:${timestamp}
|
||||||
|
-->
|
||||||
|
trackChanges: false
|
||||||
|
metaNewLine: true
|
||||||
|
addCompletedMeta: true
|
||||||
|
addCheckBoxTasks: false
|
||||||
|
doneList: DONE
|
||||||
|
tokenPrefix: '#'
|
||||||
|
taskPrefix: '##'
|
||||||
|
tagPrefix: '#'
|
||||||
|
metaSep: ':'
|
||||||
|
orderMeta: true
|
||||||
|
maxLines: 6
|
||||||
|
addNewCardsToTop: true
|
||||||
|
showTagsAndMeta: false
|
||||||
|
defaultList: TODO
|
||||||
|
computed: !<tag:yaml.org,2002:js/undefined> ''
|
||||||
|
archiveCompleted: true
|
||||||
|
archiveFolder: backlog/archive
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
let updatedAt = new Date()
|
||||||
|
|
||||||
|
module.exports = function ({ line, source, totals }) {
|
||||||
|
const project = this.project
|
||||||
|
|
||||||
|
const emoji = {
|
||||||
|
due: dueEmoji(totals),
|
||||||
|
recent: recentEmoji(totals),
|
||||||
|
wip: wipEmoji(totals),
|
||||||
|
chart: EMOJI.CHART
|
||||||
|
}
|
||||||
|
|
||||||
|
// These are the properties that are available to use in your cards
|
||||||
|
// Use ${property_name} to permanently insert the value of the property
|
||||||
|
// Use {{property_name}} to insert the value of the property at runtime
|
||||||
|
return {
|
||||||
|
date: `${new Date().toISOString().substring(0, 10)}`,
|
||||||
|
sourceLink: `[${source.path}:${line}](${source.path}:${line})`,
|
||||||
|
cardTotal: cardTotal(totals),
|
||||||
|
allTopics: project.allTopics, // This is an array of all the topics in the project
|
||||||
|
topicTable: getTopicTable(project), // This is a markdown table with the count of tasks for each topic/list intersection
|
||||||
|
emoji,
|
||||||
|
icons
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const icons = {
|
||||||
|
filter: `<span class="icon is-small fa-xs"><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="search" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-search fa-w-16"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z" class=""></path></svg></span><span data-v-fd981bec="" class="icon is-small fa-xs"><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="chevron-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="svg-inline--fa fa-chevron-down fa-w-14"><path fill="currentColor" d="M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" class=""></path></svg></span>`
|
||||||
|
,openFile: `<span class="icon is-medium"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" class="octicon octicon-link"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></span>`
|
||||||
|
,kebab: `<span class="icon is-medium"><svg version="1.1" width="3" height="16" viewBox="0 0 3 16" aria-hidden="true" class="octicon octicon-kebab-vertical"><path data-v-5bf4cb66="" fill-rule="evenodd" d="M0 2.5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0zm0 5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0zM1.5 14a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"></path></svg></span>`
|
||||||
|
,clone: `<span class="icon copy-button is-medium" style=""><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="clone" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-clone fa-w-16 fa-lg"><path fill="currentColor" d="M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z" class=""></path></svg></span>`
|
||||||
|
,editCard: `<span class="icon is-medium"><svg version="1.1" width="14" height="16" viewBox="0 0 14 16" aria-hidden="true" class="octicon octicon-pencil"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"></path></svg></span>`
|
||||||
|
}
|
||||||
|
|
||||||
|
const EMOJI = {
|
||||||
|
BAD: ':rotating_light:',
|
||||||
|
GREAT: ':rocket:',
|
||||||
|
SLEEP: ':sleeping:',
|
||||||
|
GOOD: ':2nd_place_medal:',
|
||||||
|
CHART: '<span style="font-size: 1.5em;">:chart:</span>'
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatEmoji(emoji) {
|
||||||
|
return `<span style="font-size: 1.5em;">${emoji}</span>`
|
||||||
|
}
|
||||||
|
|
||||||
|
function dueEmoji(totals) {
|
||||||
|
const due = totals["What's Due?"]
|
||||||
|
let emoji = EMOJI.GOOD
|
||||||
|
if (due >= 3) {
|
||||||
|
emoji = EMOJI.BAD
|
||||||
|
} else if (due === 0) {
|
||||||
|
emoji = EMOJI.GREAT
|
||||||
|
}
|
||||||
|
return formatEmoji(emoji)
|
||||||
|
}
|
||||||
|
|
||||||
|
function recentEmoji(totals) {
|
||||||
|
const recentlyCompleted = totals['Recently Completed']
|
||||||
|
let emoji = EMOJI.GOOD
|
||||||
|
if (recentlyCompleted >= 3) {
|
||||||
|
emoji = EMOJI.GREAT
|
||||||
|
} else if (recentlyCompleted === 0) {
|
||||||
|
emoji = EMOJI.BAD
|
||||||
|
}
|
||||||
|
return formatEmoji(emoji)
|
||||||
|
}
|
||||||
|
|
||||||
|
function wipEmoji(totals) {
|
||||||
|
const doing = totals['DOING']
|
||||||
|
let emoji = EMOJI.GOOD
|
||||||
|
if (doing >= 3) {
|
||||||
|
emoji = EMOJI.BAD
|
||||||
|
} else if (doing === 0) {
|
||||||
|
emoji = EMOJI.SLEEP
|
||||||
|
} else if (doing === 1) {
|
||||||
|
emoji = EMOJI.GREAT
|
||||||
|
}
|
||||||
|
return formatEmoji(emoji)
|
||||||
|
}
|
||||||
|
|
||||||
|
function cardTotal(totals) {
|
||||||
|
let count = 0
|
||||||
|
Object.keys(totals).forEach((list) => {
|
||||||
|
count += totals[list]
|
||||||
|
})
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTopicTable(project) {
|
||||||
|
console.log('project.updatedAt', project.updatedAt)
|
||||||
|
console.log('updatedAt', updatedAt)
|
||||||
|
if (project.updatedAt < updatedAt) return ''
|
||||||
|
|
||||||
|
updatedAt = project.updatedAt
|
||||||
|
const lists = project.allLists.filter(list => !list.filter)
|
||||||
|
const topicTable = project.allTopics.map((topic) => {
|
||||||
|
return {
|
||||||
|
name: topic,
|
||||||
|
lists: [
|
||||||
|
...lists.map((list) => {
|
||||||
|
return {
|
||||||
|
name: list.name,
|
||||||
|
count: list.tasks.filter((task) => task.topics.includes(topic)).length
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//convert topic table into a markdown table with topic name on the left and list names on the top and the count for each topic/list intersection
|
||||||
|
const table = `
|
||||||
|
| Topic | ${lists.map((list) => list.name).join(' | ')} |
|
||||||
|
| --- | ${lists.map(() => ' --- ').join(' | ')} |
|
||||||
|
${topicTable.map((topic) => {
|
||||||
|
const topicLink = `imdone://${project.path}?filter=topics="${encodeURIComponent(topic.name)}"`;
|
||||||
|
return `| [[${topic.name}]] | ${topic.lists.map((list) => `[${list.count}](${topicLink})`).join(' | ')} |`;
|
||||||
|
}).join('\n')}
|
||||||
|
`;
|
||||||
|
|
||||||
|
console.log(table);
|
||||||
|
return table
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
tags:
|
||||||
|
- '82'
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
.obsidian
|
||||||
|
.trash
|
||||||
|
.imdone/plugins
|
||||||
@@ -0,0 +1,757 @@
|
|||||||
|
# Изменения в системе развертывания
|
||||||
|
|
||||||
|
**Последнее обновление:** 2025-11-10 (текущее время)
|
||||||
|
**Версия:** 2.3
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-11-10] Обновление формы поездок (декабрь 2025) и UI улучшения
|
||||||
|
|
||||||
|
### ✅ ЗАВЕРШЕНО
|
||||||
|
|
||||||
|
**Основной результат:** Полное обновление страницы "Хочу поехать" с новыми полями формы, кастомизацией UI и изменением условий участия
|
||||||
|
|
||||||
|
#### 1. Обновление формы заявок на поездки
|
||||||
|
**Файлы:** `content/plan.md`, `forms/send_plan.php`, `static/data/upcoming-trips.json`
|
||||||
|
|
||||||
|
**Что добавлено:**
|
||||||
|
- ✅ Новое обязательное поле "Телефон *"
|
||||||
|
- ✅ Изменено поле "Имя" на "Фамилия, имя *"
|
||||||
|
- ✅ Добавлена загрузка PDF файла для уведомления о постановке на учёт БВС (максимум 5МБ, только PDF)
|
||||||
|
- ✅ Кастомная кнопка "Выбрать файл" вместо стандартной "Choose File" (на русском)
|
||||||
|
- ✅ Отображение выбранного имени файла с галочкой после загрузки
|
||||||
|
- ✅ Backend валидация для проверки типа файла и размера в `send_plan.php`
|
||||||
|
|
||||||
|
#### 2. Обновление условий участия и UI
|
||||||
|
**Файлы:** `content/plan.md`, `static/data/upcoming-trips.json`
|
||||||
|
|
||||||
|
**Что изменено:**
|
||||||
|
- ✅ Переименован раздел "Поездки с полетами дронов" → "Дронослёты"
|
||||||
|
- ✅ Изменены сроки подачи заявки: 7 дней → 5 дней до даты поездки
|
||||||
|
- ✅ Обновлен вводный текст: "Желаете отправиться..." → "Хотите присоединится к поездке? Ознакомьтесь с условиями участия и заполните форму"
|
||||||
|
- ✅ Удален раздел "Поездки без дронов" (принято решение не ездить с незнакомыми на некоммерческой основе)
|
||||||
|
- ✅ Удалено предложение собственного направления (оставлено на будущее)
|
||||||
|
- ✅ Удалена "Московская область" из описания (разрешение не дают)
|
||||||
|
- ✅ Добавлена подробная информация о времени выезда: "обычно рано утром, 5-6 утра из Москвы, иногда раньше в зависимости от удалённости локации"
|
||||||
|
|
||||||
|
#### 3. Обновление согласия на обработку данных
|
||||||
|
**Файлы:** `content/plan.md`
|
||||||
|
|
||||||
|
**Что изменено:**
|
||||||
|
- ✅ Добавлен заголовок "СОГЛАСИЕ НА ОБРАБОТКУ ПЕРСОНАЛЬНЫХ ДАННЫХ" (жирный, по центру) в блоке согласия формы
|
||||||
|
- ✅ Обновлен текст согласия: "Персональные данные обрабатываются исключительно для получения разрешения на полёты БВС. Согласие действует 1 месяц. Отзыв согласия – заявление на sleep-trip@ya.ru"
|
||||||
|
- ✅ Добавлен такой же заголовок в раздел "Пояснения к форме" перед детальным описанием согласия
|
||||||
|
|
||||||
|
#### 4. Обновление данных поездок
|
||||||
|
**Файл:** `static/data/upcoming-trips.json`
|
||||||
|
|
||||||
|
**Что изменено:**
|
||||||
|
- ✅ Скрыта ноябрьская поездка (active: false)
|
||||||
|
- ✅ Обновлена картинка декабрьской поездки на зимнее фото дрона: `/static/images/Rassvet_20231202_9.webp` → S3 URL `https://s3.regru.cloud/sleeptrip-dev/images/Rassvet_20231202_9.webp`
|
||||||
|
- ✅ Обновлено описание в карточке поездки на странице (убрана Московская область)
|
||||||
|
|
||||||
|
#### 5. Добавлено в form enctype
|
||||||
|
**Файл:** `content/plan.md`
|
||||||
|
|
||||||
|
**Что добавлено:**
|
||||||
|
- ✅ Атрибут `enctype="multipart/form-data"` в тег `<form>` для корректной работы с файлами
|
||||||
|
|
||||||
|
**Структура данных в форме:**
|
||||||
|
```php
|
||||||
|
$form_data = [
|
||||||
|
'name' => 'string', // Фамилия, имя (обязательно)
|
||||||
|
'email' => 'string', // Email (опционально)
|
||||||
|
'phone' => 'string', // Телефон (обязательно)
|
||||||
|
'telegram' => 'string', // Telegram ник (опционально)
|
||||||
|
'bvs_number' => 'string', // Номер/серийный номер БВС (опционально)
|
||||||
|
'trip_period' => 'string', // Выбранное мероприятие (опционально)
|
||||||
|
'bvs_file' => 'string', // Имя загруженного PDF файла (опционально)
|
||||||
|
'consent' => 'agree' // Согласие на обработку данных (обязательно)
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
**Валидация файла в backend:**
|
||||||
|
- Максимальный размер: 5 МБ
|
||||||
|
- Допустимый тип: только PDF (application/pdf)
|
||||||
|
- MIME тип проверяется функцией `mime_content_type()`
|
||||||
|
- Сохраняется только имя файла, сам файл передается в email/Telegram/JSON
|
||||||
|
|
||||||
|
#### 6. Рекомендации по развертыванию на VPS
|
||||||
|
**На VPS необходимо выполнить после git pull:**
|
||||||
|
```bash
|
||||||
|
# Скопировать обновленный файл формы
|
||||||
|
cp /var/www/hugo-source/forms/send_plan.php /var/www/forms/send_plan.php
|
||||||
|
|
||||||
|
# Установить права
|
||||||
|
sudo chown www-data:www-data /var/www/forms/send_plan.php
|
||||||
|
sudo chmod 644 /var/www/forms/send_plan.php
|
||||||
|
```
|
||||||
|
|
||||||
|
**Проверка на VPS:**
|
||||||
|
```bash
|
||||||
|
# Статус формы (должно вернуть 405 - GET не разрешен)
|
||||||
|
curl -s -o /dev/null -w "%{http_code}" http://sleeptrip.ru/forms/send_plan.php
|
||||||
|
|
||||||
|
# Логи ошибок PHP
|
||||||
|
tail -50 /var/log/php-fpm/error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
**Количество коммитов:** 4
|
||||||
|
- `95fddb6` - Update December flights form and trip data
|
||||||
|
- `427ac1b` - Update plan page content with form improvements
|
||||||
|
- `856bace` - Fix December trip image URL to S3 link
|
||||||
|
- `328f32b` - Add custom file upload button with Russian label
|
||||||
|
- `9d5a0e1` - Update plan page: remove Moscow region, simplify conditions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-11-05] ПОЛНОЕ ОБНОВЛЕНИЕ - Галерея в боте + Документация развертывания + Исправления формы
|
||||||
|
|
||||||
|
### ✅ ЗАВЕРШЕНО - Большой объем работ
|
||||||
|
|
||||||
|
**Основной результат:** Добавлена полная система загрузки фотографий в галерею через Telegram бота с автоматическим обновлением сайта
|
||||||
|
|
||||||
|
#### 1. Реализована система загрузки фотографий в галерею
|
||||||
|
**Файл:** `telegram/telegram_bot.py` (строки добавлены в разные части файла)
|
||||||
|
|
||||||
|
**Что добавлено:**
|
||||||
|
- Новое состояние `GALLERY_UPLOAD` в классе `BotStates`
|
||||||
|
- Замена кнопки "📋 Заявки" на "📸 Галлерея" в главном меню (`get_main_keyboard()`)
|
||||||
|
- Функция `add_photo_to_gallery()` (строки ~1177-1205):
|
||||||
|
- Загружает S3 URL в файл `content/gallery.md`
|
||||||
|
- Использует Hugo shortcode `{{< figure src="..." >}}`
|
||||||
|
- Автоматический git commit и push с сообщением "Добавлено фото в галлерею"
|
||||||
|
- Обработка ошибок и логирование
|
||||||
|
|
||||||
|
- Обработка загрузки фото в `handle_photo()` (строки ~1246-1305):
|
||||||
|
- Переименование: документ → имя файла `gallery_YYYYMMDD_N.jpg`
|
||||||
|
- Загрузка в S3 папку `gallery/`
|
||||||
|
- Вызов функции добавления в gallery.md
|
||||||
|
- Ответ пользователю об успехе/ошибке
|
||||||
|
|
||||||
|
- Обработчик callback "gallery_upload" в `handle_callback_query()` (строки ~918-928):
|
||||||
|
- Возврат в главное меню после отмены загрузки
|
||||||
|
|
||||||
|
**Архитектура:**
|
||||||
|
- Принцип работы: **простая загрузка фото** (без сложной формы как в постах)
|
||||||
|
- Поток: пользователь → выбирает "Галлерея" → загружает фото → автоматически добавляется на сайт
|
||||||
|
- S3 хранилище: все фото в папке `gallery/` с датой и номером
|
||||||
|
- Сайт: автоматически обновляется через webhook после git push
|
||||||
|
|
||||||
|
**Ключевой момент:** Исправлена ошибка параметров функции `git_add_commit_push(files, message)` - правильный порядок (files первым, message вторым).
|
||||||
|
|
||||||
|
#### 2. Исправления в формах
|
||||||
|
**Файлы:** `forms/forms_helper.php`, `forms/send_plan.php`, `forms/send_ask.php`
|
||||||
|
|
||||||
|
**Что исправлено:**
|
||||||
|
- ✅ Улучшена обработка ошибок отправки email
|
||||||
|
- ✅ Добавлено логирование для отладки проблем с msmtp
|
||||||
|
- ✅ Проверка наличия переменных окружения перед использованием
|
||||||
|
- ✅ Корректная работа с FORMS_SEND_TELEGRAM флагом
|
||||||
|
|
||||||
|
#### 3. Обновление dropdown поездок - добавлена опция "Предложить свое"
|
||||||
|
**Файл:** `static/js/trip-form-loader.js` (строки 70-74)
|
||||||
|
|
||||||
|
**Что добавлено:**
|
||||||
|
```javascript
|
||||||
|
const customOption = document.createElement('option');
|
||||||
|
customOption.value = 'Предложить свое';
|
||||||
|
customOption.textContent = 'Предложить свое';
|
||||||
|
select.appendChild(customOption);
|
||||||
|
```
|
||||||
|
|
||||||
|
**История этой задачи:**
|
||||||
|
1. Изначально была опция "Свой вариант без БВС" - **удалена** (была неправильная формулировка)
|
||||||
|
2. Добавлена новая опция "Предложить свое" (более понятная пользователям)
|
||||||
|
3. Опция загружается динамически из JavaScript, синхронизирована с управлением в Telegram боте
|
||||||
|
|
||||||
|
#### 4. Обновление условий участия в поездках без БВС
|
||||||
|
**Файл:** `content/plan.md`
|
||||||
|
|
||||||
|
**Что изменилось:**
|
||||||
|
- **Было:** Две отдельные строки:
|
||||||
|
- "Подача заявки: минимум за 2-3 дня"
|
||||||
|
- "Обсуждение деталей: [Telegram чат]"
|
||||||
|
- **Стало:** Одна консолидированная строка:
|
||||||
|
- "Подача заявки: минимум за 2-3 дня через [Telegram чат 'Пока ты спал']"
|
||||||
|
|
||||||
|
**Результат:** Более компактная и понятная информация на странице
|
||||||
|
|
||||||
|
#### 5. Созданы две практические справки для развертывания
|
||||||
|
|
||||||
|
**Файл 1: `INFO/Deployment/TELEGRAM_BOT_UPDATE.md`** (Новый файл)
|
||||||
|
- Содержание: Как обновлять Telegram бота на VPS и перезапускать сервис
|
||||||
|
- Быстрый старт (2 минуты): scp копирование + systemctl restart
|
||||||
|
- Полный процесс с проверкой прав доступа
|
||||||
|
- Проверка статуса через journalctl
|
||||||
|
- Откат изменений
|
||||||
|
- Типичные ошибки и решения
|
||||||
|
- Интерпретация для других способов запуска (screen/tmux)
|
||||||
|
|
||||||
|
**Файл 2: `INFO/Deployment/PHP_FORMS_UPDATE.md`** (Новый файл)
|
||||||
|
- Содержение: Как обновлять PHP формы и устанавливать правильные права доступа
|
||||||
|
- Быстрый старт (1 минута): git add → commit → push (webhook автоматически обновит)
|
||||||
|
- Полный процесс обновления на VPS
|
||||||
|
- Таблица прав доступа для всех файлов
|
||||||
|
- Одна команда установки всех прав сразу
|
||||||
|
- Проверка что формы работают (curl + логи)
|
||||||
|
- Типичные проблемы (403, 500, не отправляется, email не приходит)
|
||||||
|
|
||||||
|
**Назначение этих файлов:**
|
||||||
|
- Быстрая справка при изменении кода (не нужно помнить все команды)
|
||||||
|
- Используются как références в документации
|
||||||
|
- Разделены по задачам (бот отдельно, формы отдельно)
|
||||||
|
- Содержат практические примеры и команды
|
||||||
|
|
||||||
|
#### 6. Открыта важная находка о webhook
|
||||||
|
**Проблема:** После миграции на новый домен sleeptrip.ru webhook не срабатывал автоматически
|
||||||
|
**Причина:** GitHub webhook был настроен с URL старого домена/тестовой версии
|
||||||
|
**Решение:** Обновлены GitHub webhook настройки указать новый Payload URL
|
||||||
|
**Документирование:** Добавлено в `VPS_SINGLE_DEPLOYMENT.md` как КРИТИЧЕСКИЙ момент - при смене домена ОБЯЗАТЕЛЬНО обновить webhook URL в GitHub
|
||||||
|
|
||||||
|
**Проверка:** Тестирование с маркером "ТЕСТ-WEBHOOK" в plan.md подтвердило что webhook работает после обновления URL
|
||||||
|
|
||||||
|
#### Коммиты сегодня:
|
||||||
|
1. `ea9ca59` - Remove 'Свой вариант без БВС' option from trip selection dropdown
|
||||||
|
2. `21e00bf` - Update trips without drones section - combine submission and discussion into one line
|
||||||
|
3. `d352bba` - Test webhook with new domain - check if auto deploy works
|
||||||
|
4. `6a3603c` - Fix ask form and improve .env parsing (из предыдущей сессии)
|
||||||
|
|
||||||
|
#### Статус проекта
|
||||||
|
- Прогресс: ~82% (все критичные компоненты работают, система полностью функциональна)
|
||||||
|
- Новые возможности: загрузка фотографий в галерею прямо из Telegram бота
|
||||||
|
- Документирование: созданы справочники по развертыванию
|
||||||
|
- Следующие задачи: S3 file listing feature (отдельная задача), дополнительные оптимизации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-11-05] Обновление страницы "Хочу поехать" (Plan page) + Webhook документация
|
||||||
|
|
||||||
|
### ✅ ВЫПОЛНЕНО - Изменения в форме поездок и инструкции
|
||||||
|
|
||||||
|
**Файлы изменены:**
|
||||||
|
- `static/js/trip-form-loader.js` - Удалена опция "Свой вариант без БВС" из dropdown
|
||||||
|
- `content/plan.md` - Обновлен текст условий участия для поездок без дронов
|
||||||
|
- `INFO/Deployment/VPS_SINGLE_DEPLOYMENT.md` - Добавлена критическая информация о Webhook
|
||||||
|
|
||||||
|
**Что изменилось:**
|
||||||
|
|
||||||
|
1. **Dropdown поездок:** Удалена статичная опция "Свой вариант без БВС"
|
||||||
|
- Теперь список содержит только активные поездки из `upcoming-trips.json`
|
||||||
|
- Пользователи по-прежнему могут предложить свой вариант через поле `bvs_number` (textarea)
|
||||||
|
|
||||||
|
2. **Условия участия:** Переформулировано для поездок без дронов
|
||||||
|
- **Было:** Две отдельные строки (подача заявки и обсуждение деталей)
|
||||||
|
- **Стало:** Одна строка - "Подача заявки: минимум за 2-3 дня до поездки через Telegram чат 'Пока ты спал'"
|
||||||
|
|
||||||
|
3. **GitHub Webhook - ВАЖНО:** Добавлена новая секция в инструкцию развертывания
|
||||||
|
- ⚠️ **КРИТИЧЕСКИЙ момент:** При смене домена ОБЯЗАТЕЛЬНО обновить Payload URL в GitHub webhook настройках
|
||||||
|
- Без обновления webhook URL автоматический deploy не будет работать
|
||||||
|
- Добавлены инструкции для тестирования webhook (делать изменение → push → проверить что обновилось на сайте)
|
||||||
|
- Добавлены инструкции для отладки если webhook не работает
|
||||||
|
|
||||||
|
**Тестирование:**
|
||||||
|
- Проверена работа webhook с новым доменом sleeptrip.ru
|
||||||
|
- ✅ Webhook работает корректно - сайт обновляется за несколько секунд после push на main ветку
|
||||||
|
|
||||||
|
**Коммиты:**
|
||||||
|
- `ea9ca59` - Remove 'Свой вариант без БВС' option from trip selection dropdown
|
||||||
|
- `21e00bf` - Update trips without drones section - combine submission and discussion into one line
|
||||||
|
- `d352bba` - Test webhook with new domain - check if auto deploy works
|
||||||
|
- `[следующий]` - Remove test marker, update deployment docs with webhook critical info
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-29] ВЕЧЕР - Полный Пакет Зеркалирования VPS и Автоматизации
|
||||||
|
|
||||||
|
### 🎉 ЗАВЕРШЕНО - БОЛЬШОЕ ОБНОВЛЕНИЕ
|
||||||
|
|
||||||
|
**Создан полный пакет для:**
|
||||||
|
- ✅ Зеркалирования VPS (production → testing)
|
||||||
|
- ✅ Автоматических бэкапов на S3 (еженедельно + ежедневно)
|
||||||
|
- ✅ Проверки целостности бэкапов (ежемесячно)
|
||||||
|
- ✅ Синхронизации тестового VPS (еженедельно)
|
||||||
|
- ✅ Мониторинга и оповещений по email
|
||||||
|
|
||||||
|
**Создано файлов:**
|
||||||
|
|
||||||
|
**Документация:**
|
||||||
|
- `INFO/mirror/00_START_HERE.md` - Быстрый старт (5 минут)
|
||||||
|
- `INFO/mirror/QUICK_START.md` - Полный гайд (30 мин)
|
||||||
|
- `INFO/mirror/TESTING_VPS_SETUP.md` - Подробный гайд (4-5 часов)
|
||||||
|
- `INFO/mirror/INDEX.md` - Полный обзор пакета
|
||||||
|
|
||||||
|
**Скрипты (2,663 строк кода):**
|
||||||
|
- `scripts/backup-to-s3.sh` - Полные + инкрементальные бэкапы (400 строк)
|
||||||
|
- `scripts/restore-from-s3.sh` - Восстановление из бэкапов (350 строк)
|
||||||
|
- `scripts/verify-backups.sh` - Проверка целостности (450 строк)
|
||||||
|
- `scripts/sync-vps-full.sh` - Синхронизация VPS (300 строк)
|
||||||
|
- `scripts/setup-backup-automation.sh` - Настройка cron (350 строк)
|
||||||
|
- `scripts/setup-git-workflow.sh` - Настройка git (350 строк)
|
||||||
|
- `scripts/install-all.sh` - Интерактивный установщик (600 строк)
|
||||||
|
- `scripts/.env.backup` - Шаблон конфигурации
|
||||||
|
|
||||||
|
**Расписание автоматизации:**
|
||||||
|
- 1:00 AM ежедневно (Пн-Сб) → Инкрементальный бэкап
|
||||||
|
- 2:00 AM по воскресеньям → Полный бэкап
|
||||||
|
- 1:00 AM 1-го числа → Проверка целостности
|
||||||
|
- 4:00 AM по пятницам → Синхронизация test VPS
|
||||||
|
|
||||||
|
**Возможности:**
|
||||||
|
- Полная автоматизация бэкапов (0 ручного вмешательства)
|
||||||
|
- 7 встроенных тестов для проверки целостности
|
||||||
|
- Email уведомления при ошибках
|
||||||
|
- Автоматическая ротация старых бэкапов (28-дневное хранение)
|
||||||
|
- Логирование всех операций
|
||||||
|
- Dry-run режим для тестирования
|
||||||
|
|
||||||
|
### Помощь с Конфигурацией
|
||||||
|
|
||||||
|
- ✅ Объяснено где находится конфиг почты (`.env` файлы и `/etc/msmtprc`)
|
||||||
|
- ✅ Объяснены правильные права доступа для msmtp:
|
||||||
|
- `/etc/msmtprc` → 640 root:mail (для доступа www-data через группу)
|
||||||
|
- `/var/www/forms/.env` → 600 www-data:www-data
|
||||||
|
- `/var/log/msmtp.log` → 666 root:root (логирование)
|
||||||
|
- ✅ Показано как проверить Telegram бота и API
|
||||||
|
- ✅ Проведена диагностика проблем с правами доступа
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-29] ДЕНЬ - Email через формы, Миграция на sleeptrip.ru
|
||||||
|
|
||||||
|
### Завершено
|
||||||
|
- ✅ **Email отправка через формы (КРИТИЧНЫЙ ФИкС)**
|
||||||
|
- Добавлена функция `send_email_notification()` в forms_helper.php
|
||||||
|
- Обновлены send_plan.php и send_ask.php для вызова функции
|
||||||
|
- **КРИТИЧНО:** www-data должен быть в группе `mail` для доступа к msmtp
|
||||||
|
```bash
|
||||||
|
sudo usermod -a -G mail www-data
|
||||||
|
sudo systemctl restart php8.3-fpm
|
||||||
|
```
|
||||||
|
- Настроен PHP error logging: `/var/log/php_errors.log`
|
||||||
|
- Формы теперь работают в 3 каналах: Email + Telegram + JSON
|
||||||
|
|
||||||
|
- ✅ **Календарь поездок обновлен**
|
||||||
|
- upcoming-trips.json: ноябрь/декабрь 2025 заменили сентябрь/октябрь
|
||||||
|
- last_updated: 2025-10-29
|
||||||
|
|
||||||
|
- ✅ **Миграция на основной домен sleeptrip.ru**
|
||||||
|
- config.toml: baseURL изменен на https://sleeptrip.ru/
|
||||||
|
- SSL сертификат получен через Let's Encrypt
|
||||||
|
- Сайт работает на production домене
|
||||||
|
- Nginx автоматически настроен через certbot
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
- **Права доступа www-data к msmtp**
|
||||||
|
- Проблема: mail() возвращал FALSE, письма не отправлялись
|
||||||
|
- Причина: www-data не мог читать /etc/msmtprc (группа mail)
|
||||||
|
- Решение: добавление www-data в группу mail
|
||||||
|
|
||||||
|
- **PHP error_log не работал**
|
||||||
|
- Добавлен error_log = /var/log/php_errors.log в php.ini
|
||||||
|
- Добавлен catch_workers_output = yes в pool.d/www.conf
|
||||||
|
- Создан файл лога с правами www-data:www-data
|
||||||
|
|
||||||
|
### Не решено
|
||||||
|
- ⚠️ **Шифрование PHP↔Python** - отложено
|
||||||
|
- Telegram бот по-прежнему не может расшифровать PHP-encrypted заявки
|
||||||
|
- Ошибка: "Padding is incorrect"
|
||||||
|
- Приоритет снижен, т.к. Email и Telegram уведомления работают
|
||||||
|
|
||||||
|
### Статус проекта
|
||||||
|
- Прогресс: ~80% (критичные компоненты работают, основной домен)
|
||||||
|
- Время затрачено: ~8 часов (текущая + предыдущие сессии)
|
||||||
|
- Осталось: ~2 часа (шифрование + добавление админа в бот)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-27] - Security Headers, Оптимизация фона, Отладка шифрования
|
||||||
|
|
||||||
|
### Завершено
|
||||||
|
- ✅ **Формы AJAX** - исправлены белые страницы
|
||||||
|
- Формы теперь возвращают JSON вместо HTTP redirect
|
||||||
|
- Обе формы (plan и ask) работают через AJAX без перезагрузки
|
||||||
|
- Убран тестовый текст из map.md
|
||||||
|
|
||||||
|
- ✅ **Security Headers** - добавлены 6 HTTP заголовков безопасности
|
||||||
|
- Базовые headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)
|
||||||
|
- HSTS (Strict-Transport-Security)
|
||||||
|
- CSP (Content-Security-Policy) в режиме Report-Only
|
||||||
|
- Создана документация: INFO/Deployment/SECURITY_HEADERS.md
|
||||||
|
- Добавлен раздел 3.7 в VPS_SINGLE_DEPLOYMENT.md
|
||||||
|
|
||||||
|
- ✅ **Оптимизация фона** - DESKTOP_NEW_1.jpg → WebP
|
||||||
|
- Размер: 4.5MB → 571KB (экономия 87%)
|
||||||
|
- Разрешение: 5418x3070 → 1920x1088
|
||||||
|
- Формат: JPG → WebP
|
||||||
|
- Ускорение загрузки страницы на 3-4 секунды
|
||||||
|
|
||||||
|
- ✅ **Документация ошибок** - создан ERRORS_COLLECTION.md
|
||||||
|
- 7 категорий ошибок при развертывании
|
||||||
|
- Git push problems
|
||||||
|
- S3 upload issues
|
||||||
|
- Telegram bot path issues
|
||||||
|
- Forms AJAX/redirect incompatibility
|
||||||
|
- .env file parsing bug
|
||||||
|
- Permission errors
|
||||||
|
- Script line endings
|
||||||
|
|
||||||
|
### В процессе
|
||||||
|
- ⚠️ **Шифрование PHP↔Python** - проблема остается
|
||||||
|
- Заявки сохраняются в `/var/secure/forms/*.json` ✅
|
||||||
|
- Ключи шифрования совпадают ✅
|
||||||
|
- `forms_helper.php` обновлен (openssl параметр 0) ✅
|
||||||
|
- PHP-FPM перезапущен ✅
|
||||||
|
- **Проблема:** Python выдает `Padding is incorrect` при расшифровке
|
||||||
|
- **План на завтра:** Тесты совместимости PHP/Python шифрования
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
- **Forms Git tracking** - формы добавлены в git
|
||||||
|
- Обновлен .gitignore: `forms/` → `forms/.env`
|
||||||
|
- Формы теперь версионируются в git
|
||||||
|
- `.env` файл защищен от коммита
|
||||||
|
- Автоматический deploy через webhook
|
||||||
|
|
||||||
|
- **.env parsing bug** - исправлена функция load_env_file()
|
||||||
|
- Проблема: Пробелы и inline комментарии не удалялись
|
||||||
|
- `FORMS_SEND_TELEGRAM=true # comment` читалось как `'true # comment'`
|
||||||
|
- Решение: Добавлен trim() после удаления комментариев
|
||||||
|
- Обновлен forms_helper.php (строки 22-24, 34)
|
||||||
|
|
||||||
|
- **Nginx configuration** - Security Headers в HTTPS блоке
|
||||||
|
- Заголовки добавлены в правильное место (port 443)
|
||||||
|
- Проверено через curl
|
||||||
|
- Работают все 4 базовых заголовка
|
||||||
|
|
||||||
|
### Добавлено
|
||||||
|
- **Скрипты permissions/** - набор скриптов для проверки прав
|
||||||
|
- `check-permissions.sh` - проверка прав доступа
|
||||||
|
- `fix-*.sh` - исправление прав для разных компонентов
|
||||||
|
- Автоматическая диагностика проблем
|
||||||
|
|
||||||
|
- **TOMORROW_PLAN.md** - подробный план на 2025-10-28
|
||||||
|
- 10 задач с приоритетами
|
||||||
|
- Критично: исправить шифрование PHP↔Python
|
||||||
|
- Добавить ноябрь/декабрь в поездки
|
||||||
|
- Форма с загрузкой файлов
|
||||||
|
- Кнопка "отметить рассмотренной" в боте
|
||||||
|
- Оптимизации: Font-display, Cache headers, Lazy loading
|
||||||
|
- SEO исправления
|
||||||
|
|
||||||
|
- **INFO/Deployment/.gitignore** - защита документации
|
||||||
|
- Разрешены только .md файлы в INFO/Deployment/
|
||||||
|
- Скрипты и другие файлы защищены
|
||||||
|
|
||||||
|
### Статус проекта
|
||||||
|
- Прогресс: ~75% (критичные компоненты работают)
|
||||||
|
- Время затрачено: ~6 часов (сегодняшняя сессия + предыдущие)
|
||||||
|
- Осталось: ~2 часа (шифрование + мелкие задачи)
|
||||||
|
|
||||||
|
### Следующие шаги (2025-10-28)
|
||||||
|
1. 🔥 **Критично:** Исправить шифрование PHP↔Python
|
||||||
|
2. Добавить ноябрь/декабрь в поездки
|
||||||
|
3. Исправить управление поездками в боте
|
||||||
|
4. Форма с загрузкой файлов (30 минут автоочистка)
|
||||||
|
5. Кнопка "отметить рассмотренной"
|
||||||
|
6. Font-display: swap
|
||||||
|
7. Cache headers в Nginx
|
||||||
|
8. Документация переноса домена
|
||||||
|
9. Оптимизация изображений (lazy load)
|
||||||
|
10. SEO исправления
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-25] - Исправление прав доступа, архитектуры и Telegram бота
|
||||||
|
|
||||||
|
### Критическое исправление Telegram бота
|
||||||
|
- **Git синхронизация не работала:**
|
||||||
|
- Проблема: `GIT_REPO_PATH = '/var/www/telegram-bot/ptp'` (hardcoded неправильный путь)
|
||||||
|
- Ошибка: `fatal: not a git repository (or any of the parent directories): .git`
|
||||||
|
- Решение: `GIT_REPO_PATH = os.getenv('GIT_REPO_PATH', '/var/www/hugo-source')`
|
||||||
|
- Результат: Git sync, создание постов, отображение постов теперь работают
|
||||||
|
|
||||||
|
- **Управление календарем поездок не работало:**
|
||||||
|
- Проблема: `TRIPS_JSON_PATH` использовал путь относительно telegram_bot.py
|
||||||
|
- Решение: `TRIPS_JSON_PATH = os.path.join(GIT_REPO_PATH, 'static', 'data', 'upcoming-trips.json')`
|
||||||
|
- Результат: Календарь корректно читается и обновляется
|
||||||
|
|
||||||
|
- **Обновление сайта после изменения календаря:**
|
||||||
|
- Добавлен автоматический git commit и push в функцию `handle_trips_update_site()`
|
||||||
|
- Теперь кнопка "Обновить сайт" делает: сохранение → commit → push → webhook → deploy
|
||||||
|
- Workflow аналогичен созданию постов
|
||||||
|
|
||||||
|
- **Файл:** `ptp/telegram/telegram_bot.py` (строки 36, 40, 1928-1978)
|
||||||
|
|
||||||
|
### Критическое исправление архитектуры
|
||||||
|
- **PHP формы перенесены в отдельную директорию:**
|
||||||
|
- Проблема: Формы в `/var/www/html/` удалялись Hugo при каждом deploy (`--cleanDestinationDir`)
|
||||||
|
- Решение: Создана отдельная директория `/var/www/forms/` для PHP форм
|
||||||
|
- Обновлен Nginx: добавлен location блок `/forms/` в этапе 3.1
|
||||||
|
- Обновлен этап 1.5: создание директории `/var/www/forms/`
|
||||||
|
- Обновлен этап 5.1: копирование форм в `/var/www/forms/`
|
||||||
|
- Обновлен этап 5.2: `.env` файл теперь в `/var/www/forms/.env`
|
||||||
|
- Обновлены все ссылки и комментарии в документации
|
||||||
|
- Преимущества: формы защищены от удаления, доступны через `https://domain.com/forms/send_plan.php`
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
- **Git dubious ownership error:** Исправлена критическая ошибка при работе webhook
|
||||||
|
- Проблема: Репозиторий принадлежал пользователю `ptp`, а deploy скрипт запускался от `www-data`
|
||||||
|
- Решение: Добавлена команда `sudo chown -R www-data:www-data /var/www/hugo-source`
|
||||||
|
- Обновлены разделы: 2.2 (клонирование), 3.4 (sudo права)
|
||||||
|
- Добавлен раздел в Troubleshooting
|
||||||
|
|
||||||
|
- **Permission denied для .env файла:** Исправлена ошибка при запуске Telegram бота
|
||||||
|
- Проблема: `.env` файл создавался от текущего пользователя, а бот работает от `www-data`
|
||||||
|
- Решение: Добавлены команды `chown www-data:www-data` в этап 4.3
|
||||||
|
- Добавлен раздел в Troubleshooting: "Permission denied: .env файл"
|
||||||
|
|
||||||
|
### Добавлено
|
||||||
|
- **Новый файл TODAY.md:**
|
||||||
|
- Быстрый ежедневный статус: на чем остановились, следующий шаг
|
||||||
|
- Важные исправления текущей сессии
|
||||||
|
- Полезные команды для VPS
|
||||||
|
- План на следующий раз
|
||||||
|
- Местоположение: `ptp/INFO/Deployment/TODAY.md`
|
||||||
|
|
||||||
|
- **Документация про заявки в Telegram боте:**
|
||||||
|
- Заявки сохраняются в `/var/secure/forms/` в зашифрованном виде
|
||||||
|
- ApplicationsReader расшифровывает и отображает их
|
||||||
|
- Поддерживает два типа: 'plan' (заявки на поездки) и 'ask' (вопросы)
|
||||||
|
- Требуется совпадение FORMS_ENCRYPTION_KEY в обоих .env файлах
|
||||||
|
- Меню бота: 📋 Заявки → Новые заявки / Все заявки / Статистика
|
||||||
|
|
||||||
|
- **Новый раздел "Важные концепции"** в начале документа
|
||||||
|
- Объяснение роли пользователя `www-data`
|
||||||
|
- Почему все компоненты используют единого пользователя
|
||||||
|
- Преимущества такого подхода
|
||||||
|
- Важные правила для .env файлов и репозитория
|
||||||
|
|
||||||
|
- **Расширенные пояснения про FORMS_ENCRYPTION_KEY:**
|
||||||
|
- Этап 4.3: зачем боту ключ шифрования форм
|
||||||
|
- Этап 5.2: как работает схема шифрования/расшифрования
|
||||||
|
- Важность совпадения ключей в обоих .env файлах
|
||||||
|
|
||||||
|
- **Новые разделы Troubleshooting:**
|
||||||
|
- "Git dubious ownership" - проблема прав репозитория
|
||||||
|
- "Permission denied: .env файл" - проблема прав конфигурации
|
||||||
|
|
||||||
|
### Обновлено
|
||||||
|
- **Скрипт 2.2-clone-repo.sh:** автоматически меняет владельца на www-data
|
||||||
|
- **Скрипт 3.3-setup-webhook-sudo.sh:** добавляет safe.directory и проверяет ошибки
|
||||||
|
- **Этап 2.2 (клонирование):** добавлены команды установки прав на репозиторий
|
||||||
|
- **Этап 3.4 (sudo права):** добавлены safe.directory и подсказки при ошибках
|
||||||
|
- **Этап 4.3 (.env для бота):**
|
||||||
|
- Добавлено объяснение важности www-data
|
||||||
|
- Автоматическая установка правильных прав на .env
|
||||||
|
- Инструкции по проверке прав после редактирования
|
||||||
|
|
||||||
|
### Завершено
|
||||||
|
- ✅ **ЭТАП 3: Nginx и SSL** полностью выполнен
|
||||||
|
- 3.1 Настройка Nginx (с location блоком `/forms/`)
|
||||||
|
- 3.2 Настройка DNS
|
||||||
|
- 3.3 Установка SSL сертификата
|
||||||
|
- 3.4 Настройка sudo прав для webhook (с фиксом ownership)
|
||||||
|
- 3.5 Создание лог файлов
|
||||||
|
- 3.6 Настройка GitHub Webhook
|
||||||
|
|
||||||
|
- ✅ **ЭТАП 4: Telegram Bot** полностью выполнен
|
||||||
|
- 4.1 Python окружение
|
||||||
|
- 4.2 Копирование файлов бота
|
||||||
|
- 4.3 Настройка .env для бота (с фиксом прав www-data)
|
||||||
|
- 4.4 Настройка Git для www-data
|
||||||
|
- 4.5 Создание Systemd сервиса
|
||||||
|
- 4.6 Тестирование бота
|
||||||
|
|
||||||
|
### Статус проекта
|
||||||
|
- Прогресс: ~70% (4 из 6 этапов + 5.1)
|
||||||
|
- Время затрачено: ~5.2 часа
|
||||||
|
- Осталось: ~2.3 часа
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-24] - Исправления и завершение Этапа 2
|
||||||
|
|
||||||
|
### Исправлено
|
||||||
|
- **Критическая ошибка путей:** Исправлены все упоминания `/var/www/hugo-source/ptp` на `/var/www/hugo-source`
|
||||||
|
- Обновлен VPS_SINGLE_DEPLOYMENT.md (9 упоминаний)
|
||||||
|
- Исправлены скрипты 2.3 и 2.4
|
||||||
|
- Причина: репозиторий клонируется напрямую в `hugo-source/`, Hugo файлы в корне
|
||||||
|
|
||||||
|
### Добавлено
|
||||||
|
- **Инструкции по получению токенов** в разделе "Подготовка перед началом":
|
||||||
|
- GitHub Personal Access Token - пошаговая инструкция
|
||||||
|
- Telegram Bot Token - через @BotFather
|
||||||
|
- Telegram User ID - через @userinfobot
|
||||||
|
- Предупреждения о безопасности токенов
|
||||||
|
- Ссылки на нужные страницы GitHub и Telegram
|
||||||
|
|
||||||
|
### Завершено
|
||||||
|
- ✅ **ЭТАП 2: Git и Hugo** полностью выполнен
|
||||||
|
- 2.1 Настройка Git
|
||||||
|
- 2.2 Клонирование репозитория
|
||||||
|
- 2.3 Первая сборка Hugo
|
||||||
|
- 2.4 Создание Deploy скрипта (с правильным путем)
|
||||||
|
- 2.5 Создание Webhook обработчика
|
||||||
|
|
||||||
|
### Статус проекта
|
||||||
|
- Прогресс: 33.3% (2 из 6 этапов)
|
||||||
|
- Время затрачено: ~2 часа
|
||||||
|
- Осталось: ~5.5 часов
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [2025-10-21] - Начальная версия
|
||||||
|
|
||||||
|
### Что было сделано
|
||||||
|
|
||||||
|
### 1. Добавлена поддержка российских почтовых сервисов
|
||||||
|
|
||||||
|
Теперь вы можете выбрать из трёх вариантов для отправки email:
|
||||||
|
|
||||||
|
- ✅ **Yandex** - рекомендуется для проектов в РФ (стабильная работа)
|
||||||
|
- ✅ **Gmail** - для международных проектов (может блокироваться в РФ)
|
||||||
|
- ✅ **Mail.ru** - российская альтернатива
|
||||||
|
|
||||||
|
**Обновлено в документации:**
|
||||||
|
- Чеклист подготовки ([VPS_SINGLE_DEPLOYMENT.md](VPS_SINGLE_DEPLOYMENT.md#L108-L111))
|
||||||
|
- Раздел 5.3 с тремя вариантами настройки ([VPS_SINGLE_DEPLOYMENT.md](VPS_SINGLE_DEPLOYMENT.md#L883-L1008))
|
||||||
|
- Таблица сравнения сервисов ([VPS_SINGLE_DEPLOYMENT.md](VPS_SINGLE_DEPLOYMENT.md#L1001-L1008))
|
||||||
|
|
||||||
|
### 2. Созданы автоматизированные bash-скрипты
|
||||||
|
|
||||||
|
Все 19 скриптов извлечены из документации и готовы к использованию:
|
||||||
|
|
||||||
|
#### ЭТАП 1: Базовая подготовка (5 скриптов)
|
||||||
|
- `1.1-initial-setup.sh` - Обновление системы
|
||||||
|
- `1.2-install-packages.sh` - Установка пакетов
|
||||||
|
- `1.3-install-hugo.sh` - Установка Hugo
|
||||||
|
- `1.4-setup-firewall.sh` - Настройка firewall
|
||||||
|
- `1.5-create-directories.sh` - Создание директорий
|
||||||
|
|
||||||
|
#### ЭТАП 2: Git и Hugo (5 скриптов)
|
||||||
|
- `2.1-setup-git.sh` - Настройка Git
|
||||||
|
- `2.2-clone-repo.sh` - Клонирование репозитория
|
||||||
|
- `2.3-build-hugo.sh` - Сборка Hugo
|
||||||
|
- `2.4-create-deploy-script.sh` - Deploy скрипт
|
||||||
|
- `2.5-create-webhook.sh` - GitHub webhook
|
||||||
|
|
||||||
|
#### ЭТАП 3: Nginx и SSL (4 скрипта)
|
||||||
|
- `3.1-setup-nginx.sh` - Настройка Nginx
|
||||||
|
- `3.2-setup-ssl.sh` - Установка SSL
|
||||||
|
- `3.3-setup-webhook-sudo.sh` - Sudo права
|
||||||
|
- `3.4-create-logs.sh` - Лог файлы
|
||||||
|
|
||||||
|
#### ЭТАП 5: Email (4 скрипта)
|
||||||
|
- `5.3a-setup-msmtp-gmail.sh` - Gmail
|
||||||
|
- `5.3b-setup-msmtp-yandex.sh` - Yandex ⭐
|
||||||
|
- `5.3c-setup-msmtp-mailru.sh` - Mail.ru
|
||||||
|
- `5.4-setup-php-msmtp.sh` - Настройка PHP
|
||||||
|
|
||||||
|
#### Мастер-скрипт
|
||||||
|
- `deploy-all.sh` - Автоматическое выполнение всех этапов
|
||||||
|
|
||||||
|
### 3. Реорганизована структура файлов
|
||||||
|
|
||||||
|
**Старая структура:**
|
||||||
|
```
|
||||||
|
ptp/INFO/
|
||||||
|
└── VPS_SINGLE_DEPLOYMENT.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Новая структура:**
|
||||||
|
```
|
||||||
|
ptp/INFO/Deployment/
|
||||||
|
├── README.md # Обзор и быстрый старт
|
||||||
|
├── VPS_SINGLE_DEPLOYMENT.md # Полная инструкция
|
||||||
|
├── CHANGES.md # Этот файл
|
||||||
|
└── scripts/ # Автоматизация
|
||||||
|
├── README.md
|
||||||
|
├── deploy-all.sh
|
||||||
|
└── [19 скриптов этапов]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Обновлена документация
|
||||||
|
|
||||||
|
**Добавлено:**
|
||||||
|
- Ссылки на скрипты в каждом разделе инструкции
|
||||||
|
- Блок "Автоматизация" в начале каждого этапа
|
||||||
|
- Три README файла с разным уровнем детализации
|
||||||
|
- Таблица сравнения почтовых сервисов
|
||||||
|
|
||||||
|
**Улучшено:**
|
||||||
|
- Чеклист подготовки теперь включает выбор email сервиса
|
||||||
|
- Инструкции по получению App Password для Yandex
|
||||||
|
- Описание лимитов и особенностей каждого сервиса
|
||||||
|
|
||||||
|
## Преимущества новой структуры
|
||||||
|
|
||||||
|
### Для разработчика
|
||||||
|
- ✅ Быстрое развертывание через `deploy-all.sh`
|
||||||
|
- ✅ Каждый скрипт можно запустить отдельно
|
||||||
|
- ✅ Интерактивные подсказки при выполнении
|
||||||
|
- ✅ Автоматическая проверка на ошибки (`set -e`)
|
||||||
|
|
||||||
|
### Для проекта в РФ
|
||||||
|
- ✅ Поддержка Yandex и Mail.ru
|
||||||
|
- ✅ Стабильная работа без зависимости от внешних сервисов
|
||||||
|
- ✅ Гибкий выбор почтового провайдера
|
||||||
|
|
||||||
|
### Для поддержки
|
||||||
|
- ✅ Код скриптов вынесен из документации
|
||||||
|
- ✅ Легко обновлять и тестировать
|
||||||
|
- ✅ Версионирование через Git
|
||||||
|
|
||||||
|
## Использование
|
||||||
|
|
||||||
|
### Быстрый старт (автоматически):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ptp/INFO/Deployment/scripts
|
||||||
|
./deploy-all.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пошаговое выполнение:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Этап 1
|
||||||
|
./1.1-initial-setup.sh
|
||||||
|
./1.2-install-packages.sh
|
||||||
|
# ... и так далее
|
||||||
|
|
||||||
|
# Этап 5 - выбрать один из вариантов
|
||||||
|
./5.3b-setup-msmtp-yandex.sh # Рекомендуется для РФ
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ручная установка:
|
||||||
|
|
||||||
|
Следуйте инструкциям в [VPS_SINGLE_DEPLOYMENT.md](VPS_SINGLE_DEPLOYMENT.md)
|
||||||
|
|
||||||
|
## Обратная совместимость
|
||||||
|
|
||||||
|
Все существующие инструкции остались в документации - можно выполнять вручную копируя команды.
|
||||||
|
|
||||||
|
Скрипты созданы на основе этих инструкций, поэтому результат идентичен.
|
||||||
|
|
||||||
|
## Следующие шаги
|
||||||
|
|
||||||
|
Возможные улучшения в будущем:
|
||||||
|
- [ ] Добавить скрипты для Этапа 4 (Telegram Bot)
|
||||||
|
- [ ] Создать скрипт полной проверки системы после развертывания
|
||||||
|
- [ ] Добавить скрипт резервного копирования
|
||||||
|
- [ ] Интеграция с CI/CD
|
||||||
|
|
||||||
|
## Миграция со старой версии
|
||||||
|
|
||||||
|
Если вы уже развернули систему по старой инструкции:
|
||||||
|
|
||||||
|
1. Скрипты **не требуются** - они для новых развертываний
|
||||||
|
2. Для добавления Yandex/Mail.ru вместо Gmail:
|
||||||
|
- Запустите `5.3b-setup-msmtp-yandex.sh` или
|
||||||
|
- Следуйте новому разделу 5.3 в документации
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Контакты:**
|
||||||
|
- Документация: [README.md](README.md)
|
||||||
|
- Полная инструкция: [VPS_SINGLE_DEPLOYMENT.md](VPS_SINGLE_DEPLOYMENT.md)
|
||||||
|
- Скрипты: [scripts/README.md](scripts/README.md)
|
||||||
@@ -0,0 +1,436 @@
|
|||||||
|
# 🐛 Коллекция ошибок при развертывании на VPS
|
||||||
|
|
||||||
|
**Документация всех проблем и решений при установке PTP на VPS**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Содержание
|
||||||
|
|
||||||
|
1. [Git Push Problems](#1-git-push-problems)
|
||||||
|
2. [S3 Upload Issues](#2-s3-upload-issues)
|
||||||
|
3. [Telegram Bot Path Issues](#3-telegram-bot-path-issues)
|
||||||
|
4. [Forms White Page (AJAX/Redirect)](#4-forms-white-page-ajaxredirect)
|
||||||
|
5. [.env File Parsing Bug](#5-env-file-parsing-bug)
|
||||||
|
6. [Permission Errors](#6-permission-errors)
|
||||||
|
7. [Script Line Endings](#7-script-line-endings)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Git Push Problems
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
```bash
|
||||||
|
fatal: The current branch main has no upstream branch.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
Локальная ветка `main` не связана с удалённой `github/main`.
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
```bash
|
||||||
|
git branch --set-upstream-to=github/main main
|
||||||
|
git pull --no-rebase
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
Всегда проверять связь веток перед первым push после клонирования.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. S3 Upload Issues
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
Telegram бот не может загружать фото на S3 REG.RU:
|
||||||
|
```
|
||||||
|
which aws
|
||||||
|
/usr/bin/aws
|
||||||
|
|
||||||
|
aws configure list
|
||||||
|
Name Value Type Location
|
||||||
|
---- ----- ---- --------
|
||||||
|
profile <not set> None None
|
||||||
|
access_key <not set> None None
|
||||||
|
secret_key <not set> None None
|
||||||
|
region <not set> None None
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
AWS CLI установлен, но не настроен. Пытались установить через pip3, но получили:
|
||||||
|
```
|
||||||
|
error: externally-managed-environment
|
||||||
|
```
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
Не использовать AWS CLI! Переключиться на **direct HTTP upload** метод:
|
||||||
|
```python
|
||||||
|
# В telegram_bot.py использовать:
|
||||||
|
upload_photo_direct() # вместо upload_photo_s3()
|
||||||
|
```
|
||||||
|
|
||||||
|
Этот метод использует только `requests` библиотеку и прямой HTTP PUT запрос к S3.
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
На Ubuntu 24.04+ pip установка блокируется по умолчанию. Лучше использовать HTTP API напрямую без CLI инструментов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Telegram Bot Path Issues
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
```python
|
||||||
|
fatal: not a git repository
|
||||||
|
```
|
||||||
|
Бот не может выполнить git команды.
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
В коде бота путь к репозиторию был захардкожен:
|
||||||
|
```python
|
||||||
|
GIT_REPO_PATH = '/var/www/hugo-site' # Неправильный путь!
|
||||||
|
```
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
Читать из `.env`:
|
||||||
|
```python
|
||||||
|
GIT_REPO_PATH = os.getenv('GIT_REPO_PATH', '/var/www/hugo-source')
|
||||||
|
TRIPS_JSON_PATH = os.path.join(GIT_REPO_PATH, 'static/data/upcoming-trips.json')
|
||||||
|
```
|
||||||
|
|
||||||
|
В `/var/www/telegram-bot/.env`:
|
||||||
|
```bash
|
||||||
|
GIT_REPO_PATH=/var/www/hugo-source
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
Никогда не хардкодить пути. Всегда использовать переменные окружения.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Forms White Page (AJAX/Redirect)
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
После отправки формы - **белая страница**, хотя POST данные приходят:
|
||||||
|
```
|
||||||
|
=== Request at 2025-10-27 15:02:32 ===
|
||||||
|
Array (
|
||||||
|
[name] => Test
|
||||||
|
[email] => test@test.com
|
||||||
|
...
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
**Несовместимость AJAX и HTTP redirect:**
|
||||||
|
|
||||||
|
JavaScript в `plan.md`:
|
||||||
|
```javascript
|
||||||
|
fetch('/forms/send_plan.php', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
.then(response => response.text())
|
||||||
|
.then(text => {
|
||||||
|
const data = JSON.parse(text); // Ожидает JSON!
|
||||||
|
...
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
PHP в `send_plan.php` (старая версия):
|
||||||
|
```php
|
||||||
|
header("Location: /plan/?success=" . urlencode($success)); // Редирект!
|
||||||
|
exit;
|
||||||
|
```
|
||||||
|
|
||||||
|
**fetch() API НЕ следует редиректам автоматически** → получает пустой ответ → белая страница!
|
||||||
|
|
||||||
|
### ✅ Решение (3 части)
|
||||||
|
|
||||||
|
**1. PHP - вернуть JSON вместо redirect:**
|
||||||
|
```php
|
||||||
|
// send_plan.php и send_ask.php
|
||||||
|
if (isset($success)) {
|
||||||
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'message' => $success
|
||||||
|
], JSON_UNESCAPED_UNICODE);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. HTML - привязать JavaScript обработчик к форме:**
|
||||||
|
```html
|
||||||
|
<form ... onsubmit="return handleFormSubmit(event)">
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Добавить fallback на случай если переменные не установлены:**
|
||||||
|
```php
|
||||||
|
// В конце send_plan.php перед ?>
|
||||||
|
if (!isset($success) && !isset($error)) {
|
||||||
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
echo json_encode(['success' => false, 'error' => 'Неизвестная ошибка обработки']);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
- AJAX формы **ВСЕГДА** должны возвращать JSON, не redirect
|
||||||
|
- Проверять что обработчик формы **привязан** через `onsubmit`
|
||||||
|
- История проблем важна - нашли решение в `CHANGELOG.md` от 2025-09-03!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. .env File Parsing Bug
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
Форма возвращает ошибку "Неизвестная ошибка обработки", хотя в `.env` установлено:
|
||||||
|
```bash
|
||||||
|
FORMS_SEND_TELEGRAM=true # Уведомления в Telegram
|
||||||
|
FORMS_NOTIFICATIONS=true # Push-уведомления
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверка настроек показывает:
|
||||||
|
```
|
||||||
|
Send telegram: false ❌
|
||||||
|
Notifications: false ❌
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
**Пробелы и комментарии в .env файле!**
|
||||||
|
|
||||||
|
При парсинге строки:
|
||||||
|
```bash
|
||||||
|
FORMS_SEND_TELEGRAM=true # Уведомления в Telegram
|
||||||
|
```
|
||||||
|
|
||||||
|
Функция `load_env_file()` сохраняет:
|
||||||
|
```php
|
||||||
|
$_ENV['FORMS_SEND_TELEGRAM'] = 'true # Уведомления в Telegram'
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Лишние символы!
|
||||||
|
```
|
||||||
|
|
||||||
|
Затем проверка:
|
||||||
|
```php
|
||||||
|
getenv('FORMS_SEND_TELEGRAM') === 'true' // FALSE!
|
||||||
|
// 'true # Уведомления...' !== 'true'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Видимость с `cat -A`:**
|
||||||
|
```bash
|
||||||
|
FORMS_SEND_TELEGRAM=true # M-PM-#M-PM-2...
|
||||||
|
^^^^^^^^ Пробелы!
|
||||||
|
```
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
|
||||||
|
**Метод 1: Исправить .env файл (быстро):**
|
||||||
|
```bash
|
||||||
|
# Убрать всё после # и лишние пробелы
|
||||||
|
sudo sed -i 's/=\(.*\)#.*/=\1/' /var/www/forms/.env
|
||||||
|
sudo sed -i 's/= */=/g' /var/www/forms/.env
|
||||||
|
sudo sed -i 's/ *$//g' /var/www/forms/.env
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```bash
|
||||||
|
FORMS_SEND_EMAIL=false
|
||||||
|
FORMS_SEND_TELEGRAM=true
|
||||||
|
FORMS_NOTIFICATIONS=true
|
||||||
|
```
|
||||||
|
|
||||||
|
**Метод 2: Улучшить load_env_file() (надёжно):**
|
||||||
|
```php
|
||||||
|
function load_env_file($file_path = '../.env') {
|
||||||
|
if (!file_exists($file_path)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$lines = file($file_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||||
|
foreach ($lines as $line) {
|
||||||
|
// Пропускаем комментарии
|
||||||
|
if (strpos(trim($line), '#') === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Убираем inline комментарии
|
||||||
|
if (strpos($line, '#') !== false) {
|
||||||
|
$line = substr($line, 0, strpos($line, '#'));
|
||||||
|
}
|
||||||
|
|
||||||
|
list($name, $value) = explode('=', $line, 2);
|
||||||
|
$name = trim($name);
|
||||||
|
$value = trim($value); // ← Важно! Убирает пробелы
|
||||||
|
|
||||||
|
if (!array_key_exists($name, $_SERVER) && !array_key_exists($name, $_ENV)) {
|
||||||
|
putenv(sprintf('%s=%s', $name, $value));
|
||||||
|
$_ENV[$name] = $value;
|
||||||
|
$_SERVER[$name] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
- **ВСЕГДА trim() значения** из .env файлов!
|
||||||
|
- Использовать `cat -A` для проверки невидимых символов
|
||||||
|
- .env формат не стандартизирован - парсить осторожно
|
||||||
|
- Эта проблема встречалась **ДВА раза**:
|
||||||
|
1. В начале октября - отступы в начале строк
|
||||||
|
2. Сегодня - пробелы перед комментариями
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Permission Errors
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
```bash
|
||||||
|
fatal: could not create work tree dir: Permission denied
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
Неправильные владельцы файлов. Telegram бот работает от `www-data`, но файлы принадлежат `root`.
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
```bash
|
||||||
|
# Git репозиторий
|
||||||
|
sudo chown -R www-data:www-data /var/www/hugo-source
|
||||||
|
|
||||||
|
# Формы
|
||||||
|
sudo chown -R www-data:www-data /var/www/forms
|
||||||
|
sudo chmod 600 /var/www/forms/.env
|
||||||
|
|
||||||
|
# Secure storage
|
||||||
|
sudo chown -R www-data:www-data /var/secure/forms
|
||||||
|
sudo chmod 700 /var/secure/forms
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
Всегда проверять кто запускает процесс (`systemctl status service | grep User`) и выставлять права соответственно.
|
||||||
|
|
||||||
|
**Создан набор скриптов:** `INFO/Deployment/permissions/*.sh`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Script Line Endings
|
||||||
|
|
||||||
|
### ❌ Проблема
|
||||||
|
```bash
|
||||||
|
./enable-forms-debug.sh
|
||||||
|
-bash: ./enable-forms-debug.sh: cannot execute: required file not found
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔍 Причина
|
||||||
|
**CRLF line endings** (Windows/Mac) вместо LF (Unix):
|
||||||
|
```bash
|
||||||
|
#!/bin/bash\r\n # ← \r\n вместо \n
|
||||||
|
```
|
||||||
|
|
||||||
|
Bash ищет интерпретатор `/bin/bash\r` который не существует!
|
||||||
|
|
||||||
|
### ✅ Решение
|
||||||
|
```bash
|
||||||
|
# Конвертировать в Unix формат
|
||||||
|
sed -i 's/\r$//' /var/www/enable-forms-debug.sh
|
||||||
|
|
||||||
|
# Или через dos2unix
|
||||||
|
sudo apt install dos2unix
|
||||||
|
dos2unix /var/www/enable-forms-debug.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📝 Урок
|
||||||
|
При создании скриптов на Mac/Windows для Linux:
|
||||||
|
- Использовать редактор с LF endings (не CRLF)
|
||||||
|
- Или конвертировать через `dos2unix` перед запуском
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Общие уроки
|
||||||
|
|
||||||
|
### 1. Документация критична
|
||||||
|
Создание `CHANGELOG.md` помогло найти решение для AJAX проблемы через 2 месяца!
|
||||||
|
|
||||||
|
### 2. Debug логи спасают
|
||||||
|
```php
|
||||||
|
file_put_contents("/tmp/debug.log", print_r($data, true), FILE_APPEND);
|
||||||
|
```
|
||||||
|
Помогли найти что POST данные приходят, но ответ пустой.
|
||||||
|
|
||||||
|
### 3. Системные инструменты
|
||||||
|
- `cat -A` - показывает невидимые символы
|
||||||
|
- `ls -la` - проверяет права
|
||||||
|
- `grep -n` - находит строки с номерами
|
||||||
|
- `curl -v` - тестирует HTTP запросы
|
||||||
|
|
||||||
|
### 4. Порядок проверки при пустом ответе PHP
|
||||||
|
1. ✅ POST данные приходят? → Debug лог
|
||||||
|
2. ✅ PHP ошибки? → `/var/log/php8.3-fpm.log`
|
||||||
|
3. ✅ Content-Type правильный? → `curl -I`
|
||||||
|
4. ✅ Переменные устанавливаются? → Debug перед выводом
|
||||||
|
5. ✅ .env загружается? → Тест парсинга
|
||||||
|
6. ✅ Значения правильные? → `cat -A` для невидимых символов
|
||||||
|
|
||||||
|
### 5. Git workflow важен
|
||||||
|
- Формы теперь в git → автоматический deploy через webhook
|
||||||
|
- `.env` защищён через `.gitignore`
|
||||||
|
- Версионирование всех изменений
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Статистика проблем
|
||||||
|
|
||||||
|
| Категория | Количество | Критичность |
|
||||||
|
|-----------|------------|-------------|
|
||||||
|
| **Права доступа** | 5 | Высокая |
|
||||||
|
| **Парсинг .env** | 2 | Критическая |
|
||||||
|
| **AJAX/HTTP** | 1 | Критическая |
|
||||||
|
| **Пути к файлам** | 3 | Средняя |
|
||||||
|
| **Line endings** | 1 | Низкая |
|
||||||
|
| **AWS CLI** | 1 | Средняя |
|
||||||
|
|
||||||
|
**Общее время на решение:** ~4 часа чистого времени отладки
|
||||||
|
|
||||||
|
**Самая долгая проблема:** Forms white page (2+ часа)
|
||||||
|
|
||||||
|
**Самая коварная:** .env пробелы (не видны глазом!)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Профилактика
|
||||||
|
|
||||||
|
### Перед развертыванием проверить:
|
||||||
|
|
||||||
|
1. **Права:**
|
||||||
|
```bash
|
||||||
|
./INFO/Deployment/permissions/check-permissions.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **.env файлы:**
|
||||||
|
```bash
|
||||||
|
cat -A .env | grep "=" # Проверить на пробелы
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Line endings скриптов:**
|
||||||
|
```bash
|
||||||
|
file script.sh # Должно быть "ASCII text", не "CRLF"
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Git remote:**
|
||||||
|
```bash
|
||||||
|
git remote -v
|
||||||
|
git branch -vv # Проверить upstream
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Формы AJAX:**
|
||||||
|
- Проверить `onsubmit` привязан
|
||||||
|
- PHP возвращает JSON
|
||||||
|
- JavaScript ожидает JSON
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Создано:** 2025-10-27
|
||||||
|
**Последнее обновление:** 2025-10-27
|
||||||
|
**Автор:** Собрано в процессе развертывания PTP на VPS
|
||||||
|
|
||||||
|
*Этот документ будет обновляться по мере обнаружения новых проблем.*
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
+++
|
||||||
|
title = '{{ replace .Name "-" " " | title }}'
|
||||||
|
slug = '{{ .Name }}'
|
||||||
|
date = "{{ .Date | dateFormat "2006-01-02T00:00:00" }}"
|
||||||
|
description = ''
|
||||||
|
+++
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
+++
|
||||||
|
title = '{{ replace .Name "-" " " | title }}'
|
||||||
|
slug = '{{ .Name }}'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/{{ .Name }}_1.jpg"
|
||||||
|
date = "{{ .Date | dateFormat "2006-01-02T00:00:00" }}"
|
||||||
|
description = ''
|
||||||
|
disqus_identifier = 0
|
||||||
|
+++
|
||||||
|
Текст поездки.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -1,34 +1,21 @@
|
|||||||
languageCode = "en-us"
|
|
||||||
title = "Massively"
|
|
||||||
baseURL = "https://hugo-theme-massively.netlify.com/"
|
|
||||||
theme = "hugo-theme-massively"
|
|
||||||
googleanalytics = ""
|
|
||||||
disqusShortname = ""
|
|
||||||
disableKinds = ["taxonomy", "taxonomyTerm", "section"]
|
|
||||||
|
|
||||||
|
# S3 Images Configuration
|
||||||
|
[markup]
|
||||||
|
[markup.goldmark]
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[security]
|
||||||
|
[security.http]
|
||||||
|
urls = ['.*']
|
||||||
|
|
||||||
# [params]
|
[caches]
|
||||||
# set below parameter to define a favicon
|
[caches.images]
|
||||||
# favicon = "favicon.ico"
|
dir = ':cacheDir/_gen'
|
||||||
# set to change date format
|
maxAge = '24h'
|
||||||
# dateFormat = "2.1.2006"
|
|
||||||
# backgroundPath = "images/bg.jpg"
|
|
||||||
|
|
||||||
# Below parameters can be set to override default post settings
|
[imaging]
|
||||||
# [params.posts]
|
quality = 85
|
||||||
# folderName = "post"
|
resampleFilter = 'lanczos'
|
||||||
# pageSize = "6"
|
anchor = 'smart'
|
||||||
# featuredPost = "true"
|
|
||||||
# paginationPages = 2
|
|
||||||
# showFirstLast = false
|
|
||||||
|
|
||||||
[languages]
|
|
||||||
[languages.en]
|
|
||||||
languageName = "English"
|
|
||||||
[languages.es]
|
|
||||||
languageName = "Español"
|
|
||||||
title = "Massively - Versión Español"
|
|
||||||
#[languages.fr]
|
|
||||||
# languageName = "Français"
|
|
||||||
# title = "Massively - Version Française"
|
|
||||||
|
|||||||
@@ -1,17 +1,23 @@
|
|||||||
languageCode = "en-us"
|
languageCode = "ru"
|
||||||
title = "Линия жизни"
|
defaultContentLanguage = "ru"
|
||||||
baseURL = "https://tiny-clafoutis-d77d29.netlify.app/"
|
title = "Пока ты спал"
|
||||||
|
baseURL = "https://sleeptrip.ru/"
|
||||||
theme = "hugo-theme-massively"
|
theme = "hugo-theme-massively"
|
||||||
googleanalytics = ""
|
googleanalytics = ""
|
||||||
disqusShortname = ""
|
disqusShortname = ""
|
||||||
disableKinds = ["taxonomy", "taxonomyTerm", "section"]
|
disableKinds = ["taxonomy", "term"]
|
||||||
|
|
||||||
|
[markup]
|
||||||
|
[markup.goldmark]
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
# set below parameter to define a favicon
|
# set below parameter to define a favicon
|
||||||
favicon = "favicon.ico"
|
favicon = "https://s3.regru.cloud/sleeptrip-dev/images/favicon.ico"
|
||||||
# set to change date format
|
# set to change date format
|
||||||
# dateFormat = "2.1.2006"
|
dateFormat = "2 January 2006"
|
||||||
backgroundPath = "images/Desktop_new.jpg"
|
backgroundPath = "images/desktop.webp"
|
||||||
|
|
||||||
# Below parameters can be set to override default post settings
|
# Below parameters can be set to override default post settings
|
||||||
# [params.posts]
|
# [params.posts]
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
languageCode = "ru"
|
||||||
|
defaultContentLanguage = "ru"
|
||||||
|
title = "Пока ты спал"
|
||||||
|
baseURL = "https://cyberiya.site/"
|
||||||
|
theme = "hugo-theme-massively"
|
||||||
|
googleanalytics = ""
|
||||||
|
disqusShortname = ""
|
||||||
|
disableKinds = ["taxonomy", "term"]
|
||||||
|
|
||||||
|
[markup]
|
||||||
|
[markup.goldmark]
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[params]
|
||||||
|
# set below parameter to define a favicon
|
||||||
|
favicon = "images/favicon.ico"
|
||||||
|
# set to change date format
|
||||||
|
dateFormat = "2 January 2006"
|
||||||
|
backgroundPath = "images/DESKTOP_NEW_1.jpg"
|
||||||
|
|
||||||
|
# Below parameters can be set to override default post settings
|
||||||
|
# [params.posts]
|
||||||
|
# folderName = "post"
|
||||||
|
# pageSize = "6"
|
||||||
|
# featuredPost = true
|
||||||
|
# paginationPages = 2
|
||||||
|
# showFirstLast = false
|
||||||
|
|
||||||
|
# [languages]
|
||||||
|
# [languages.en]
|
||||||
|
# languageName = "English"
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -1,81 +1,201 @@
|
|||||||
+++
|
+++
|
||||||
title = 'Спросить'
|
title = 'Хочу поехать'
|
||||||
slug = 'ask'
|
slug = 'ask'
|
||||||
disableComments = true
|
disableComments = true
|
||||||
+++
|
+++
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<p class="page-lead">Есть вопрос или хотите предложить маршрут — напишите нам. <a href="/plan/">Смотреть календарь поездок →</a></p>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<details>
|
<div class="contact-form-container">
|
||||||
<summary>Как забронировать места и оплатить тур?</summary>
|
<!-- Сообщения об успехе/ошибке -->
|
||||||
<p><b>1. Отправить заявку</p></b>
|
<script>
|
||||||
<p>Посмотрите туры в нашем каталоге выберите подходящий вариант, куда бы вы хотели поехать.
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
Если у вас возникли вопросы или затрудняетесь в выборе, можете обратиться к менеджерам: через онлайн консультант, мессенджеры, позвонить по бесплатному номеру 8 (929) 304-99-09, или написать нам на почту info@altai-exp.ru
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
После того как уточнили все детали, на странице каждого тура есть расписание. Можете выбрать удобные даты, которые подходят вам и отправить заявку.</p>
|
const success = urlParams.get('success');
|
||||||
|
const error = urlParams.get('error');
|
||||||
|
|
||||||
<p><b>2. Укажите личные данные</p></b>
|
if (success) {
|
||||||
<p>В обратном письме с подтверждением бронирования менеджер пришлет форму, которую необходимо заполнить. Информацию обо всех участниках тура: паспортные данные (для оформления документов, пропусков и страховки). Личные данные: (размер одежды, опыт, ограничения по питанию, особенность размещения и т.д.) необходимы для подбора снаряжения, бронирования номеров в гостиницах, безопасности в путешествии.</p>
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-success';
|
||||||
|
messageDiv.textContent = success;
|
||||||
|
document.querySelector('.contact-form-container').insertBefore(messageDiv, document.querySelector('.contact-form'));
|
||||||
|
}
|
||||||
|
|
||||||
<p><b>3. Оплата тура</p></b>
|
if (error) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-error';
|
||||||
|
messageDiv.textContent = error;
|
||||||
|
document.querySelector('.contact-form-container').insertBefore(messageDiv, document.querySelector('.contact-form'));
|
||||||
|
}
|
||||||
|
|
||||||
<p>После получения ваших данных мы подготовим договор и все необходимые документы. Далее необходимо внести предоплату - 30% на туры с проживанием в палатках и 50% на туры с проживанием в гостиницах и домиках.
|
// Русские сообщения валидации
|
||||||
Почему берем предоплату?
|
const inputs = document.querySelectorAll('input[required], select[required], textarea[required]');
|
||||||
Мы начинаем подготовку к туру заранее: подбираем снаряжение, готовим транспорт, лошадей, закупаем продукты, договариваемся с тур стоянками, кемпингами, бронируем номера в гостиницах. (Достойных вариантов проживания высокогорных районах не так уж и много, поэтому договариваемся заранее).</p>
|
inputs.forEach(function(input) {
|
||||||
|
input.addEventListener('invalid', function() {
|
||||||
|
if (input.type === 'checkbox') {
|
||||||
|
input.setCustomValidity('Пожалуйста, отметьте этот пункт для продолжения');
|
||||||
|
} else if (input.type === 'email') {
|
||||||
|
input.setCustomValidity('Пожалуйста, введите корректный email адрес');
|
||||||
|
} else if (input.tagName === 'SELECT') {
|
||||||
|
input.setCustomValidity('Пожалуйста, выберите один из вариантов');
|
||||||
|
} else {
|
||||||
|
input.setCustomValidity('Пожалуйста, заполните это поле');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
<p><b>Как оплатить?</p></b>
|
input.addEventListener('input', function() {
|
||||||
|
input.setCustomValidity('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
<p>Оплатить можно любым удобным способом:
|
// Загружаем скрипт шифрования
|
||||||
- Через интернет (пришлем ссылку на форму оплаты)
|
const script = document.createElement('script');
|
||||||
- Переводом на расчетный счет по квитанции
|
script.src = '/js/encryption.js';
|
||||||
После того как предоплата поступит, вы получите подтверждение бронирования.</p>
|
script.onload = function() {};
|
||||||
|
script.onerror = function() {};
|
||||||
|
document.head.appendChild(script);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Обработчик отправки формы
|
||||||
|
function handleFormSubmit(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
const form = event.target;
|
||||||
|
const formData = new FormData(form);
|
||||||
|
const submitBtn = form.querySelector('.submit-btn');
|
||||||
|
|
||||||
|
// Показываем состояние загрузки
|
||||||
|
submitBtn.textContent = 'Отправляем...';
|
||||||
|
submitBtn.disabled = true;
|
||||||
|
|
||||||
|
fetch('/forms/send_ask.php', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
return response.text();
|
||||||
|
})
|
||||||
|
.then(text => {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(text);
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error('Сервер вернул не JSON: ' + text.substring(0, 100));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
if (data.success) {
|
||||||
|
// Успех
|
||||||
|
const successDiv = document.createElement('div');
|
||||||
|
successDiv.className = 'form-message form-success';
|
||||||
|
successDiv.textContent = data.message;
|
||||||
|
form.parentNode.insertBefore(successDiv, form);
|
||||||
|
form.reset();
|
||||||
|
} else {
|
||||||
|
// Ошибка
|
||||||
|
const errorDiv = document.createElement('div');
|
||||||
|
errorDiv.className = 'form-message form-error';
|
||||||
|
errorDiv.textContent = data.error;
|
||||||
|
form.parentNode.insertBefore(errorDiv, form);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// Ошибка сети
|
||||||
|
const errorDiv = document.createElement('div');
|
||||||
|
errorDiv.className = 'form-message form-error';
|
||||||
|
errorDiv.textContent = 'Ошибка отправки формы. Попробуйте еще раз.';
|
||||||
|
form.parentNode.insertBefore(errorDiv, form);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
// Восстанавливаем кнопку
|
||||||
|
submitBtn.textContent = 'Отправить вопрос';
|
||||||
|
submitBtn.disabled = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="contact-form" action="/forms/send_ask.php" method="POST" onsubmit="return handleFormSubmit(event)">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Ваше имя *</label>
|
||||||
|
<input type="text" id="name" name="name" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">Email</label>
|
||||||
|
<input type="email" id="email" name="email" placeholder="ivan@mail.ru">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="telegram">Ник в Telegram</label>
|
||||||
|
<input type="text" id="telegram" name="telegram" placeholder="@ваш_ник">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-note">
|
||||||
|
<p>Укажите email или Telegram ник (одно из двух обязательно)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="subject">Тема *</label>
|
||||||
|
<select id="subject" name="subject" required>
|
||||||
|
<option value="" disabled selected></option>
|
||||||
|
<option value="работа сайта">Работа сайта</option>
|
||||||
|
<option value="запланированные мероприятия">Запланированные мероприятия</option>
|
||||||
|
<option value="пройденные маршруты">Пройденные маршруты</option>
|
||||||
|
<option value="условия участия">Условия участия</option>
|
||||||
|
<option value="условия сотрудничества">Условия сотрудничества</option>
|
||||||
|
<option value="хочу предложить поездку">Предложить поездку</option>
|
||||||
|
<option value="контакты для связи">Контакты для связи</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="message">Ваш вопрос *</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Задайте ваш вопрос или предложите свою идею для поездки..." required></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-group checkbox-group">
|
||||||
|
<label class="checkbox-container">
|
||||||
|
<input type="checkbox" id="privacy_consent" name="privacy_consent" required>
|
||||||
|
<span class="checkmark"></span>
|
||||||
|
<span class="privacy-text">
|
||||||
|
Я согласен на обработку персональных данных в соответствии с ФЗ №152 <sup class="fn">1</sup>
|
||||||
|
<div class="privacy-details">
|
||||||
|
<p>Данные будут обрабатываться для ответа на ваш вопрос.</p>
|
||||||
|
<p>Согласие действует 1 месяц. Отзыв согласия: <a href="mailto:sleep-trip@ya.ru">sleep-trip@ya.ru</a></p>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="submit-btn">
|
||||||
|
Отправить вопрос
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<details class="legal-details">
|
||||||
|
<summary><sup class="fn">1</sup> Постановка «галочки» в чекбоксе является подтверждением вашего согласия — читать полный текст (ФЗ №152)</summary>
|
||||||
|
<div class="legal-text">
|
||||||
|
<p>Заполнение «чек-бокса» (проставление «галочки»/«веб-метки» на сайте sleeptrip.ru в графе «Я согласен на обработку персональных данных») и нажатие соответствующей кнопки и (или) направление персональных данных (фамилия, имя, телефон, имя (ник) в Телеграм) в ответном письме на адрес: sleep-trip@ya.ru является подтверждением Вашего согласия на обработку персональных данных либо с целью получения разрешения на полёты беспилотного воздушного судна (БВС), либо с целью ответа на вопрос, заданный на сайте sleeptrip.ru.</p>
|
||||||
|
<p>Предоставленные персональные данные будут обрабатываться в соответствии с положениями Федерального закона Российской Федерации №152-ФЗ от 27.07.2006 «О персональных данных».</p>
|
||||||
|
<p>Заявление об уточнении персональных данных, отзыве настоящего согласия может быть направлено по электронной почте по адресу: <a href="mailto:sleep-trip@ya.ru">sleep-trip@ya.ru</a>.</p>
|
||||||
|
<p>Я выражаю свое согласие на обработку, включая: сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (предоставление, доступ), блокирование, обезличивание, удаление, уничтожение, своих персональных данных (в случае предоставления мной) Оператору (владельцу сайта sleeptrip.ru) для целей:</p>
|
||||||
|
<ul>
|
||||||
|
<li>обеспечения получения разрешения на полёты БВС и направления мне информационных сообщений о статусе получения такого разрешения;</li>
|
||||||
|
<li>ответа на вопрос, заданный на сайте sleeptrip.ru.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Я согласен и разрешаю Оператору обрабатывать мои персональные данные с использованием средств автоматизации или без использования таких средств (смешанная обработка).</p>
|
||||||
|
<p>Я согласен с тем, что мои персональные данные будут переданы третьим лицам – Единой системе организации воздушного движения, сервису «Небосвод» (skyarc.ru) или сервису СППИ (sppi.ivprf.ru), а также сотрудникам полиции (в случае взаимодействия с ними на местности) для реализации целей обработки персональных данных — получения разрешения на полёты БВС. Без передачи данных указанным организациям реализация целей обработки персональных данных будет невозможна.</p>
|
||||||
|
<p>Настоящее Согласие действует до момента достижения целей обработки или отзыва согласия на обработку, но не более 1 (одного) месяца с момента предоставления Согласия.</p>
|
||||||
|
</div>
|
||||||
</details>
|
</details>
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<details>
|
|
||||||
<summary>Можно ли вернуть деньги, если у вас не получается поехать?</summary>
|
|
||||||
<p>Возможны следующие варианты:</p>
|
|
||||||
|
|
||||||
1. Перенос поездки на другие даты
|
|
||||||
Можем перенести на другие даты при условии свободных мест. К сожалению, в таком случае могут возникнуть издержки: аренда лошадей, бронь гостиниц, страховка. Эту сумму мы не сможем вернуть (Будет зависеть от сроков аннуляции и переноса на новые
|
|
||||||
даты).
|
|
||||||
|
|
||||||
2. Возможность переоформить на другого человека.
|
|
||||||
Такой вариант возможен, необходимо заполнить форму на того кто поедет вместо вас.
|
|
||||||
|
|
||||||
3. Отмена и возврат.Чтобы вернуть сумму, необходимо написать заявление на возврат. Сумма возврата будет зависеть от периода аннуляции, за месяц до поездки вернем всю сумму. Чем ближе к дате начала тура, тем меньше возврат (удерживается сумма прямых понесенных расходов: бронь гостиниц, страховка, аренда транспорта и т.д.)
|
|
||||||
</details>
|
|
||||||
{{< /rawhtml >}}
|
|
||||||
|
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<details>
|
|
||||||
<summary>Есть гарантии, что тур не отменится?</summary>
|
|
||||||
Наш тур состоится при любом количестве участников. Даже если вы будете один, тур не отменится.
|
|
||||||
|
|
||||||
После бронирования и оплаты стоимость тура не увеличится, даже если вы забронируете тур за полгода.
|
|
||||||
</details>
|
|
||||||
{{< /rawhtml >}}
|
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<p></p>
|
|
||||||
<p>Если у вас есть эксклюзивный вопрос, напишите его ниже и нажмите Отправить. Мы вам с радостью ответим!</p>
|
|
||||||
{{< /rawhtml >}}
|
|
||||||
<style>
|
|
||||||
form{
|
|
||||||
background-color:#ffffff;
|
|
||||||
width:70%;
|
|
||||||
margin:0 auto;
|
|
||||||
padding:15px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<form action="/" method="post">
|
|
||||||
<fieldset>
|
|
||||||
<legend>Если у вас есть эксклюзивный вопрос, напишите его ниже и нажмите Отправить. Мы вам с радостью ответим!</legend>
|
|
||||||
<label> Ваше имя: <input type="text" placeholder="Имя"></input></label>
|
|
||||||
<label> Ваш email: <input type="email" placeholder="Email"></input></label>
|
|
||||||
<label>Текст сообщения:</label>
|
|
||||||
<label><textarea placeholder="Введите ваше сообщение"></textarea><label>
|
|
||||||
<label><button type="submit">Отправить</button> <button type="reset">Очистить</button></label>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
@@ -1,25 +1,141 @@
|
|||||||
+++
|
+++
|
||||||
title = 'Найти попутчика'
|
title = 'Планирование поездки (старый)'
|
||||||
slug = 'extra'
|
slug = 'plan-old'
|
||||||
# image = 'images/pic02.jpg'
|
# image = "https://s3.regru.cloud/sleeptrip-dev/images/pic02.jpg"
|
||||||
# description = 'здесь можно добавить подпись'
|
# description = 'здесь можно добавить подпись'
|
||||||
disableComments = false
|
disableComments = true
|
||||||
+++
|
+++
|
||||||
|
|
||||||
Предстоящие поездки
|
|
||||||
|
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<div data-tockify-component="mini" data-tockify-calendar="testcalendar1111tqtq">
|
<!-- Старый Tockify календарь - больше не используется -->
|
||||||
|
<!-- Новый календарь теперь в /plan -->
|
||||||
|
<div style="text-align: center; padding: 40px; background: #f8f9fa; border-radius: 8px; margin: 20px 0;">
|
||||||
|
<h3>Календарь перенесен</h3>
|
||||||
|
<p>Новый календарь поездок находится на странице <a href="/plan/">/plan</a></p>
|
||||||
</div>
|
</div>
|
||||||
<script data-cfasync="false" data-tockify-script="embed" src="https://public.tockify.com/browser/embed.js">
|
|
||||||
</script>
|
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
## Как забронировать поездку
|
||||||
|
|
||||||
Заполните, пожалуйста, форму ниже
|
Выберите подходящую поездку из календаря выше и заполните форму ниже:
|
||||||
|
|
||||||
|
### 🚁 Поездки с полётами на дронах
|
||||||
|
- **Бронирование**: минимум за **7 дней** до поездки
|
||||||
|
- **Обсуждение деталей**: [Telegram @polet_bvs](https://t.me/polet_bvs)
|
||||||
|
|
||||||
|
### 🚗 Обычные поездки
|
||||||
|
- **Бронирование**: минимум за **2-3 дня** до поездки
|
||||||
|
- **Свои предложения**: направление, даты, профиль попутчиков
|
||||||
|
- **Обсуждение деталей**: [Telegram @sleeptrip_rec](https://t.me/sleeptrip_rec)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ⚠️ Важная информация
|
||||||
|
|
||||||
|
- **Время выезда**: рано утром (5-6 утра из Москвы) для избежания пробок
|
||||||
|
- **Проверьте папку "Спам"**: ответные письма могут попадать в нежелательную почту
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<script src="https://yastatic.net/s3/frontend/forms/_/embed.js"></script><iframe src="https://forms.yandex.ru/cloud/6432870af47e7316f74a425d/?iframe=1" frameborder="0" name="ya-form-6432870af47e7316f74a425d" width="350"></iframe>
|
<div class="travel-form-container">
|
||||||
|
<!-- Сообщения об успехе/ошибке -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const success = urlParams.get('success');
|
||||||
|
const error = urlParams.get('error');
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-success';
|
||||||
|
messageDiv.textContent = success;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-error';
|
||||||
|
messageDiv.textContent = error;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Русские сообщения валидации
|
||||||
|
const inputs = document.querySelectorAll('input[required], select[required], textarea[required]');
|
||||||
|
inputs.forEach(function(input) {
|
||||||
|
input.addEventListener('invalid', function() {
|
||||||
|
if (input.type === 'checkbox') {
|
||||||
|
input.setCustomValidity('Пожалуйста, отметьте этот пункт для продолжения');
|
||||||
|
} else if (input.type === 'email') {
|
||||||
|
input.setCustomValidity('Пожалуйста, введите корректный email адрес');
|
||||||
|
} else if (input.tagName === 'SELECT') {
|
||||||
|
input.setCustomValidity('Пожалуйста, выберите один из вариантов');
|
||||||
|
} else {
|
||||||
|
input.setCustomValidity('Пожалуйста, заполните это поле');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
input.addEventListener('input', function() {
|
||||||
|
input.setCustomValidity('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="travel-form" action="/send_plan.php" method="POST">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Имя *</label>
|
||||||
|
<input type="text" id="name" name="name" placeholder="Введите Ваше имя" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">E-mail *</label>
|
||||||
|
<input type="email" id="email" name="email" placeholder="Введите Ваш email" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="phone">Телефон (необязательно)</label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="Введите телефон">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="bvs_number">Дополнительная информация<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Учётный номер БВС или свой вариант поездки</small></label>
|
||||||
|
<textarea id="bvs_number" name="bvs_number" placeholder="Например: номер дрона, направление, даты или особые пожелания"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="trip_period">Выберите поездку</label>
|
||||||
|
<select id="trip_period" name="trip_period" style="background: white; color: #000; font-size: 16px; padding: 15px; border: 1px solid #ccc; width: 100%; appearance: none; background-image: url('data:image/svg+xml;utf8,<svg fill=\"black\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 10l5 5 5-5z\"/></svg>'); background-repeat: no-repeat; background-position: right 10px center; background-size: 20px;">
|
||||||
|
<option value="" style="color: #000;">Нажмите чтобы выбрать поездку</option>
|
||||||
|
<option value="Август 2025 (с дронами)" style="color: #000;">Август 2025 (с дронами)</option>
|
||||||
|
<option value="Сентябрь 2025 (с дронами)" style="color: #000;">Сентябрь 2025 (с дронами)</option>
|
||||||
|
<option value="Октябрь 2025 (с дронами)" style="color: #000;">Октябрь 2025 (с дронами)</option>
|
||||||
|
<option value="Свой вариант" style="color: #000;">Свой вариант</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="checkbox-label" style="display: flex; align-items: flex-start; font-weight: 400; padding: 0.75rem; border-radius: 8px; transition: all 0.3s ease; cursor: pointer; border: 1px solid #e1e5e9; position: relative;">
|
||||||
|
<input type="checkbox" name="consent" value="agree" required style="width: 18px; height: 18px; margin-right: 0.75rem; margin-top: 0.2rem; accent-color: #27ae60; cursor: pointer;">
|
||||||
|
<span style="cursor: pointer; user-select: none; line-height: 1.5;">
|
||||||
|
Согласие на обработку персональных данных<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Разрешаю использовать мои данные для оформления заявки</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="checkbox-label" style="display: flex; align-items: flex-start; font-weight: 400; padding: 0.75rem; border-radius: 8px; transition: all 0.3s ease; cursor: pointer; border: 1px solid #e1e5e9; position: relative;">
|
||||||
|
<input type="checkbox" name="age_confirm" value="18+" required style="width: 18px; height: 18px; margin-right: 0.75rem; margin-top: 0.2rem; accent-color: #27ae60; cursor: pointer;">
|
||||||
|
<span style="cursor: pointer; user-select: none; line-height: 1.5;">
|
||||||
|
Подтверждение совершеннолетия<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Мне исполнилось 18 лет</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="submit-btn">
|
||||||
|
Отправить
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
+++
|
||||||
|
title = 'Планирование поездки'
|
||||||
|
slug = 'plan'
|
||||||
|
# image = 'images/pic02.jpg'
|
||||||
|
# description = 'здесь можно добавить подпись'
|
||||||
|
disableComments = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div data-tockify-component="calendar" data-tockify-calendar="sleeptrip.calendar">
|
||||||
|
</div>
|
||||||
|
<script data-cfasync="false" data-tockify-script="embed" src="https://public.tockify.com/browser/embed.js">
|
||||||
|
</script>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
## Как забронировать поездку
|
||||||
|
|
||||||
|
Выберите подходящую поездку из календаря выше и заполните форму ниже:
|
||||||
|
|
||||||
|
### 🚁 Поездки с полётами на дронах
|
||||||
|
- **Бронирование**: минимум за **7 дней** до поездки
|
||||||
|
- **Обсуждение деталей**: [Telegram @polet_bvs](https://t.me/polet_bvs)
|
||||||
|
|
||||||
|
### 🚗 Обычные поездки
|
||||||
|
- **Бронирование**: минимум за **2-3 дня** до поездки
|
||||||
|
- **Свои предложения**: направление, даты, профиль попутчиков
|
||||||
|
- **Обсуждение деталей**: [Telegram @sleeptrip_rec](https://t.me/sleeptrip_rec)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ⚠️ Важная информация
|
||||||
|
|
||||||
|
- **Время выезда**: рано утром (5-6 утра из Москвы) для избежания пробок
|
||||||
|
- **Проверьте папку "Спам"**: ответные письма могут попадать в нежелательную почту
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="travel-form-container">
|
||||||
|
<!-- Сообщения об успехе/ошибке -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const success = urlParams.get('success');
|
||||||
|
const error = urlParams.get('error');
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-success';
|
||||||
|
messageDiv.textContent = success;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-error';
|
||||||
|
messageDiv.textContent = error;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Русские сообщения валидации
|
||||||
|
const inputs = document.querySelectorAll('input[required], select[required], textarea[required]');
|
||||||
|
inputs.forEach(function(input) {
|
||||||
|
input.addEventListener('invalid', function() {
|
||||||
|
if (input.type === 'checkbox') {
|
||||||
|
input.setCustomValidity('Пожалуйста, отметьте этот пункт для продолжения');
|
||||||
|
} else if (input.type === 'email') {
|
||||||
|
input.setCustomValidity('Пожалуйста, введите корректный email адрес');
|
||||||
|
} else if (input.tagName === 'SELECT') {
|
||||||
|
input.setCustomValidity('Пожалуйста, выберите один из вариантов');
|
||||||
|
} else {
|
||||||
|
input.setCustomValidity('Пожалуйста, заполните это поле');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
input.addEventListener('input', function() {
|
||||||
|
input.setCustomValidity('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="travel-form" action="/send_plan.php" method="POST">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Имя *</label>
|
||||||
|
<input type="text" id="name" name="name" placeholder="Введите Ваше имя" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">E-mail *</label>
|
||||||
|
<input type="email" id="email" name="email" placeholder="Введите Ваш email" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="phone">Телефон (необязательно)</label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="Введите телефон">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="bvs_number">Дополнительная информация<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Учётный номер БВС или свой вариант поездки</small></label>
|
||||||
|
<textarea id="bvs_number" name="bvs_number" placeholder="Например: номер дрона, направление, даты или особые пожелания"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="trip_period">Выберите поездку</label>
|
||||||
|
<select id="trip_period" name="trip_period" style="background: white; color: #000; font-size: 16px; padding: 15px; border: 1px solid #ccc; width: 100%; appearance: none; background-image: url('data:image/svg+xml;utf8,<svg fill=\"black\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 10l5 5 5-5z\"/></svg>'); background-repeat: no-repeat; background-position: right 10px center; background-size: 20px;">
|
||||||
|
<option value="" style="color: #000;">Нажмите чтобы выбрать поездку</option>
|
||||||
|
<option value="Август 2025 (с дронами)" style="color: #000;">Август 2025 (с дронами)</option>
|
||||||
|
<option value="Сентябрь 2025 (с дронами)" style="color: #000;">Сентябрь 2025 (с дронами)</option>
|
||||||
|
<option value="Октябрь 2025 (с дронами)" style="color: #000;">Октябрь 2025 (с дронами)</option>
|
||||||
|
<option value="Свой вариант" style="color: #000;">Свой вариант</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="checkbox-label" style="display: flex; align-items: flex-start; font-weight: 400; padding: 0.75rem; border-radius: 8px; transition: all 0.3s ease; cursor: pointer; border: 1px solid #e1e5e9; position: relative;">
|
||||||
|
<input type="checkbox" name="consent" value="agree" required style="width: 18px; height: 18px; margin-right: 0.75rem; margin-top: 0.2rem; accent-color: #27ae60; cursor: pointer;">
|
||||||
|
<span style="cursor: pointer; user-select: none; line-height: 1.5;">
|
||||||
|
Согласие на обработку персональных данных<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Разрешаю использовать мои данные для оформления заявки</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="checkbox-label" style="display: flex; align-items: flex-start; font-weight: 400; padding: 0.75rem; border-radius: 8px; transition: all 0.3s ease; cursor: pointer; border: 1px solid #e1e5e9; position: relative;">
|
||||||
|
<input type="checkbox" name="age_confirm" value="18+" required style="width: 18px; height: 18px; margin-right: 0.75rem; margin-top: 0.2rem; accent-color: #27ae60; cursor: pointer;">
|
||||||
|
<span style="cursor: pointer; user-select: none; line-height: 1.5;">
|
||||||
|
Подтверждение совершеннолетия<br>
|
||||||
|
<small style="color: #666; font-size: 0.9em;">Мне исполнилось 18 лет</small>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="submit-btn">
|
||||||
|
Отправить
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
@@ -1,31 +1,140 @@
|
|||||||
+++
|
+++
|
||||||
title = 'Галерея'
|
title = 'Галерея'
|
||||||
slug = 'gallery'
|
slug = 'gallery'
|
||||||
# image = 'images/pic02.jpg'
|
|
||||||
# description = 'здесь можно добавить подпись'
|
|
||||||
disableComments = false
|
|
||||||
+++
|
+++
|
||||||
|
|
||||||
1 галерея
|
|
||||||
{{< load-photoswipe >}}
|
{{< load-photoswipe >}}
|
||||||
{{< gallery caption-effect="fade" >}}
|
{{< gallery caption-effect="fade" >}}
|
||||||
{{< figure src="/images/suzdal.jpg" caption="[label](http://ya.ru) " caption-position="bottom">}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Pantelee-20260408-1.jpg" >}}
|
||||||
{{< figure src="images/kostroma.jpg" caption="Кострома" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Marta-20260402-2.jpg" >}}
|
||||||
{{< figure src="images/vladimir.jpg" caption="Владимир" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Savelevo-20260402-1.jpg" >}}
|
||||||
{{< figure src="/images/suzdal.jpg" caption="Суздаль" caption-position="bottom">}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Zvezda-20260402-2.jpg" >}}
|
||||||
{{< figure src="images/kostroma.jpg" caption="Кострома" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Baykal-20260324-1.jpg" >}}
|
||||||
{{< figure src="images/vladimir.jpg" caption="Владимир" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serdtse-20260401-1.jpg" >}}
|
||||||
{{< /gallery >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Krasnyybogatyr-20260315-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Generalasnazina-20260402-1.jpg" >}}
|
||||||
2 галерея
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Pokrov-20260315-1.jpg" >}}
|
||||||
{{< load-photoswipe >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Shirkov-20260315-2.jpg" >}}
|
||||||
{{< gallery caption-effect="fade" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Elochka-20260109-2.jpg" >}}
|
||||||
{{< figure src="/images/suzdal.jpg" caption="Суздаль" caption-position="bottom">}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Vetchi-20260109-1.jpg" >}}
|
||||||
{{< figure src="images/kostroma.jpg" caption="Кострома" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Yurevpolskiy-20260109-8.jpg" >}}
|
||||||
{{< figure src="images/vladimir.jpg" caption="Владимир" >}}
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Panteleevo-20260109-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kositskiyles-20260109-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Shirkovo-20260103-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Norilsk-20251006-1.webp" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Suzdal-20250925-4.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Gurevo-20250912-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Vetchi-20250908-1.webp" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Pokrov-20250908-1.webp" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Petushki_20250517_2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Rjev_20251005_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dukyn_20250425_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Snazin_20250423_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bogolubovo_20250419_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Radiotele_20250406_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/PicVetchi_20250322_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Proletar_20250223_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Gorb_20250304_10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Voron_20250324_3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/SletRjev_20250215_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/SletPokrov2_20250208_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/SletRaek_20250118_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bursol2_20250106_8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bursol2_20250106_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/NG25_20241214_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/SletKalyaz_20241221_2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bursol_20240923_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Vetchi_20241012_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Klin_20241005_5.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bogolub_20240914_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sletberend_20240907_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sletlubv_20240831_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sletkalyaz_20240810_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sletvas_20240803_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Rzhev_20240727_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Yaropol_20240714_10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Zelen_20240628_3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dronoslet_20240705_4.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Fedor_20240623_4.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Msk-Pet_20240606_3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Slet_20240526_2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kavkaz_20240429_13.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kalyazin-20240603-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kalyazin-20240330-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Breeze-20240316-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Otkryt-20240309-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Otkryt-20240210-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sever-20240203-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Lager-20240113-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serdce-20240120-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Snegorassvet_20240107_5.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/HappyNew_20231230_1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Moroz rassvet_20231202_8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Elki-palki_20231216_2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bezdon-20231119-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dubna-20231118-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Aleksin-20210515-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Altai-20220912-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Apple-20230107-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Belayagora-20220806-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Bykovo-20211107-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Detlager-20210529-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dino-20220327-7.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Djipers-20220205-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dmitrov-20221016-10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Dmitrov_20210328-4.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Elbrus-20230128-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/GES-20220418-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Glubokovo-20220206-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Golf-20220525-10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Hrap-20230114-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Iosifo-20220417-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/KBR-20210928-8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kalininrad-20210913-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kalyazin-20220123-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kalyazin2-20221203-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kashira-20220605-10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kavkaz-20220505-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kino-20210711-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Klin-20220529-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kolomna-20210505-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Konduki-20210522-6.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Konduki2-20220716-8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kopyto-20210506-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Kurkino-20210914-9.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Lenivec-20210507-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Morozki-20211019-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Murmansk-20220129-7.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/NewKBR-20220721-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Ostrova-20220714-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Panfil-20211113-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Peremil-20211031-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Piter-20230320-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Podlodka-20220904-2.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Podolsk-20201229-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Podolsk-20211114-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Pokrov-20230204-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Posad-20210731-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Rostov-20220219-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Ryazan-20220221-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serdce-20210410-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Sergiev-20220319-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serpdor-20221008-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serpuhov-20210428-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serpuhov-20210509-3.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Serpzubr-20230108-10.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Terib-20230311-17.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Tula-20210619-14.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Tulobl-20230923-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Tver-20220612-8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Tverobl-20230715-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Univer-20230423-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/VladSuzd-20220814-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Vladimir-20210714-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Volok-20220904-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Yahroma-20221225-1.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Yaroslavl-20220307-8.jpg" >}}
|
||||||
|
{{< figure src="https://s3.regru.cloud/sleeptrip-dev/images/Zimni-20211204-1.jpg" >}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<a href="#">Вернутся в начало страницы</a>
|
|
||||||
{{< /rawhtml >}}
|
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
+++
|
||||||
|
# title = 'Галерея'
|
||||||
|
slug = 'gallery'
|
||||||
|
+++
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<h3 align="center">Галерея</h3>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< load-photoswipe >}}
|
||||||
|
{{< gallery caption-effect="fade" >}}
|
||||||
|
{{< figure src="images/Radiotele_20250406_1.jpg" >}}
|
||||||
|
{{< figure src="images/PicVetchi_20250322_1.jpg" >}}
|
||||||
|
{{< figure src="images/Proletar_20250223_1.jpg" >}}
|
||||||
|
{{< figure src="images/Gorb_20250304_10.jpg" >}}
|
||||||
|
{{< figure src="images/Voron_20250324_3.jpg" >}}
|
||||||
|
{{< figure src="images/SletRjev_20250215_1.jpg" >}}
|
||||||
|
{{< figure src="images/SletPokrov2_20250208_1.jpg" >}}
|
||||||
|
{{< figure src="images/SletRaek_20250118_1.jpg" >}}
|
||||||
|
{{< figure src="images/Bursol2_20250106_8.jpg" >}}
|
||||||
|
{{< figure src="images/Bursol2_20250106_1.jpg" >}}
|
||||||
|
{{< figure src="images/NG25_20241214_1.jpg" >}}
|
||||||
|
{{< figure src="images/SletKalyaz_20241221_2.jpg" >}}
|
||||||
|
{{< figure src="images/Bursol_20240923_1.jpg" >}}
|
||||||
|
{{< figure src="images/Vetchi_20241012_1.jpg" >}}
|
||||||
|
{{< figure src="images/Klin_20241005_5.jpg" >}}
|
||||||
|
{{< figure src="images/Bogolub_20240914_1.jpg" >}}
|
||||||
|
{{< figure src="images/Sletberend_20240907_1.jpg" >}}
|
||||||
|
{{< figure src="images/Sletlubv_20240831_1.jpg" >}}
|
||||||
|
{{< figure src="images/Sletkalyaz_20240810_1.jpg" >}}
|
||||||
|
{{< figure src="images/Sletvas_20240803_1.jpg" >}}
|
||||||
|
{{< figure src="images/Rzhev_20240727_1.jpg" >}}
|
||||||
|
{{< figure src="images/Yaropol_20240714_10.jpg" >}}
|
||||||
|
{{< figure src="images/Zelen_20240628_3.jpg" >}}
|
||||||
|
{{< figure src="images/Dronoslet_20240705_4.jpg" >}}
|
||||||
|
{{< figure src="images/Fedor_20240623_4.jpg" >}}
|
||||||
|
{{< figure src="images/Msk-Pet_20240606_3.jpg" >}}
|
||||||
|
{{< figure src="images/Slet_20240526_2.jpg" >}}
|
||||||
|
{{< figure src="images/Kavkaz_20240429_13.jpg" >}}
|
||||||
|
{{< figure src="images/Kalyazin-20240603-1.jpg" >}}
|
||||||
|
{{< figure src="images/Kalyazin-20240330-1.jpg" >}}
|
||||||
|
{{< figure src="images/Breeze-20240316-1.jpg" >}}
|
||||||
|
{{< figure src="images/Otkryt-20240309-1.jpg" >}}
|
||||||
|
{{< figure src="images/Otkryt-20240210-1.jpg" >}}
|
||||||
|
{{< figure src="images/Sever-20240203-1.jpg" >}}
|
||||||
|
{{< figure src="images/Lager-20240113-1.jpg" >}}
|
||||||
|
{{< figure src="images/Serdce-20240120-1.jpg" >}}
|
||||||
|
{{< figure src="images/Snegorassvet_20240107_5.jpg" >}}
|
||||||
|
{{< figure src="images/HappyNew_20231230_1.jpg" >}}
|
||||||
|
{{< figure src="images/Moroz rassvet_20231202_8.jpg" >}}
|
||||||
|
{{< figure src="images/Elki-palki_20231216_2.jpg" >}}
|
||||||
|
{{< figure src="images/Bezdon-20231119-3.jpg" >}}
|
||||||
|
{{< figure src="images/Dubna-20231118-1.jpg" >}}
|
||||||
|
{{< figure src="images/Aleksin-20210515-2.jpg" >}}
|
||||||
|
{{< figure src="images/Altai-20220912-1.jpg" >}}
|
||||||
|
{{< figure src="images/Apple-20230107-3.jpg" >}}
|
||||||
|
{{< figure src="images/Belayagora-20220806-1.jpg" >}}
|
||||||
|
{{< figure src="images/Bykovo-20211107-1.jpg" >}}
|
||||||
|
{{< figure src="images/Detlager-20210529-1.jpg" >}}
|
||||||
|
{{< figure src="images/Dino-20220327-7.jpg" >}}
|
||||||
|
{{< figure src="images/Djipers-20220205-1.jpg" >}}
|
||||||
|
{{< figure src="images/Dmitrov-20221016-10.jpg" >}}
|
||||||
|
{{< figure src="images/Dmitrov_20210328-4.jpg" >}}
|
||||||
|
{{< figure src="images/Elbrus-20230128-1.jpg" >}}
|
||||||
|
{{< figure src="images/GES-20220418-3.jpg" >}}
|
||||||
|
{{< figure src="images/Glubokovo-20220206-3.jpg" >}}
|
||||||
|
{{< figure src="images/Golf-20220525-10.jpg" >}}
|
||||||
|
{{< figure src="images/Hrap-20230114-1.jpg" >}}
|
||||||
|
{{< figure src="images/Iosifo-20220417-3.jpg" >}}
|
||||||
|
{{< figure src="images/KBR-20210928-8.jpg" >}}
|
||||||
|
{{< figure src="images/Kalininrad-20210913-1.jpg" >}}
|
||||||
|
{{< figure src="images/Kalyazin-20220123-1.jpg" >}}
|
||||||
|
{{< figure src="images/Kalyazin2-20221203-2.jpg" >}}
|
||||||
|
{{< figure src="images/Kashira-20220605-10.jpg" >}}
|
||||||
|
{{< figure src="images/Kavkaz-20220505-1.jpg" >}}
|
||||||
|
{{< figure src="images/Kino-20210711-2.jpg" >}}
|
||||||
|
{{< figure src="images/Klin-20220529-3.jpg" >}}
|
||||||
|
{{< figure src="images/Kolomna-20210505-3.jpg" >}}
|
||||||
|
{{< figure src="images/Konduki-20210522-6.jpg" >}}
|
||||||
|
{{< figure src="images/Konduki2-20220716-8.jpg" >}}
|
||||||
|
{{< figure src="images/Kopyto-20210506-3.jpg" >}}
|
||||||
|
{{< figure src="images/Kurkino-20210914-9.jpg" >}}
|
||||||
|
{{< figure src="images/Lenivec-20210507-1.jpg" >}}
|
||||||
|
{{< figure src="images/Morozki-20211019-1.jpg" >}}
|
||||||
|
{{< figure src="images/Murmansk-20220129-7.jpg" >}}
|
||||||
|
{{< figure src="images/NewKBR-20220721-1.jpg" >}}
|
||||||
|
{{< figure src="images/Ostrova-20220714-2.jpg" >}}
|
||||||
|
{{< figure src="images/Panfil-20211113-1.jpg" >}}
|
||||||
|
{{< figure src="images/Peremil-20211031-1.jpg" >}}
|
||||||
|
{{< figure src="images/Piter-20230320-1.jpg" >}}
|
||||||
|
{{< figure src="images/Podlodka-20220904-2.jpg" >}}
|
||||||
|
{{< figure src="images/Podolsk-20201229-3.jpg" >}}
|
||||||
|
{{< figure src="images/Podolsk-20211114-1.jpg" >}}
|
||||||
|
{{< figure src="images/Pokrov-20230204-1.jpg" >}}
|
||||||
|
{{< figure src="images/Posad-20210731-1.jpg" >}}
|
||||||
|
{{< figure src="images/Rostov-20220219-1.jpg" >}}
|
||||||
|
{{< figure src="images/Ryazan-20220221-1.jpg" >}}
|
||||||
|
{{< figure src="images/Serdce-20210410-1.jpg" >}}
|
||||||
|
{{< figure src="images/Sergiev-20220319-1.jpg" >}}
|
||||||
|
{{< figure src="images/Serpdor-20221008-1.jpg" >}}
|
||||||
|
{{< figure src="images/Serpuhov-20210428-1.jpg" >}}
|
||||||
|
{{< figure src="images/Serpuhov-20210509-3.jpg" >}}
|
||||||
|
{{< figure src="images/Serpzubr-20230108-10.jpg" >}}
|
||||||
|
{{< figure src="images/Terib-20230311-17.jpg" >}}
|
||||||
|
{{< figure src="images/Tula-20210619-14.jpg" >}}
|
||||||
|
{{< figure src="images/Tulobl-20230923-1.jpg" >}}
|
||||||
|
{{< figure src="images/Tver-20220612-8.jpg" >}}
|
||||||
|
{{< figure src="images/Tverobl-20230715-1.jpg" >}}
|
||||||
|
{{< figure src="images/Univer-20230423-1.jpg" >}}
|
||||||
|
{{< figure src="images/VladSuzd-20220814-1.jpg" >}}
|
||||||
|
{{< figure src="images/Vladimir-20210714-1.jpg" >}}
|
||||||
|
{{< figure src="images/Volok-20220904-1.jpg" >}}
|
||||||
|
{{< figure src="images/Yahroma-20221225-1.jpg" >}}
|
||||||
|
{{< figure src="images/Yaroslavl-20220307-8.jpg" >}}
|
||||||
|
{{< figure src="images/Zimni-20211204-1.jpg" >}}
|
||||||
|
{{< /gallery >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
@@ -1,29 +1,8 @@
|
|||||||
+++
|
+++
|
||||||
title = 'Карта поездок'
|
title = 'Карта поездок'
|
||||||
slug = 'map'
|
slug = 'map'
|
||||||
# image = 'images/pic02.jpg'
|
|
||||||
# description = 'здесь можно добавить подпись'
|
|
||||||
disableComments = true
|
disableComments = true
|
||||||
+++
|
+++
|
||||||
|
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<details>
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A77187bdb95bee620ff3ba0b321fcb359dc2750eb2dd0c916a37468fdf08ef30a&width=100%25&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
<summary>Выпадающий список</summary>
|
|
||||||
|
|
||||||
какой-то текст
|
|
||||||
+ <details>
|
|
||||||
<summary>Еще список</summary>
|
|
||||||
|
|
||||||
еще немного текста
|
|
||||||
+ <details>
|
|
||||||
<summary>И заключительный список</summary>
|
|
||||||
еще текст
|
|
||||||
текст
|
|
||||||
</details>
|
|
||||||
</details>
|
|
||||||
</details>
|
|
||||||
{{< /rawhtml >}}
|
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A310cf72dabd996de0f1c262455693604c6870c63c39df27000697a86f5fcd8c9&width=90%25&height=633&lang=ru_RU&scroll=true;apikey=316b18fe-0f3b-45d3-8930-26eafd8c0beb"></script>
|
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@@ -1,29 +1,261 @@
|
|||||||
+++
|
+++
|
||||||
|
title = 'Предстоящие поездки'
|
||||||
slug = 'plan'
|
slug = 'plan'
|
||||||
description = 'Выберите поездку из календаря'
|
|
||||||
disableComments = true
|
disableComments = true
|
||||||
+++
|
+++
|
||||||
|
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<script src="https://apps.elfsight.com/p/platform.js" defer></script>
|
<!-- Календарь поездок из upcoming-trips.json -->
|
||||||
<div class="elfsight-app-0287f7ef-51e1-4a9c-af07-8b9992310ab8"></div>
|
<div id="trips-grid" class="trips-calendar">
|
||||||
{{< /rawhtml >}}
|
<!-- Карточки поездок будут загружены динамически -->
|
||||||
|
|
||||||
{{< rawhtml >}}
|
|
||||||
<div data-tockify-component="calendar" data-tockify-calendar="testcalendar1111tqtq">
|
|
||||||
</div>
|
</div>
|
||||||
<script data-cfasync="false" data-tockify-script="embed" src="https://public.tockify.com/browser/embed.js">
|
|
||||||
</script>
|
<!-- Подключаем стили для карточек поездок -->
|
||||||
|
<link rel="stylesheet" href="/css/trips-calendar.css">
|
||||||
|
|
||||||
|
<!-- Подключаем скрипт загрузки карточек поездок -->
|
||||||
|
<script src="/js/upcoming-trips.js"></script>
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
Хотите присоединится к поездке? Ознакомьтесь с условиями участия и заполните форму
|
||||||
|
|
||||||
|
## Условия участия
|
||||||
|
|
||||||
|
### Дронослёты
|
||||||
|
- **Подача заявки:** минимум за 5 дней до даты поездки
|
||||||
|
- **Обсуждение деталей:** [Telegram чат "Полёты БВС"](https://t.me/polet_bvs)
|
||||||
|
|
||||||
|
### Важная информация
|
||||||
|
- **Время выезда:** обычно рано утром, в зависимости от удалённости локации
|
||||||
|
- **Email:** проверьте папку "Нежелательные" - ответ может попасть туда
|
||||||
|
|
||||||
{{< rawhtml >}}
|
{{< rawhtml >}}
|
||||||
<div data-tockify-component="mini" data-tockify-calendar="testcalendar1111tqtq">
|
<div class="travel-form-container">
|
||||||
|
<!-- Сообщения об успехе/ошибке -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const success = urlParams.get('success');
|
||||||
|
const error = urlParams.get('error');
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-success';
|
||||||
|
messageDiv.textContent = success;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
const messageDiv = document.createElement('div');
|
||||||
|
messageDiv.className = 'form-message form-error';
|
||||||
|
messageDiv.textContent = error;
|
||||||
|
document.querySelector('.travel-form-container').insertBefore(messageDiv, document.querySelector('.travel-form'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Русские сообщения валидации
|
||||||
|
const inputs = document.querySelectorAll('input[required], select[required], textarea[required]');
|
||||||
|
inputs.forEach(function(input) {
|
||||||
|
input.addEventListener('invalid', function() {
|
||||||
|
if (input.type === 'checkbox') {
|
||||||
|
input.setCustomValidity('Пожалуйста, отметьте этот пункт для продолжения');
|
||||||
|
} else if (input.type === 'email') {
|
||||||
|
input.setCustomValidity('Пожалуйста, введите корректный email адрес');
|
||||||
|
} else if (input.tagName === 'SELECT') {
|
||||||
|
input.setCustomValidity('Пожалуйста, выберите один из вариантов');
|
||||||
|
} else {
|
||||||
|
input.setCustomValidity('Пожалуйста, заполните это поле');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
input.addEventListener('input', function() {
|
||||||
|
input.setCustomValidity('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Загружаем скрипт шифрования
|
||||||
|
const encryptionScript = document.createElement('script');
|
||||||
|
encryptionScript.src = '/js/encryption.js';
|
||||||
|
encryptionScript.onload = function() {};
|
||||||
|
encryptionScript.onerror = function() {};
|
||||||
|
document.head.appendChild(encryptionScript);
|
||||||
|
|
||||||
|
// Загружаем скрипт динамического заполнения поездок
|
||||||
|
const tripScript = document.createElement('script');
|
||||||
|
tripScript.src = '/js/trip-form-loader.js';
|
||||||
|
tripScript.onload = function() {
|
||||||
|
if (typeof TripFormLoader !== 'undefined') {
|
||||||
|
window.tripFormLoader = new TripFormLoader();
|
||||||
|
window.tripFormLoader.populateTripsDropdown();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
tripScript.onerror = function() {};
|
||||||
|
document.head.appendChild(tripScript);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Обработчик отправки формы
|
||||||
|
function handleFormSubmit(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
const form = event.target;
|
||||||
|
const formData = new FormData(form);
|
||||||
|
const submitBtn = form.querySelector('.submit-btn');
|
||||||
|
|
||||||
|
// Показываем состояние загрузки
|
||||||
|
submitBtn.textContent = 'Отправляем...';
|
||||||
|
submitBtn.disabled = true;
|
||||||
|
|
||||||
|
fetch('/forms/send_plan.php', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
return response.text();
|
||||||
|
})
|
||||||
|
.then(text => {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(text);
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error('Сервер вернул не JSON: ' + text.substring(0, 100));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
if (data.success) {
|
||||||
|
// Успех
|
||||||
|
const successDiv = document.createElement('div');
|
||||||
|
successDiv.className = 'form-message form-success';
|
||||||
|
successDiv.textContent = data.message;
|
||||||
|
form.parentNode.insertBefore(successDiv, form);
|
||||||
|
form.reset();
|
||||||
|
} else {
|
||||||
|
// Ошибка
|
||||||
|
const errorDiv = document.createElement('div');
|
||||||
|
errorDiv.className = 'form-message form-error';
|
||||||
|
errorDiv.textContent = data.error;
|
||||||
|
form.parentNode.insertBefore(errorDiv, form);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
// Ошибка сети
|
||||||
|
const errorDiv = document.createElement('div');
|
||||||
|
errorDiv.className = 'form-message form-error';
|
||||||
|
errorDiv.textContent = 'Ошибка отправки формы. Попробуйте еще раз.';
|
||||||
|
form.parentNode.insertBefore(errorDiv, form);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
// Восстанавливаем кнопку
|
||||||
|
submitBtn.textContent = 'Отправить';
|
||||||
|
submitBtn.disabled = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="travel-form" action="/forms/send_plan.php" method="POST" enctype="multipart/form-data" onsubmit="return handleFormSubmit(event)">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Фамилия, имя *</label>
|
||||||
|
<input type="text" id="name" name="name" placeholder="Введите Вашу фамилию и имя" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">Email</label>
|
||||||
|
<input type="email" id="email" name="email" placeholder="ivan@mail.ru">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="phone">Телефон *</label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="Введите телефон" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="telegram">Ник в Telegram</label>
|
||||||
|
<input type="text" id="telegram" name="telegram" placeholder="@ваш_ник">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-note">
|
||||||
|
<p>Укажите email или Telegram ник (одно из двух обязательно)</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="bvs_number">Учётный номер БВС *</label>
|
||||||
|
<textarea id="bvs_number" name="bvs_number" placeholder="БВС от 0,15 кг — учётный номер, например: 123456789AB БВС до 0,15 кг — серийный номер с фюзеляжа" required></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="bvs_file">Уведомление о постановке на учёт (.pdf)<br><small style="font-weight:400; color:#888;">Для БВС от 0,15 кг обязательно. Для БВС до 0,15 кг — фото с серийным номером запросим отдельно</small></label>
|
||||||
|
<div style="margin-top: 10px;">
|
||||||
|
<label for="bvs_file" class="file-btn"><i class="icon fa-arrow-down"></i> Выбрать файл</label>
|
||||||
|
<span id="file-name" class="file-name-display"></span>
|
||||||
|
</div>
|
||||||
|
<input type="file" id="bvs_file" name="bvs_file" accept=".pdf" style="display: none;">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.getElementById('bvs_file').addEventListener('change', function(e) {
|
||||||
|
const fileName = e.target.files[0]?.name || '';
|
||||||
|
document.getElementById('file-name').textContent = fileName ? '✓ ' + fileName : '';
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="trip_period">Выберите мероприятие</label>
|
||||||
|
<select id="trip_period" name="trip_period">
|
||||||
|
<option value="" disabled selected></option>
|
||||||
|
<!-- Опции будут загружены динамически из upcoming-trips.json -->
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Загрузка файлов временно отключена -->
|
||||||
|
|
||||||
|
<div class="form-group checkbox-group">
|
||||||
|
<label class="checkbox-container">
|
||||||
|
<input type="checkbox" id="privacy_consent" name="privacy_consent" required>
|
||||||
|
<span class="checkmark"></span>
|
||||||
|
<span class="privacy-text">
|
||||||
|
Я выражаю своё согласие на обработку персональных данных <sup class="fn">1</sup>
|
||||||
|
<div class="privacy-details">
|
||||||
|
<p>Персональные данные обрабатываются исключительно для получения разрешения на полёты БВС. Согласие действует 1 месяц. Отзыв согласия – заявление на sleep-trip@ya.ru</p>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group checkbox-group">
|
||||||
|
<label class="checkbox-container">
|
||||||
|
<input type="checkbox" id="age_consent" name="age_consent" required>
|
||||||
|
<span class="checkmark"></span>
|
||||||
|
<span class="privacy-text">
|
||||||
|
Мне есть 18 лет <sup class="fn">2</sup>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="submit-btn">
|
||||||
|
Отправить
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<script data-cfasync="false" data-tockify-script="embed" src="https://public.tockify.com/browser/embed.js">
|
|
||||||
</script>
|
|
||||||
{{< /rawhtml >}}
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<details class="legal-details">
|
||||||
|
<summary><sup class="fn">1</sup> Постановка «галочки» в чекбоксе является подтверждением вашего согласия — читать полный текст (ФЗ №152)</summary>
|
||||||
|
<div class="legal-text">
|
||||||
|
<p>Заполнение «чек-бокса» (проставление «галочки»/«веб-метки» на сайте sleeptrip.ru в графе «Я согласен на обработку персональных данных») и нажатие соответствующей кнопки и (или) направление персональных данных (фамилия, имя, телефон, имя (ник) в Телеграм) в ответном письме на адрес: sleep-trip@ya.ru является подтверждением Вашего согласия на обработку персональных данных либо с целью получения разрешения на полёты беспилотного воздушного судна (БВС), либо с целью ответа на вопрос, заданный на сайте sleeptrip.ru.</p>
|
||||||
|
<p>Предоставленные персональные данные будут обрабатываться в соответствии с положениями Федерального закона Российской Федерации №152-ФЗ от 27.07.2006 «О персональных данных».</p>
|
||||||
|
<p>Заявление об уточнении персональных данных, отзыве настоящего согласия может быть направлено по электронной почте по адресу: <a href="mailto:sleep-trip@ya.ru">sleep-trip@ya.ru</a>.</p>
|
||||||
|
<p><strong>СОГЛАСИЕ НА ОБРАБОТКУ ПЕРСОНАЛЬНЫХ ДАННЫХ</strong></p>
|
||||||
|
<p>Я выражаю свое согласие на обработку, включая: сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (предоставление, доступ), блокирование, обезличивание, удаление, уничтожение, своих персональных данных (в случае предоставления мной) Оператору (владельцу сайта sleeptrip.ru) для целей:</p>
|
||||||
|
<ul>
|
||||||
|
<li>обеспечения получения разрешения на полёты БВС и направления мне информационных сообщений о статусе получения такого разрешения;</li>
|
||||||
|
<li>ответа на вопрос, заданный на сайте sleeptrip.ru.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Я согласен и разрешаю Оператору обрабатывать мои персональные данные с использованием средств автоматизации или без использования таких средств (смешанная обработка).</p>
|
||||||
|
<p>Я согласен с тем, что мои персональные данные будут переданы третьим лицам – Единой системе организации воздушного движения, сервису «Небосвод» (skyarc.ru) или сервису СППИ (sppi.ivprf.ru), а также сотрудникам полиции (в случае взаимодействия с ними на местности) для реализации целей обработки персональных данных — получения разрешения на полёты БВС. Без передачи данных указанным организациям реализация целей обработки персональных данных будет невозможна.</p>
|
||||||
|
<p>Настоящее Согласие действует до момента достижения целей обработки или отзыва согласия на обработку, но не более 1 (одного) месяца с момента предоставления Согласия.</p>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
<p class="legal-note"><sup class="fn">2</sup> Отметка подтверждает, что участнику поездки исполнилось 18 лет.</p>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Цветущая сакура'
|
||||||
|
slug = 'Sakura'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Aleksin-20210515-1.jpg"
|
||||||
|
date = "2021-05-15T00:00:00"
|
||||||
|
description = 'ранняя весна в Алексине'
|
||||||
|
disqus_identifier = '6'
|
||||||
|
+++
|
||||||
|
Алексин - это город в Тульской области.
|
||||||
|
Именно там прошла большая часть моего детства, летней его части.
|
||||||
|
И вот как-то раз я решил приехать в Алексин, посмотреть на памятные места.
|
||||||
|
По пути наткнулся на это место, был им очарован.
|
||||||
|
Поэтому заехал сюда позже, летом 2023 года. Однако трава по пути уже была по пояс и дерево давно отцвело.
|
||||||
|
В общем в календаре поездок обязательно будет запланирована поездка в Алексин.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="sSYZ9EcrzbU" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A11455cb59596c5320acbb73184aac601f34a640a895113e89d500c3b8be8348d&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Цветущая сакура'
|
||||||
|
slug = 'Sakura'
|
||||||
|
image = 'images/Aleksin-20210515-1.jpg'
|
||||||
|
date = "2021-05-15T00:00:00"
|
||||||
|
description = 'ранняя весна в Алексине'
|
||||||
|
disqus_identifier = '6'
|
||||||
|
+++
|
||||||
|
Алексин - это город в Тульской области.
|
||||||
|
Именно там прошла большая часть моего детства, летней его части.
|
||||||
|
И вот как-то раз я решил приехать в Алексин, посмотреть на памятные места.
|
||||||
|
По пути наткнулся на это место, был им очарован.
|
||||||
|
Поэтому заехал сюда позже, летом 2023 года. Однако трава по пути уже была по пояс и дерево давно отцвело.
|
||||||
|
В общем в календаре поездок обязательно будет запланирована поездка в Алексин.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="sSYZ9EcrzbU" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A11455cb59596c5320acbb73184aac601f34a640a895113e89d500c3b8be8348d&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
+++
|
||||||
|
title = 'Осенний Алтай'
|
||||||
|
slug = 'Altai'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Altai-20220912-1.jpg"
|
||||||
|
date = "2022-09-12T00:00:00"
|
||||||
|
description = 'реки, дороги и горы'
|
||||||
|
disqus_identifier = '61'
|
||||||
|
+++
|
||||||
|
Так сложилось, что на Алтай я поехал только в 2022 году.
|
||||||
|
Не буду лукавить - моё собственное место силы Алтай заместить не смог.
|
||||||
|
Но всё равно оставил след и приятные воспоминания.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="zvZ_3-_Srvc" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
+++
|
||||||
|
title = 'Осенний Алтай'
|
||||||
|
slug = 'Altai'
|
||||||
|
image = 'images/Altai-20220912-1.jpg'
|
||||||
|
date = "2022-09-12T00:00:00"
|
||||||
|
description = 'реки, дороги и горы'
|
||||||
|
disqus_identifier = '61'
|
||||||
|
+++
|
||||||
|
Так сложилось, что на Алтай я поехал только в 2022 году.
|
||||||
|
Не буду лукавить - моё собственное место силы Алтай заместить не смог.
|
||||||
|
Но всё равно оставил след и приятные воспоминания.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="zvZ_3-_Srvc" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
+++
|
||||||
|
title = 'Яблоки на снегу'
|
||||||
|
slug = 'Apple'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Apple-20230107-1.jpg"
|
||||||
|
date = "2023-01-07T00:00:00"
|
||||||
|
description = 'фестиваль воздухоплавания'
|
||||||
|
disqus_identifier = '75'
|
||||||
|
+++
|
||||||
|
Ездил с сыном. На улице было минус 28, но техника не подвела - получилось.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="FRad0MUMU7o" >}}
|
||||||
|
|
||||||
|
{{< youtube id="__15N6Kf940" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A715bdf0000c09901ec8be0c913ace86f67cb39638e39a38a909f1b8cb75dd224&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
+++
|
||||||
|
title = 'Яблоки на снегу'
|
||||||
|
slug = 'Apple'
|
||||||
|
image = 'images/Apple-20230107-1.jpg'
|
||||||
|
date = "2023-01-07T00:00:00"
|
||||||
|
description = 'фестиваль воздухоплавания'
|
||||||
|
disqus_identifier = '75'
|
||||||
|
+++
|
||||||
|
Ездил с сыном. На улице было минус 28, но техника не подвела - получилось.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="FRad0MUMU7o" >}}
|
||||||
|
|
||||||
|
{{< youtube id="__15N6Kf940" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A715bdf0000c09901ec8be0c913ace86f67cb39638e39a38a909f1b8cb75dd224&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Белая гора'
|
||||||
|
slug = 'Belayagora'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Belayagora-20220806-1.jpg"
|
||||||
|
date = "2022-08-06T00:00:00"
|
||||||
|
description = 'иллюзия зимы посреди лета'
|
||||||
|
disqus_identifier = '58'
|
||||||
|
+++
|
||||||
|
Эта гора - фосфорные отходы.
|
||||||
|
Но выглядит она необычно.
|
||||||
|
Несколько раз не удавалось туда доехать.
|
||||||
|
Но летом получилось и вышло очень удачно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A988b63c3351fc2867f6dbd30461122a7cd7b18403d62971a11db68ccd6eea840&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Белая гора'
|
||||||
|
slug = 'Belayagora'
|
||||||
|
image = 'images/Belayagora-20220806-1.jpg'
|
||||||
|
date = "2022-08-06T00:00:00"
|
||||||
|
description = 'иллюзия зимы посреди лета'
|
||||||
|
disqus_identifier = '58'
|
||||||
|
+++
|
||||||
|
Эта гора - фосфорные отходы.
|
||||||
|
Но выглядит она необычно.
|
||||||
|
Несколько раз не удавалось туда доехать.
|
||||||
|
Но летом получилось и вышло очень удачно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A988b63c3351fc2867f6dbd30461122a7cd7b18403d62971a11db68ccd6eea840&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бездонное озеро'
|
||||||
|
slug = 'Bezdon'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bezdon-20231119-1.jpg"
|
||||||
|
date = "2023-11-19T00:00:00"
|
||||||
|
description = 'рядом с Сенежем'
|
||||||
|
disqus_identifier = '87'
|
||||||
|
+++
|
||||||
|
Просто озеро круглой формы недалеко от Солнечногорска.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="GBAiOeO32eo" >}}
|
||||||
|
|
||||||
|
{{< youtube id="JwJLXuoDHUU" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ad949730fefba7d21b8170ea6008490613f69145185ca67deec2e8ed16eb195f5&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бездонное озеро'
|
||||||
|
slug = 'Bezdon'
|
||||||
|
image = 'images/Bezdon-20231119-1.jpg'
|
||||||
|
date = "2023-11-19T00:00:00"
|
||||||
|
description = 'рядом с Сенежем'
|
||||||
|
disqus_identifier = '87'
|
||||||
|
+++
|
||||||
|
Просто озеро круглой формы недалеко от Солнечногорска.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="GBAiOeO32eo" >}}
|
||||||
|
|
||||||
|
{{< youtube id="JwJLXuoDHUU" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ad949730fefba7d21b8170ea6008490613f69145185ca67deec2e8ed16eb195f5&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Боголюбово'
|
||||||
|
slug = 'Bogolub'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bogolub_20240914_1.jpg"
|
||||||
|
date = "2024-09-14T00:00:00"
|
||||||
|
description = 'на рассвете'
|
||||||
|
disqus_identifier = '112'
|
||||||
|
+++
|
||||||
|
Здесь тоже был несколько раз, локация ищется в любом навигаторе. Место не перестаёт удивлять частыми туманами, очень красиво на рассвете.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Fw4tegpSm1w" >}}
|
||||||
|
|
||||||
|
{{< youtube id="pgVZSCxXy9c" >}}
|
||||||
|
|
||||||
|
{{< youtube id="jKvWkFck6Qg" >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A077367027456c82c23a26e1ea7b97af0f6394ebb07ac19ed9ac4de61eb5ecb8b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Боголюбово'
|
||||||
|
slug = 'Bogolub'
|
||||||
|
image = 'images/Bogolub_20240914_1.jpg'
|
||||||
|
date = "2024-09-14T00:00:00"
|
||||||
|
description = 'на рассвете'
|
||||||
|
disqus_identifier = '112'
|
||||||
|
+++
|
||||||
|
Здесь тоже был несколько раз, локация ищется в любом навигаторе. Место не перестаёт удивлять частыми туманами, очень красиво на рассвете.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Fw4tegpSm1w" >}}
|
||||||
|
|
||||||
|
{{< youtube id="pgVZSCxXy9c" >}}
|
||||||
|
|
||||||
|
{{< youtube id="jKvWkFck6Qg" >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A077367027456c82c23a26e1ea7b97af0f6394ebb07ac19ed9ac4de61eb5ecb8b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
+++
|
||||||
|
title = 'Боголюбово'
|
||||||
|
slug = 'Bogolubovo0425'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bogolubovo_20250419_1.jpg"
|
||||||
|
date = "2025-04-19T00:00:00"
|
||||||
|
description = 'Покров на Нерли'
|
||||||
|
disqus_identifier = '128'
|
||||||
|
+++
|
||||||
|
В этот раз тоже не без приключений - сразу после рассвета пошёл дождь.
|
||||||
|
Но полёты всё же состоялись.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A077367027456c82c23a26e1ea7b97af0f6394ebb07ac19ed9ac4de61eb5ecb8b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
+++
|
||||||
|
title = 'Боголюбово'
|
||||||
|
slug = 'Bogolubovo0425'
|
||||||
|
image = 'images/Bogolubovo_20250419_1.jpg'
|
||||||
|
date = "2025-04-19T00:00:00"
|
||||||
|
description = 'Покров на Нерли'
|
||||||
|
disqus_identifier = '128'
|
||||||
|
+++
|
||||||
|
В этот раз тоже не без приключений - сразу после рассвета пошёл дождь.
|
||||||
|
Но полёты всё же состоялись.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A077367027456c82c23a26e1ea7b97af0f6394ebb07ac19ed9ac4de61eb5ecb8b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Утренний бриз'
|
||||||
|
slug = 'Breeze'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Breeze-20240316-1.jpg"
|
||||||
|
date = "2024-03-16T00:00:00"
|
||||||
|
description = 'тренировки на рассвете'
|
||||||
|
disqus_identifier = '97'
|
||||||
|
+++
|
||||||
|
Рабочие кадры с тренировок - когда погода не располагает к полётам и меняется каждые несколько минут. Но что-то запечатлеть всё равно удаётся. Просто красивая музыка к видеоряду.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="sHRcki5OiRw?si=LfLOPxcNWjBoUeI9" >}}
|
||||||
|
|
||||||
|
{{< youtube id="E0hKXktfGQA?si=FGYFODlbFxqVlBGg" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
+++
|
||||||
|
title = 'Утренний бриз'
|
||||||
|
slug = 'Breeze'
|
||||||
|
image = 'images/Breeze-20240316-1.jpg'
|
||||||
|
date = "2024-03-16T00:00:00"
|
||||||
|
description = 'тренировки на рассвете'
|
||||||
|
disqus_identifier = '97'
|
||||||
|
+++
|
||||||
|
Рабочие кадры с тренировок - когда погода не располагает к полётам и меняется каждые несколько минут. Но что-то запечатлеть всё равно удаётся. Просто красивая музыка к видеоряду.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="sHRcki5OiRw?si=LfLOPxcNWjBoUeI9" >}}
|
||||||
|
|
||||||
|
{{< youtube id="E0hKXktfGQA?si=FGYFODlbFxqVlBGg" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бурсоль'
|
||||||
|
slug = 'Bursol2'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bursol2_20250106_1.jpg"
|
||||||
|
date = "2025-01-06T00:00:00"
|
||||||
|
description = 'Головокружение от успехов'
|
||||||
|
disqus_identifier = '118'
|
||||||
|
+++
|
||||||
|
Поездка осенью, когда здесь была розовая вода в озере и поезд шёл по воде, оставила определённые чувства и я захотел вернуться сюда зимой. Это было не самое лучшее решение, потому что по факту и с погодой повезло только по пути, и поезд был законсервирован. Но хорошая компания оставила такие же хорошие воспоминания.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="5hcA2MRER1c" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A19d16d63f9b4e2b0d0579211dcf6c5c073053dbebe9b2b68d780290d80cd690b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бурсоль'
|
||||||
|
slug = 'Bursol2'
|
||||||
|
image = 'images/Bursol2_20250106_1.jpg'
|
||||||
|
date = "2025-01-06T00:00:00"
|
||||||
|
description = 'Головокружение от успехов'
|
||||||
|
disqus_identifier = '118'
|
||||||
|
+++
|
||||||
|
Поездка осенью, когда здесь была розовая вода в озере и поезд шёл по воде, оставила определённые чувства и я захотел вернуться сюда зимой. Это было не самое лучшее решение, потому что по факту и с погодой повезло только по пути, и поезд был законсервирован. Но хорошая компания оставила такие же хорошие воспоминания.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="5hcA2MRER1c" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A19d16d63f9b4e2b0d0579211dcf6c5c073053dbebe9b2b68d780290d80cd690b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
+++
|
||||||
|
title = 'Розовое озеро'
|
||||||
|
slug = 'Bursol'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bursol_20240923_1.jpg"
|
||||||
|
date = "2024-09-23T00:00:00"
|
||||||
|
description = 'и поезд'
|
||||||
|
disqus_identifier = '115'
|
||||||
|
+++
|
||||||
|
В кадре Бурлинское озеро, посёлок Бурсоль Алтайского края.
|
||||||
|
Бурлинское озеро - источник поваренной соли. Цвет озера обусловлен пигментом водорослей и меняется в зависимости от погоды.
|
||||||
|
|
||||||
|
На полёт было получено не только разрешение в ОрВД, но и разрешение территориального отделения ФСБ, так как место полёта располагается в приграничной полосе.
|
||||||
|
|
||||||
|
Хронология путешествия - 6663 км за два дня.
|
||||||
|
На самолёте - до Новосибирска и обратно, по 2800 км в каждую сторону.
|
||||||
|
На арендованной машине - до посёлка Бурсоль с заездами по пути в другие локации, 500 км туда и 500 км обратно до Новосибирска.
|
||||||
|
И ещё налёт на дроне 63 км.
|
||||||
|
|
||||||
|
Но цель достигнута - в кадре поезд, который едет по розовому озеру.
|
||||||
|
|
||||||
|
Ездил один, так как попутчиков не нашлось.
|
||||||
|
Но это было путешествие, в котором дорога была не менее привлекательной, чем конечная цель.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="iBzoBjyHnxs" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A19d16d63f9b4e2b0d0579211dcf6c5c073053dbebe9b2b68d780290d80cd690b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
+++
|
||||||
|
title = 'Розовое озеро'
|
||||||
|
slug = 'Bursol'
|
||||||
|
image = 'images/Bursol_20240923_1.jpg'
|
||||||
|
date = "2024-09-23T00:00:00"
|
||||||
|
description = 'и поезд'
|
||||||
|
disqus_identifier = '115'
|
||||||
|
+++
|
||||||
|
В кадре Бурлинское озеро, посёлок Бурсоль Алтайского края.
|
||||||
|
Бурлинское озеро - источник поваренной соли. Цвет озера обусловлен пигментом водорослей и меняется в зависимости от погоды.
|
||||||
|
|
||||||
|
На полёт было получено не только разрешение в ОрВД, но и разрешение территориального отделения ФСБ, так как место полёта располагается в приграничной полосе.
|
||||||
|
|
||||||
|
Хронология путешествия - 6663 км за два дня.
|
||||||
|
На самолёте - до Новосибирска и обратно, по 2800 км в каждую сторону.
|
||||||
|
На арендованной машине - до посёлка Бурсоль с заездами по пути в другие локации, 500 км туда и 500 км обратно до Новосибирска.
|
||||||
|
И ещё налёт на дроне 63 км.
|
||||||
|
|
||||||
|
Но цель достигнута - в кадре поезд, который едет по розовому озеру.
|
||||||
|
|
||||||
|
Ездил один, так как попутчиков не нашлось.
|
||||||
|
Но это было путешествие, в котором дорога была не менее привлекательной, чем конечная цель.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="iBzoBjyHnxs" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A19d16d63f9b4e2b0d0579211dcf6c5c073053dbebe9b2b68d780290d80cd690b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Церковь в Быково'
|
||||||
|
slug = 'Bykovo'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Bykovo-20211107-1.jpg"
|
||||||
|
date = "2021-11-07T00:00:00"
|
||||||
|
description = 'церковь с необычной архитектурой'
|
||||||
|
disqus_identifier = '28'
|
||||||
|
+++
|
||||||
|
На момент съёмок проводились реставрационные работы. Поэтому надо переснять, но уже придётся с земли - в том районе разрешения на полёты больше не дают.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="lzpwQ2fAq6M" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A5509c9f1cc59ddce3404f6980285e4e1f92c1f2ebea71d31a3f637da7cef3590&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Церковь в Быково'
|
||||||
|
slug = 'Bykovo'
|
||||||
|
image = 'images/Bykovo-20211107-1.jpg'
|
||||||
|
date = "2021-11-07T00:00:00"
|
||||||
|
description = 'церковь с необычной архитектурой'
|
||||||
|
disqus_identifier = '28'
|
||||||
|
+++
|
||||||
|
На момент съёмок проводились реставрационные работы. Поэтому надо переснять, но уже придётся с земли - в том районе разрешения на полёты больше не дают.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="lzpwQ2fAq6M" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A5509c9f1cc59ddce3404f6980285e4e1f92c1f2ebea71d31a3f637da7cef3590&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Детский лагерь "Сказка"'
|
||||||
|
slug = 'Detlager'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Detlager-20210529-1.jpg"
|
||||||
|
date = "2021-05-29T00:00:00"
|
||||||
|
description = 'заброшенный пионерский лагерь'
|
||||||
|
disqus_identifier = '12'
|
||||||
|
+++
|
||||||
|
Это была первая совместная поездка с ребятами, поездка-знакомство. Мы выбрались в заброшенный лагерь под Дмитровом. Но полетать толком не удалось, собственник лагеря возражал. Так что мы поснимали с земли, но получилось очень атмосферно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="vHBmhMOEr4w" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A6d821ac82783473d2dfb75a17f992af860b0fbde13384aa4ae4e4a2a5179c302&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Детский лагерь "Сказка"'
|
||||||
|
slug = 'Detlager'
|
||||||
|
image = 'images/Detlager-20210529-1.jpg'
|
||||||
|
date = "2021-05-29T00:00:00"
|
||||||
|
description = 'заброшенный пионерский лагерь'
|
||||||
|
disqus_identifier = '12'
|
||||||
|
+++
|
||||||
|
Это была первая совместная поездка с ребятами, поездка-знакомство. Мы выбрались в заброшенный лагерь под Дмитровом. Но полетать толком не удалось, собственник лагеря возражал. Так что мы поснимали с земли, но получилось очень атмосферно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="vHBmhMOEr4w" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A6d821ac82783473d2dfb75a17f992af860b0fbde13384aa4ae4e4a2a5179c302&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Нашёл динозавров'
|
||||||
|
slug = 'Dino'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dino-20220327-1.jpg"
|
||||||
|
date = "2022-03-27T00:00:00"
|
||||||
|
description = 'поле ископаемых'
|
||||||
|
disqus_identifier = '46'
|
||||||
|
+++
|
||||||
|
Дойти и доехать не удалось, но есть же дрон. Правда не могу сказать, что был сильно впечатлён, так что детей своих сюда пока не возил.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="8DioHajDMEE" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A455a8dfc63d273e08035f4ad25c9f01e1078a3cb7943acef764907488340af5c&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Нашёл динозавров'
|
||||||
|
slug = 'Dino'
|
||||||
|
image = 'images/Dino-20220327-1.jpg'
|
||||||
|
date = "2022-03-27T00:00:00"
|
||||||
|
description = 'поле ископаемых'
|
||||||
|
disqus_identifier = '46'
|
||||||
|
+++
|
||||||
|
Дойти и доехать не удалось, но есть же дрон. Правда не могу сказать, что был сильно впечатлён, так что детей своих сюда пока не возил.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="8DioHajDMEE" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A455a8dfc63d273e08035f4ad25c9f01e1078a3cb7943acef764907488340af5c&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бездорожье'
|
||||||
|
slug = 'Djipers'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Djipers-20220205-1.jpg"
|
||||||
|
date = "2022-02-05T00:00:00"
|
||||||
|
description = 'летал, пока кто-то застрял'
|
||||||
|
disqus_identifier = '40'
|
||||||
|
+++
|
||||||
|
А это я с детьми поехал снимать, как джиперы собираются в лагере.
|
||||||
|
Только вот доехать до них не смог не только я на своём седане, но и многие участники.
|
||||||
|
Зато я смог долететь, а потом потащил детей на санках. Так и не достигнув точки назначения из-за разбитых дорог, мы повернули обратно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="c1BsAJfyE6k" >}}
|
||||||
|
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
+++
|
||||||
|
title = 'Бездорожье'
|
||||||
|
slug = 'Djipers'
|
||||||
|
image = 'images/Djipers-20220205-1.jpg'
|
||||||
|
date = "2022-02-05T00:00:00"
|
||||||
|
description = 'летал, пока кто-то застрял'
|
||||||
|
disqus_identifier = '40'
|
||||||
|
+++
|
||||||
|
А это я с детьми поехал снимать, как джиперы собираются в лагере.
|
||||||
|
Только вот доехать до них не смог не только я на своём седане, но и многие участники.
|
||||||
|
Зато я смог долететь, а потом потащил детей на санках. Так и не достигнув точки назначения из-за разбитых дорог, мы повернули обратно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="c1BsAJfyE6k" >}}
|
||||||
|
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
+++
|
||||||
|
title = 'Курс на север'
|
||||||
|
slug = 'Dmitrov2'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dmitrov-20221016-1.jpg"
|
||||||
|
date = "2022-10-16T00:00:00"
|
||||||
|
description = 'памятник героям, усадьба, пионер-лагерь'
|
||||||
|
disqus_identifier = '64'
|
||||||
|
+++
|
||||||
|
Мы ездили двумя экипажами - чёрное и белое на фото.
|
||||||
|
Начали с Перемиловской высоты, потом поехали к заброшенной усадьбе.
|
||||||
|
Закончили в заброшенном же пионер-лагере. Ну том самом, где когда-то снимали страшилки.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Acc3382c091227e80d463268d0999484088edf993b306b3753b82848c24440eb8&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
+++
|
||||||
|
title = 'Курс на север'
|
||||||
|
slug = 'Dmitrov2'
|
||||||
|
image = 'images/Dmitrov-20221016-1.jpg'
|
||||||
|
date = "2022-10-16T00:00:00"
|
||||||
|
description = 'памятник героям, усадьба, пионер-лагерь'
|
||||||
|
disqus_identifier = '64'
|
||||||
|
+++
|
||||||
|
Мы ездили двумя экипажами - чёрное и белое на фото.
|
||||||
|
Начали с Перемиловской высоты, потом поехали к заброшенной усадьбе.
|
||||||
|
Закончили в заброшенном же пионер-лагере. Ну том самом, где когда-то снимали страшилки.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Acc3382c091227e80d463268d0999484088edf993b306b3753b82848c24440eb8&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'В погоне за солнцем'
|
||||||
|
slug = 'dmitrov'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dmitrov_20210328-1.jpg"
|
||||||
|
date = "2021-03-28T00:00:00"
|
||||||
|
description = 'морозные кадры раннего утра'
|
||||||
|
disqus_identifier = '2'
|
||||||
|
+++
|
||||||
|
Что может быть прекраснее, чем ранняя весна? Когда снег ещё лежит, лужи покрыты коркой льда, а местами уже появляются проталины. Вот и я проникся подобной картиной, когда решил уехать на рассвете подальше от Москвы.
|
||||||
|
|
||||||
|
Это была вторая поездка в череде путешествий, которые впоследствии стали для меня неотделимой частью выходного дня. В этот раз авантюрным настроем проникся мой друг (фото его машины вы видите в кадре) и мы поехали вдвоём, так как я хотел поэкспериментировать со съёмкой в движении. Забегая вперёд - всё получилось, хотя у меня были некоторые опасения.
|
||||||
|
Во-первых, я опасался потери сигнала от дрона, который летит параллельно движению автомобиля, в котором сидит пилот с пультом.
|
||||||
|
Во-вторых, свежи ещё были воспоминания от утраты предыдущего дрона (это отдельная история) и перерыв в полётах почти на полгода мог негативно сказаться на моих навыках управления.
|
||||||
|
Тем не менее, всё обошлось и помимо красивых кадров я обзавёлся новым навыком - съёмкой в движении, когда пилот и дрон двигаются параллельно. Этот навык мне очень пригодился впоследствии, в последюущих поездках.
|
||||||
|
Плюс появилась зависимость от экспресс-поездок на рассвете - я путешествую утром (ночью) по выходным уже более 2-х лет и мне не надоедает. Адреналин от ранних поездок, новые места, новые люди (которым тоже "зашёл" этот формат), куча свободного времени в выходные (утром нет пробок и после возвращения весь день свободен) - в общем это надо прочувствовать, словами передать невозможно. Что я и предлагаю вам сделать - на этом ресурсе будут отчёты о прошедших поездках, анонс планируемых мероприятий, а также возможность предлагать свои варианты и искать попутчиков.
|
||||||
|
Поедем полетим!
|
||||||
|
{{< youtube id="TkAanBQ8gtw" >}}
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A4c18d633521f029d20462231afef3dc2c85b6b9c996cc031994f3925d5cc38c7&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'В погоне за солнцем'
|
||||||
|
slug = 'dmitrov'
|
||||||
|
image = 'images/Dmitrov_20210328-1.jpg'
|
||||||
|
date = "2021-03-28T00:00:00"
|
||||||
|
description = 'морозные кадры раннего утра'
|
||||||
|
disqus_identifier = '2'
|
||||||
|
+++
|
||||||
|
Что может быть прекраснее, чем ранняя весна? Когда снег ещё лежит, лужи покрыты коркой льда, а местами уже появляются проталины. Вот и я проникся подобной картиной, когда решил уехать на рассвете подальше от Москвы.
|
||||||
|
|
||||||
|
Это была вторая поездка в череде путешествий, которые впоследствии стали для меня неотделимой частью выходного дня. В этот раз авантюрным настроем проникся мой друг (фото его машины вы видите в кадре) и мы поехали вдвоём, так как я хотел поэкспериментировать со съёмкой в движении. Забегая вперёд - всё получилось, хотя у меня были некоторые опасения.
|
||||||
|
Во-первых, я опасался потери сигнала от дрона, который летит параллельно движению автомобиля, в котором сидит пилот с пультом.
|
||||||
|
Во-вторых, свежи ещё были воспоминания от утраты предыдущего дрона (это отдельная история) и перерыв в полётах почти на полгода мог негативно сказаться на моих навыках управления.
|
||||||
|
Тем не менее, всё обошлось и помимо красивых кадров я обзавёлся новым навыком - съёмкой в движении, когда пилот и дрон двигаются параллельно. Этот навык мне очень пригодился впоследствии, в последюущих поездках.
|
||||||
|
Плюс появилась зависимость от экспресс-поездок на рассвете - я путешествую утром (ночью) по выходным уже более 2-х лет и мне не надоедает. Адреналин от ранних поездок, новые места, новые люди (которым тоже "зашёл" этот формат), куча свободного времени в выходные (утром нет пробок и после возвращения весь день свободен) - в общем это надо прочувствовать, словами передать невозможно. Что я и предлагаю вам сделать - на этом ресурсе будут отчёты о прошедших поездках, анонс планируемых мероприятий, а также возможность предлагать свои варианты и искать попутчиков.
|
||||||
|
Поедем полетим!
|
||||||
|
{{< youtube id="TkAanBQ8gtw" >}}
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A4c18d633521f029d20462231afef3dc2c85b6b9c996cc031994f3925d5cc38c7&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'Дронослёт'
|
||||||
|
slug = 'Dronoslet'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dronoslet_20240705_1.jpg"
|
||||||
|
date = "2024-06-05T00:00:00"
|
||||||
|
description = 'Дюкинский заказник'
|
||||||
|
disqus_identifier = '104'
|
||||||
|
+++
|
||||||
|
В отпуск удалось вырваться в это место - уголок Карелии во Владимирской области. Красивое место, о котором я рассказывал чуть раньше. Собиралось ехать много людей, но кто-то не смог, кто-то развернулся из-за непогоды, остались самые стойкие. И это было вознаграждено - непогода практически обошла нас стороной, полёты прошли отлично. Ну и у костра удалось посидеть не раз.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="53475UN_nDo" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1cf4ef218b7579bd46675aea4a1e4de18da04728f79b3916a596c68cc0be915f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
+++
|
||||||
|
title = 'Дронослёт'
|
||||||
|
slug = 'Dronoslet'
|
||||||
|
image = 'images/Dronoslet_20240705_1.jpg'
|
||||||
|
date = "2024-06-05T00:00:00"
|
||||||
|
description = 'Дюкинский заказник'
|
||||||
|
disqus_identifier = '104'
|
||||||
|
+++
|
||||||
|
В отпуск удалось вырваться в это место - уголок Карелии во Владимирской области. Красивое место, о котором я рассказывал чуть раньше. Собиралось ехать много людей, но кто-то не смог, кто-то развернулся из-за непогоды, остались самые стойкие. И это было вознаграждено - непогода практически обошла нас стороной, полёты прошли отлично. Ну и у костра удалось посидеть не раз.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="53475UN_nDo" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1cf4ef218b7579bd46675aea4a1e4de18da04728f79b3916a596c68cc0be915f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Морозный туман'
|
||||||
|
slug = 'Dubna'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dubna-20231118-1.jpg"
|
||||||
|
date = "2023-11-18T00:00:00"
|
||||||
|
description = 'или полетали вопреки'
|
||||||
|
disqus_identifier = '86'
|
||||||
|
+++
|
||||||
|
Путь был неблизкий, но окрыляло осознание, что можно полетать вопреки запретам. Первая накладка произошла, когда дорога уткнулась в паромную переправу. Но это оказалось довольно любопытно - первый раз переправлялся на пароме в Московской области. Дальше - больше. За несколько километров до точки назначения дорогу предградил забор "элитной недвижимости". Ну что ж, бывает, пешком в обход и вот она, точка старта. Однако выше 50 м поднять дроны не получилось из-за тумана - ничего не видно, да ещё и мороз на улице. Весь конденсат моментально замерзает на лопастях и моторе подвеса. Так что получилось не очень много кадров, зато необычных, плюс интересные события по пути.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="TiVJVDeprQo" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1494ad64f441edeb196fde1a4cca8350cb3be4a61173e1dfcc0d8637ce2fd01e&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Морозный туман'
|
||||||
|
slug = 'Dubna'
|
||||||
|
image = 'images/Dubna-20231118-1.jpg'
|
||||||
|
date = "2023-11-18T00:00:00"
|
||||||
|
description = 'или полетали вопреки'
|
||||||
|
disqus_identifier = '86'
|
||||||
|
+++
|
||||||
|
Путь был неблизкий, но окрыляло осознание, что можно полетать вопреки запретам. Первая накладка произошла, когда дорога уткнулась в паромную переправу. Но это оказалось довольно любопытно - первый раз переправлялся на пароме в Московской области. Дальше - больше. За несколько километров до точки назначения дорогу предградил забор "элитной недвижимости". Ну что ж, бывает, пешком в обход и вот она, точка старта. Однако выше 50 м поднять дроны не получилось из-за тумана - ничего не видно, да ещё и мороз на улице. Весь конденсат моментально замерзает на лопастях и моторе подвеса. Так что получилось не очень много кадров, зато необычных, плюс интересные события по пути.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="TiVJVDeprQo" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1494ad64f441edeb196fde1a4cca8350cb3be4a61173e1dfcc0d8637ce2fd01e&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
+++
|
||||||
|
title = 'Дюкинский заказник'
|
||||||
|
slug = 'Dukyn2504'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Dukyn_20250425_1.jpg"
|
||||||
|
date = "2025-04-25T00:00:00"
|
||||||
|
description = 'скалы'
|
||||||
|
disqus_identifier = '129'
|
||||||
|
+++
|
||||||
|
Очередной выезд в маленькую Карелию, Владимирская область. Скалы, лес, отличная погода и вот это вот всё. Да, ещё запускал одновременно два дрона с двух рук. Планируется выезд туда же с палатками, но можно и одним днём. Нужна погода.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="jXGd3HZl3io" >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1cf4ef218b7579bd46675aea4a1e4de18da04728f79b3916a596c68cc0be915f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
+++
|
||||||
|
title = 'Дюкинский заказник'
|
||||||
|
slug = 'Dukyn2504'
|
||||||
|
image = 'images/Dukyn_20250425_1.jpg'
|
||||||
|
date = "2025-04-25T00:00:00"
|
||||||
|
description = 'скалы'
|
||||||
|
disqus_identifier = '129'
|
||||||
|
+++
|
||||||
|
Очередной выезд в маленькую Карелию, Владимирская область. Скалы, лес, отличная погода и вот это вот всё. Да, ещё запускал одновременно два дрона с двух рук. Планируется выезд туда же с палатками, но можно и одним днём. Нужна погода.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="jXGd3HZl3io" >}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1cf4ef218b7579bd46675aea4a1e4de18da04728f79b3916a596c68cc0be915f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Эльбрус'
|
||||||
|
slug = 'Elbrus'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Elbrus-20230128-1.jpg"
|
||||||
|
date = "2023-01-28T00:00:00"
|
||||||
|
description = 'одним днем'
|
||||||
|
disqus_identifier = '74'
|
||||||
|
+++
|
||||||
|
Поездка опять спонтанная, но увлекательная. Утром вылет, потом машина до подножия Эльбруса. Дальше - обед на вершине и спуск вниз. А оттуда опять в Москву.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1bc6b865af3c8cb3776fe2736ae81c8cdae66a84782b1193a77582d2af51762e&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Эльбрус'
|
||||||
|
slug = 'Elbrus'
|
||||||
|
image = 'images/Elbrus-20230128-1.jpg'
|
||||||
|
date = "2023-01-28T00:00:00"
|
||||||
|
description = 'одним днем'
|
||||||
|
disqus_identifier = '74'
|
||||||
|
+++
|
||||||
|
Поездка опять спонтанная, но увлекательная. Утром вылет, потом машина до подножия Эльбруса. Дальше - обед на вершине и спуск вниз. А оттуда опять в Москву.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1bc6b865af3c8cb3776fe2736ae81c8cdae66a84782b1193a77582d2af51762e&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
+++
|
||||||
|
title = 'Ёлки-палки'
|
||||||
|
slug = 'Elki-palki'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Elki-palki_20231216_1.jpg"
|
||||||
|
date = "2023-12-16T00:00:00"
|
||||||
|
description = 'очередная попытка'
|
||||||
|
disqus_identifier = '88'
|
||||||
|
+++
|
||||||
|
Очередная наша попытка снять открытку на снегу. Это почти как фильм "Ёлки" - столько же серий, а никак не закончится. В общем это максимально близкая попытка из тех, что были.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Dst0ywq22Ow?si=RhHob5ubD2KNBJR6" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
+++
|
||||||
|
title = 'Ёлки-палки'
|
||||||
|
slug = 'Elki-palki'
|
||||||
|
image = 'images/Elki-palki_20231216_1.jpg'
|
||||||
|
date = "2023-12-16T00:00:00"
|
||||||
|
description = 'очередная попытка'
|
||||||
|
disqus_identifier = '88'
|
||||||
|
+++
|
||||||
|
Очередная наша попытка снять открытку на снегу. Это почти как фильм "Ёлки" - столько же серий, а никак не закончится. В общем это максимально близкая попытка из тех, что были.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Dst0ywq22Ow?si=RhHob5ubD2KNBJR6" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Фёдоровское'
|
||||||
|
slug = 'Fedor'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Fedor_20240623_1.jpg"
|
||||||
|
date = "2024-06-23T00:00:00"
|
||||||
|
description = 'погоня за птицами'
|
||||||
|
disqus_identifier = '103'
|
||||||
|
+++
|
||||||
|
Красивые место, приезжал сюда зимой. Летом решил повторить, но не всё пошло по плану. Во-первых, на берегу оказалось очень много отдыхающих с палатками. Во-вторых, зимой природа здесь выглядела немного интереснее. Но всё же получилось набрать красивые кадры.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Rr-LWaFThJM" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A50155a005b61cb8433db313b220b910c5746353f9357656cdf01592c11f3810a&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Фёдоровское'
|
||||||
|
slug = 'Fedor'
|
||||||
|
image = 'images/Fedor_20240623_1.jpg'
|
||||||
|
date = "2024-06-23T00:00:00"
|
||||||
|
description = 'погоня за птицами'
|
||||||
|
disqus_identifier = '103'
|
||||||
|
+++
|
||||||
|
Красивые место, приезжал сюда зимой. Летом решил повторить, но не всё пошло по плану. Во-первых, на берегу оказалось очень много отдыхающих с палатками. Во-вторых, зимой природа здесь выглядела немного интереснее. Но всё же получилось набрать красивые кадры.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="Rr-LWaFThJM" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A50155a005b61cb8433db313b220b910c5746353f9357656cdf01592c11f3810a&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Ярополецкая ГЭС'
|
||||||
|
slug = 'GES'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/GES-20220418-1.jpg"
|
||||||
|
date = "2022-04-18T00:00:00"
|
||||||
|
description = 'атмосферное место с историей'
|
||||||
|
disqus_identifier = '49'
|
||||||
|
+++
|
||||||
|
Первый раз я приезжал сюда зимой и ничего не увидел в темноте. Пришлось ехать ещё раз, уже компанией. Красивое место, необычное.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="X91ucDNNcuA" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae58f530caa82072e236a3f17afea5dd9357a2d8f1b75100df3f2942e6282ff75&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Ярополецкая ГЭС'
|
||||||
|
slug = 'GES'
|
||||||
|
image = 'images/GES-20220418-1.jpg'
|
||||||
|
date = "2022-04-18T00:00:00"
|
||||||
|
description = 'атмосферное место с историей'
|
||||||
|
disqus_identifier = '49'
|
||||||
|
+++
|
||||||
|
Первый раз я приезжал сюда зимой и ничего не увидел в темноте. Пришлось ехать ещё раз, уже компанией. Красивое место, необычное.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="X91ucDNNcuA" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae58f530caa82072e236a3f17afea5dd9357a2d8f1b75100df3f2942e6282ff75&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Глубоково'
|
||||||
|
slug = 'Glubokovo'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Glubokovo-20220206-1.jpg"
|
||||||
|
date = "2022-02-06T00:00:00"
|
||||||
|
description = 'церковь на холме'
|
||||||
|
disqus_identifier = '45'
|
||||||
|
+++
|
||||||
|
Очень красивое место на берегу реки. Сюда я ездил и летом, причём не раз.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="xrkNfJrPmm0" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Aba4a10d8af60af9f4f52776768330bdf75cefed368fdc20a4499a7ae1289cb6b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
+++
|
||||||
|
title = 'Глубоково'
|
||||||
|
slug = 'Glubokovo'
|
||||||
|
image = 'images/Glubokovo-20220206-1.jpg'
|
||||||
|
date = "2022-02-06T00:00:00"
|
||||||
|
description = 'церковь на холме'
|
||||||
|
disqus_identifier = '45'
|
||||||
|
+++
|
||||||
|
Очень красивое место на берегу реки. Сюда я ездил и летом, причём не раз.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="xrkNfJrPmm0" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Aba4a10d8af60af9f4f52776768330bdf75cefed368fdc20a4499a7ae1289cb6b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
+++
|
||||||
|
title = ' Гольф-клуб'
|
||||||
|
slug = 'Golf'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Golf-20220525-0.jpg"
|
||||||
|
date = "2022-06-25T00:00:00"
|
||||||
|
description = 'турнир по гольфу и соревнования по футболу'
|
||||||
|
disqus_identifier = '14'
|
||||||
|
+++
|
||||||
|
История одного дня - проходил значимый турнир по гольфу - кубок Мэра Дмитрова. Параллельно проходили футбольные матчи среди детей. Вот где неподдельные эмоции.
|
||||||
|
Рассказывать нечего, я был статистом. Поэтому просто посмотрите и прочувствуйте атмосферу. Только вот видео не будет - оно только для участников, не обессудьте.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae12fc32e518acc8015f60abf0c2a3d2386c695ddafc7fcb51bce5c18808e660b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
+++
|
||||||
|
title = ' Гольф-клуб'
|
||||||
|
slug = 'Golf'
|
||||||
|
image = 'images/Golf-20220525-0.jpg'
|
||||||
|
date = "2022-06-25T00:00:00"
|
||||||
|
description = 'турнир по гольфу и соревнования по футболу'
|
||||||
|
disqus_identifier = '14'
|
||||||
|
+++
|
||||||
|
История одного дня - проходил значимый турнир по гольфу - кубок Мэра Дмитрова. Параллельно проходили футбольные матчи среди детей. Вот где неподдельные эмоции.
|
||||||
|
Рассказывать нечего, я был статистом. Поэтому просто посмотрите и прочувствуйте атмосферу. Только вот видео не будет - оно только для участников, не обессудьте.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae12fc32e518acc8015f60abf0c2a3d2386c695ddafc7fcb51bce5c18808e660b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
+++
|
||||||
|
title = 'Горбовская ГЭС'
|
||||||
|
slug = 'Gorb'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Gorb_20250304_1.jpg"
|
||||||
|
date = "2024-03-04T00:00:00"
|
||||||
|
description = 'рассвет'
|
||||||
|
disqus_identifier = '124'
|
||||||
|
+++
|
||||||
|
В это утро пламенел не только рассвет, по пути пришлось остановиться и звонить спасателям. На обратном пути видел, что уже потушили.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="bycOi4BhiME" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A5cfc3365650394e404a7fd48fae90f98f047471532184bba1235cc6ad6b46cca&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
+++
|
||||||
|
title = 'Горбовская ГЭС'
|
||||||
|
slug = 'Gorb'
|
||||||
|
image = 'images/Gorb_20250304_1.jpg'
|
||||||
|
date = "2024-03-04T00:00:00"
|
||||||
|
description = 'рассвет'
|
||||||
|
disqus_identifier = '124'
|
||||||
|
+++
|
||||||
|
В это утро пламенел не только рассвет, по пути пришлось остановиться и звонить спасателям. На обратном пути видел, что уже потушили.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="bycOi4BhiME" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A5cfc3365650394e404a7fd48fae90f98f047471532184bba1235cc6ad6b46cca&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
+++
|
||||||
|
title = 'Открытка 2024'
|
||||||
|
slug = 'HappyNew'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/HappyNew_20231230_1.jpg"
|
||||||
|
date = "2023-12-30T00:00:00"
|
||||||
|
description = 'работа ногами'
|
||||||
|
disqus_identifier = '90'
|
||||||
|
+++
|
||||||
|
Со снегоходами никак не получалось, пришлось самому, своими ногами. В общм вот открытка к Новому году.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="ICmgBvIivT0?si=kRUxwA9ZAX7OxQEP" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
+++
|
||||||
|
title = 'Открытка 2024'
|
||||||
|
slug = 'HappyNew'
|
||||||
|
image = 'images/HappyNew_20231230_1.jpg'
|
||||||
|
date = "2023-12-30T00:00:00"
|
||||||
|
description = 'работа ногами'
|
||||||
|
disqus_identifier = '90'
|
||||||
|
+++
|
||||||
|
Со снегоходами никак не получалось, пришлось самому, своими ногами. В общм вот открытка к Новому году.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="ICmgBvIivT0?si=kRUxwA9ZAX7OxQEP" >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
+++
|
||||||
|
title = 'Усадьба Храповицкого'
|
||||||
|
slug = 'Hrap'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Hrap-20230114-1.jpg"
|
||||||
|
date = "2023-01-14T00:00:00"
|
||||||
|
description = 'дикая природа и старинная архитектура'
|
||||||
|
disqus_identifier = '73'
|
||||||
|
+++
|
||||||
|
Эта поездка пошла не по плану. Но так бывает. Во-первых, усадьба оказалась сильно подсвечена и поснимать с долгой выдержкой не удалось. Во-вторых, прямо в центре Владимира, куда мы поехали на рассвете, моя машина застряла на уклоне и пришлось искать варианты, чтобы затащить машину наверх. Процесс вызволения машины из снежного плена я выкладывал в Телеграм. А здесь просто пара фоток в память о той поездке.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A7a4b7d473edd89b1fdc55945502989d0094f90829549ae1493bb935b567a174f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
+++
|
||||||
|
title = 'Усадьба Храповицкого'
|
||||||
|
slug = 'Hrap'
|
||||||
|
image = 'images/Hrap-20230114-1.jpg'
|
||||||
|
date = "2023-01-14T00:00:00"
|
||||||
|
description = 'дикая природа и старинная архитектура'
|
||||||
|
disqus_identifier = '73'
|
||||||
|
+++
|
||||||
|
Эта поездка пошла не по плану. Но так бывает. Во-первых, усадьба оказалась сильно подсвечена и поснимать с долгой выдержкой не удалось. Во-вторых, прямо в центре Владимира, куда мы поехали на рассвете, моя машина застряла на уклоне и пришлось искать варианты, чтобы затащить машину наверх. Процесс вызволения машины из снежного плена я выкладывал в Телеграм. А здесь просто пара фоток в память о той поездке.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A7a4b7d473edd89b1fdc55945502989d0094f90829549ae1493bb935b567a174f&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Иосифо-Волоцкий монастырь'
|
||||||
|
slug = 'Iosifo'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Iosifo-20220417-1.jpg"
|
||||||
|
date = "2022-04-17T00:00:00"
|
||||||
|
description = 'ранеей весной'
|
||||||
|
disqus_identifier = '48'
|
||||||
|
+++
|
||||||
|
Красивый монастырь в Волоколамском районе Московской области.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="UVu2YyHAMNw" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A4c6d0509c214110ffbc7f6fe507ed4cba78139824115df951a891226267a495b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
+++
|
||||||
|
title = 'Иосифо-Волоцкий монастырь'
|
||||||
|
slug = 'Iosifo'
|
||||||
|
image = 'images/Iosifo-20220417-1.jpg'
|
||||||
|
date = "2022-04-17T00:00:00"
|
||||||
|
description = 'ранеей весной'
|
||||||
|
disqus_identifier = '48'
|
||||||
|
+++
|
||||||
|
Красивый монастырь в Волоколамском районе Московской области.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="UVu2YyHAMNw" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A4c6d0509c214110ffbc7f6fe507ed4cba78139824115df951a891226267a495b&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
+++
|
||||||
|
title = 'Кабардино-Балкария'
|
||||||
|
slug = 'KBR'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/KBR-20210928-1.jpg"
|
||||||
|
date = "2021-09-28T00:00:00"
|
||||||
|
description = 'первая поездка в горную сказку'
|
||||||
|
disqus_identifier = '24'
|
||||||
|
+++
|
||||||
|
История поездки в Кабардино-Балкарию похожа на череду случайностей, но это сама судьба привела меня в эту горную республику.
|
||||||
|
Началось всё с того, что мой коллега заболел ковидом прямо перед отпуском. Через пару дней и у меня был положительный результат, а потом и у всей нашей семьи. Я тоже должен был быть в отпуске, в итоге его пришлось переносить и вместо поездки в дом отдыха мы вчетвером изолировались в нашей однушке.
|
||||||
|
Когда болезнь отступила, мне пришлось делить отпуск и в общем-то не было идей, куда поехать.
|
||||||
|
|
||||||
|
Поэтому сначала мы с женой слетали в Калиниград, рассказывал об этом раньше.
|
||||||
|
Потом я неделю поработал и снова ушёл в отпуск на неделю. Но жена сказала, что не выдержит мой темп и я задумался об одиночной поездке в Дагестан - его со всех ресурсов рекламировали как русскую Швейцарию, многие мои друзья там были. Забегая вперёд - в Дагестан я ездил потом, поэтому рад, что всё-таки открыл для себя именно КБР.
|
||||||
|
Поскольку у меня были некоторые опасения по одиночной поездке на Кавказ, я предложил поехать своему другу - он родом как раз из КБР и он отговорил меня ехать в Дагестан. Правда в последний момент он не смог поехать и в КБР, но уверил, что там спокойно и безопасно - главное не лазить по горам одному.
|
||||||
|
|
||||||
|
Так что сидя в кафе с семьёй воскресным вечером в Серпухове, я купил билеты на утро понедельника и забронировал отель.
|
||||||
|
Это была первая из многочисленных поездок в КБР, всё было просто превосходно.
|
||||||
|
А Эльбрус видно над облаками уже из самолёта, при подлёте к Нальчику.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
А теперь кадры с высоты птичьего полёта.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Видео из Чегемских водопадов
|
||||||
|
|
||||||
|
{{< youtube id="OjvlU7vpbf4" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Ресторан Сосруко
|
||||||
|
|
||||||
|
{{< youtube id="rp2nnGm0hzY" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Голубые озёра
|
||||||
|
|
||||||
|
{{< youtube id="BtufYddaZTI" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Панорама Чегет-Эльбрус
|
||||||
|
|
||||||
|
{{< youtube id="Hfskc42cvv4" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Замок Шато Эркен
|
||||||
|
|
||||||
|
{{< youtube id="ylron7gXqZU" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Приэльбрусье
|
||||||
|
|
||||||
|
{{< youtube id="V2ji7Q6HHow" >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Af632ee0c3b0c5962b22da697bca7cfd3b74d71ebccbb10247489afbda871f6a0&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
+++
|
||||||
|
title = 'Кабардино-Балкария'
|
||||||
|
slug = 'KBR'
|
||||||
|
image = 'images/KBR-20210928-1.jpg'
|
||||||
|
date = "2021-09-28T00:00:00"
|
||||||
|
description = 'первая поездка в горную сказку'
|
||||||
|
disqus_identifier = '24'
|
||||||
|
+++
|
||||||
|
История поездки в Кабардино-Балкарию похожа на череду случайностей, но это сама судьба привела меня в эту горную республику.
|
||||||
|
Началось всё с того, что мой коллега заболел ковидом прямо перед отпуском. Через пару дней и у меня был положительный результат, а потом и у всей нашей семьи. Я тоже должен был быть в отпуске, в итоге его пришлось переносить и вместо поездки в дом отдыха мы вчетвером изолировались в нашей однушке.
|
||||||
|
Когда болезнь отступила, мне пришлось делить отпуск и в общем-то не было идей, куда поехать.
|
||||||
|
|
||||||
|
Поэтому сначала мы с женой слетали в Калиниград, рассказывал об этом раньше.
|
||||||
|
Потом я неделю поработал и снова ушёл в отпуск на неделю. Но жена сказала, что не выдержит мой темп и я задумался об одиночной поездке в Дагестан - его со всех ресурсов рекламировали как русскую Швейцарию, многие мои друзья там были. Забегая вперёд - в Дагестан я ездил потом, поэтому рад, что всё-таки открыл для себя именно КБР.
|
||||||
|
Поскольку у меня были некоторые опасения по одиночной поездке на Кавказ, я предложил поехать своему другу - он родом как раз из КБР и он отговорил меня ехать в Дагестан. Правда в последний момент он не смог поехать и в КБР, но уверил, что там спокойно и безопасно - главное не лазить по горам одному.
|
||||||
|
|
||||||
|
Так что сидя в кафе с семьёй воскресным вечером в Серпухове, я купил билеты на утро понедельника и забронировал отель.
|
||||||
|
Это была первая из многочисленных поездок в КБР, всё было просто превосходно.
|
||||||
|
А Эльбрус видно над облаками уже из самолёта, при подлёте к Нальчику.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
А теперь кадры с высоты птичьего полёта.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Видео из Чегемских водопадов
|
||||||
|
|
||||||
|
{{< youtube id="OjvlU7vpbf4" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Ресторан Сосруко
|
||||||
|
|
||||||
|
{{< youtube id="rp2nnGm0hzY" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Голубые озёра
|
||||||
|
|
||||||
|
{{< youtube id="BtufYddaZTI" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Панорама Чегет-Эльбрус
|
||||||
|
|
||||||
|
{{< youtube id="Hfskc42cvv4" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Замок Шато Эркен
|
||||||
|
|
||||||
|
{{< youtube id="ylron7gXqZU" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Приэльбрусье
|
||||||
|
|
||||||
|
{{< youtube id="V2ji7Q6HHow" >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Af632ee0c3b0c5962b22da697bca7cfd3b74d71ebccbb10247489afbda871f6a0&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
+++
|
||||||
|
title = 'Карачаево-Черкессия'
|
||||||
|
slug = 'KCR'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/KCR-20230603-1.jpg"
|
||||||
|
date = "2023-06-03T00:00:00"
|
||||||
|
description = 'вся поездка за 30 часов'
|
||||||
|
disqus_identifier = '80'
|
||||||
|
+++
|
||||||
|
Как вы возможно помните, в Кабардино-Балкарии, которая покорила меня, ввели запрет на беспилотники. Поэтому полетать было решено в Карачаево-Черкессии, где запрета нет. В пятницу ночью вылет, в субботу ночью обратно. А на месте передвигались на джипе, прекрасный гид нас сопровождал.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="KFnNxuGpN-Y" >}}
|
||||||
|
|
||||||
|
{{< youtube id="BkRiP5vGg9o" >}}
|
||||||
|
|
||||||
|
{{< youtube id="ItyM9Lm-aJg" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A7e3ba2929245ff9fd9339d2942543fd1bd025754e0f9ea7536f987ede38290e8&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
+++
|
||||||
|
title = 'Карачаево-Черкессия'
|
||||||
|
slug = 'KCR'
|
||||||
|
image = 'images/KCR-20230603-1.jpg'
|
||||||
|
date = "2023-06-03T00:00:00"
|
||||||
|
description = 'вся поездка за 30 часов'
|
||||||
|
disqus_identifier = '80'
|
||||||
|
+++
|
||||||
|
Как вы возможно помните, в Кабардино-Балкарии, которая покорила меня, ввели запрет на беспилотники. Поэтому полетать было решено в Карачаево-Черкессии, где запрета нет. В пятницу ночью вылет, в субботу ночью обратно. А на месте передвигались на джипе, прекрасный гид нас сопровождал.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{{< youtube id="KFnNxuGpN-Y" >}}
|
||||||
|
|
||||||
|
{{< youtube id="BkRiP5vGg9o" >}}
|
||||||
|
|
||||||
|
{{< youtube id="ItyM9Lm-aJg" >}}
|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A7e3ba2929245ff9fd9339d2942543fd1bd025754e0f9ea7536f987ede38290e8&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
+++
|
||||||
|
title = 'Калининград'
|
||||||
|
slug = 'Kalininrad'
|
||||||
|
image = "https://s3.regru.cloud/sleeptrip-dev/images/Kalininrad-20210913-1.jpg"
|
||||||
|
date = "2021-09-13T00:00:00"
|
||||||
|
description = 'очарование готической архитектуры'
|
||||||
|
disqus_identifier = '25'
|
||||||
|
+++
|
||||||
|
Это мы с женой махнули на недельку в Калининград. Запланированный отпуск сорвался из-за того, что заболели ковидом. Поэтому пришлось искать другие варианты. Выручили родители, они забрали наших сорванцов к себе и мы улетели на неделю.
|
||||||
|
Получилось обойти весь Калининград, просто фотки не везде, ездили в Янтарный, Светлогорск, Зеленоградск.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae793e02d31070bc1fe8832959306fb60efbf4f4953548e631c74e27ed587c121&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
+++
|
||||||
|
title = 'Калининград'
|
||||||
|
slug = 'Kalininrad'
|
||||||
|
image = 'images/Kalininrad-20210913-1.jpg'
|
||||||
|
date = "2021-09-13T00:00:00"
|
||||||
|
description = 'очарование готической архитектуры'
|
||||||
|
disqus_identifier = '25'
|
||||||
|
+++
|
||||||
|
Это мы с женой махнули на недельку в Калининград. Запланированный отпуск сорвался из-за того, что заболели ковидом. Поэтому пришлось искать другие варианты. Выручили родители, они забрали наших сорванцов к себе и мы улетели на неделю.
|
||||||
|
Получилось обойти весь Калининград, просто фотки не везде, ездили в Янтарный, Светлогорск, Зеленоградск.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
📍 Локация
|
||||||
|
{{< rawhtml >}}
|
||||||
|
<div class="yandex-map-container">
|
||||||
|
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3Ae793e02d31070bc1fe8832959306fb60efbf4f4953548e631c74e27ed587c121&width=800&height=400&lang=ru_RU&scroll=true"></script>
|
||||||
|
</div>
|
||||||
|
{{< /rawhtml >}}
|
||||||
|
|
||||||
|
{{< rawhtml >}}
|
||||||
|
{{< back-to-top >}}
|
||||||
|
{{< /rawhtml >}}
|
||||||