Compare commits
1319 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e646af56a | |||
| 23d2a915dc | |||
| fa7ff6a9c6 | |||
| fda869f1dc | |||
| 1871e2e580 | |||
| 9897d92e53 | |||
| 1ef67972df | |||
| e90be519a7 | |||
| d04d18dff2 | |||
| 05fab1c999 | |||
| 8560c89e06 | |||
| d2768b1f11 | |||
| 60f87fd294 | |||
| 736d07a30b | |||
| 2bc3167dbd | |||
| 17e1b30175 | |||
| b78be61ee8 | |||
| 3b8b5871a6 | |||
| 19eca49d2a | |||
| 6d02706d4d | |||
| 550a92684e | |||
| e6f94c924d | |||
| b863ad6b78 | |||
| 157291c2d5 | |||
| 246f307980 | |||
| 67b9c0b462 | |||
| d82c75d7cc | |||
| 03ec0ddfbb | |||
| d02d09bb9a | |||
| dc98f61d69 | |||
| a62c975c7e | |||
| ee6e67243d | |||
| ef8c1ebb88 | |||
| b6a23d69d6 | |||
| 530812f810 | |||
| fd361d47ed | |||
| 401c8a7637 | |||
| a963f5a881 | |||
| 07217e25ab | |||
| 3ce9dfb10f | |||
| eddedfdf1b | |||
| 1f07d8eb15 | |||
| f4368f54c5 | |||
| bd032dff36 | |||
| e859e47d1b | |||
| 4175b06039 | |||
| 6df436c718 | |||
| b20f3a8762 | |||
| 503e1cf7d4 | |||
| 5fc25ab8f6 | |||
| 6381a2192e | |||
| b691e143a2 | |||
| afdf6ce778 | |||
| def0559a55 | |||
| 84cc97dc78 | |||
| 89df65c884 | |||
| 9331690b0d | |||
| c6189e5020 | |||
| 54f7682e1a | |||
| 1baa3f0fb6 | |||
| ed543e8825 | |||
| aa0493e4f0 | |||
| c7646bd600 | |||
| 9ea153b402 | |||
| d90810afd7 | |||
| d12ac86d66 | |||
| 8579bde607 | |||
| c7ab8534f1 | |||
| cde3ef9689 | |||
| 17b88b6a4f | |||
| 95f5de544d | |||
| 4ae8d8ac8c | |||
| 50bed824f6 | |||
| 9368da2c04 | |||
| 4182d9f506 | |||
| 757e89467a | |||
| aac1532b7e | |||
| d866ca71e1 | |||
| 15ef81533f | |||
| beac023875 | |||
| 56f36ec5e6 | |||
| 42d6ad6111 | |||
| 9f8cab5626 | |||
| 42cc06886a | |||
| 20d7e4bc10 | |||
| 3f1ed50f67 | |||
| 68bedd1c60 | |||
| 335defc9bf | |||
| a0c9edd43c | |||
| 214189883e | |||
| 34d8af3e2c | |||
| f415855612 | |||
| b68dedc1b8 | |||
| c14cec048b | |||
| ecb0933c17 | |||
| 138afb26c4 | |||
| 3d56224bb6 | |||
| 025a7de060 | |||
| f0da7146eb | |||
| 2a4e486a6e | |||
| 5b2f950d40 | |||
| 71c30a952c | |||
| e0bc0bc714 | |||
| 4682ba010f | |||
| 96f6c86d74 | |||
| f79409e534 | |||
| 70034113b4 | |||
| eff54adcc1 | |||
| 0671f8b758 | |||
| 5c57c5d3e4 | |||
| 9e28763bef | |||
| 3653a5d803 | |||
| 02c1304b99 | |||
| e9c403c8ea | |||
| fc3f6384f2 | |||
| e4322d620a | |||
| f9362749b1 | |||
| d2efdade19 | |||
| 9f420e67d2 | |||
| 8314548711 | |||
| 537b721044 | |||
| 9b0a86f421 | |||
| 7b4592830b | |||
| ab04d85d7e | |||
| 9c0844f0ed | |||
| 6abf8222d7 | |||
| 30bac18a85 | |||
| 36d2904bc4 | |||
| 32be6c8be1 | |||
| b2d5e9ba92 | |||
| d2831a8a46 | |||
| 42fb04283f | |||
| 4bfcabdeb5 | |||
| e8a6c3f1de | |||
| 59f0c3fb63 | |||
| 5b9c00c4a7 | |||
| 5b7cdce88d | |||
| 64e2ffe48f | |||
| ef30ef228d | |||
| 6495414dc9 | |||
| d8ab25d565 | |||
| 3f87e16329 | |||
| 688d2523c3 | |||
| 7b95e5b1e3 | |||
| 840f6bfd2b | |||
| 061f0403e2 | |||
| 1131b50d0e | |||
| 934f7cea9c | |||
| fae5f9140f | |||
| 91f831a02a | |||
| ff3066d2e5 | |||
| bebf5931a1 | |||
| d3fea58709 | |||
| 28df302283 | |||
| 4f0fa4d100 | |||
| 105cd37dfe | |||
| 568f1e9f48 | |||
| 308f3cf32e | |||
| 8bc6837b45 | |||
| a46b3e060a | |||
| 4040450c79 | |||
| f92860e8ec | |||
| 1fcf0363e2 | |||
| d48b633baa | |||
| 3b07b39d89 | |||
| 989b2b3650 | |||
| 276a22f1c1 | |||
| 5d1b9dcf38 | |||
| 7511778b32 | |||
| 2372699f7c | |||
| 282e47c912 | |||
| ab35a9d47f | |||
| 13240beac8 | |||
| 1611f85a96 | |||
| b3c36107d7 | |||
| 1db30228d5 | |||
| 66e88a2eed | |||
| 89f0ca5a3f | |||
| 0985e4f525 | |||
| fbc4a079be | |||
| 230e42ecab | |||
| 9d6b42da80 | |||
| b56c1d2650 | |||
| 4679589655 | |||
| e61e7f1664 | |||
| 0168309535 | |||
| b1034ce084 | |||
| cd24c91fb1 | |||
| 18aef3aaad | |||
| fe12e11b62 | |||
| ef982ee350 | |||
| c757639805 | |||
| 3972d48835 | |||
| 82b1211f6f | |||
| 849ad8dfc5 | |||
| d24027f359 | |||
| 354c8e5361 | |||
| c40fe02b51 | |||
| 82a230e072 | |||
| 597f617c79 | |||
| ed2a5ba8f6 | |||
| 6982a88ee9 | |||
| 85903cf28c | |||
| bd13ef3f48 | |||
| 5586940832 | |||
| 54269334b6 | |||
| de27cad435 | |||
| 3a1a39c9d8 | |||
| 9869c0b32e | |||
| 4b9fd397db | |||
| 9578aba58c | |||
| ba9f2336ec | |||
| 0f7deb6c79 | |||
| 3acc19c8eb | |||
| de58e527e4 | |||
| 12275b622f | |||
| d1eac6eefe | |||
| e470b63f42 | |||
| 4da158cf36 | |||
| d1141471ab | |||
| 4be3a68477 | |||
| 01238d5506 | |||
| d8582ec582 | |||
| c239d87390 | |||
| 39e0f2e115 | |||
| 0d4d99e324 | |||
| 0f47283e52 | |||
| aed17ac521 | |||
| 5e5f2b38cd | |||
| aabce8735e | |||
| 36105fb728 | |||
| d088d37ca2 | |||
| 2d13211269 | |||
| b2eb76893f | |||
| 607f1d762b | |||
| 15a9be6e2f | |||
| 85fae04df3 | |||
| ef5cd6efca | |||
| ae13d68764 | |||
| 48d3770f26 | |||
| 204ee1ed90 | |||
| adab096319 | |||
| 2a62dd214f | |||
| febcdce8c2 | |||
| f6fdc5f5ee | |||
| fb152cb36e | |||
| 1dfa03bafe | |||
| 4232c4640d | |||
| f1c65815da | |||
| e0957c0a0d | |||
| e9412a448e | |||
| b10a649865 | |||
| ea4ce728b0 | |||
| 0fd7e81acd | |||
| 4af744e735 | |||
| f8bef82acc | |||
| 013df362ca | |||
| 3811b43fa3 | |||
| 581f73c857 | |||
| 774f4b39b7 | |||
| 36faad1880 | |||
| 3c878dee49 | |||
| 8a33548396 | |||
| dae16c6767 | |||
| a5d826c6d4 | |||
| 6d84720404 | |||
| 5886c1ec53 | |||
| bbb2e66233 | |||
| dd4b3e8632 | |||
| 5cffab8649 | |||
| 211f16e129 | |||
| 0285a47ae3 | |||
| 16da18d307 | |||
| c450e7cd54 | |||
| 47c666200e | |||
| 208a1f8509 | |||
| f22ab85814 | |||
| 0618947350 | |||
| 9f9527d200 | |||
| 8a2a87911c | |||
| 61fef3b82b | |||
| ac8d0278ad | |||
| d9bd3a2626 | |||
| 7ced6400cc | |||
| db7e0808eb | |||
| d328ea4175 | |||
| 0f69467340 | |||
| 96efad2c5a | |||
| 79454f3480 | |||
| 31f7cfc31f | |||
| 9d829ff64d | |||
| 7a15e24f7b | |||
| be8098a4ad | |||
| 0df7bec0c8 | |||
| 57b153c9a9 | |||
| 8183291381 | |||
| d91e3c20d2 | |||
| 15cbfa870f | |||
| 4a74eed4a7 | |||
| 1dd7a8d739 | |||
| 86cf384b66 | |||
| c32f99b310 | |||
| acecda7f6a | |||
| cc3d0712cb | |||
| 1baa52c677 | |||
| f4de98424f | |||
| 0d4b178072 | |||
| 58f2191d51 | |||
| e2c8d36567 | |||
| 30534ad0d6 | |||
| afff5cb0eb | |||
| 6203b5b441 | |||
| b31d644b92 | |||
| 6f87e4aa6b | |||
| 6cf124b6c9 | |||
| 7c86a45848 | |||
| f7731bc675 | |||
| dcb7266dfb | |||
| 0e9d36f6bc | |||
| 6ae189010b | |||
| 4eb731fc0c | |||
| f6d517b930 | |||
| a475295784 | |||
| 9c266c5f33 | |||
| 7a8cc6a571 | |||
| 0ad4defb6b | |||
| 7f77647048 | |||
| 9fcf183653 | |||
| 565ee3cc1b | |||
| e41a8522fc | |||
| b558de8a23 | |||
| 43a474b417 | |||
| 73eb2a1133 | |||
| 1ea056609b | |||
| 4f01ccd5de | |||
| 7b4044c15d | |||
| 4e792ea460 | |||
| aac2370fe8 | |||
| 4831f6ef13 | |||
| bc20a71a52 | |||
| a955ba0658 | |||
| b9fb758910 | |||
| 655a7e48e0 | |||
| 5060e08771 | |||
| 98eceff549 | |||
| 9df9f7a12d | |||
| 241d6f4c37 | |||
| ad956d686e | |||
| e7ee4ea91d | |||
| f29b43b956 | |||
| 1fe3b7d8fc | |||
| fdd3b4dbf5 | |||
| fcecc07f5e | |||
| 6fc8a6e9c7 | |||
| bb73941451 | |||
| 68570d7271 | |||
| 5546bb55ea | |||
| ad6387126a | |||
| 5f468c6f05 | |||
| 1aed48a0ce | |||
| 2cc7b33380 | |||
| 21655f6818 | |||
| 0d41ee90f6 | |||
| c5321149a1 | |||
| 3e929454ff | |||
| 7147b4a316 | |||
| 2770ffa9a5 | |||
| e7672c109d | |||
| a63078e8f9 | |||
| ce0ec4b806 | |||
| e97796e4f2 | |||
| 57b0d0e84d | |||
| 86a3da69de | |||
| 3fd3e6ba85 | |||
| a26aae6348 | |||
| 7fefc6747e | |||
| 0569ea9ea3 | |||
| d99bfcc3ba | |||
| 8616862f66 | |||
| 85f792ffd7 | |||
| ab30cdfb8e | |||
| 3a795b247b | |||
| ab36105cc9 | |||
| 932a33666d | |||
| 5866197c5c | |||
| 5cbd1906ae | |||
| c39fd89675 | |||
| c6b45f7968 | |||
| 6049b5e883 | |||
| f165d3dd4f | |||
| dfa22f949b | |||
| d23ac6e923 | |||
| 8005ec88ee | |||
| c8336de72e | |||
| d40820fd5a | |||
| 5a2b2a5288 | |||
| 8283c01cc7 | |||
| 795f56f545 | |||
| c2ad8c641c | |||
| 350db91dd2 | |||
| 2bff049d90 | |||
| bf4de722a7 | |||
| 84e08c567f | |||
| 7c677f3193 | |||
| 2e6eafbb2e | |||
| 5af69352b5 | |||
| 8e3ce7d32e | |||
| 3a688a095f | |||
| 6d933c2dbe | |||
| 8cff85b7ad | |||
| eeb79b3ab5 | |||
| e39319da1f | |||
| 8affa9fabe | |||
| 962221be3b | |||
| b9402e6283 | |||
| f35561ff59 | |||
| cea87404e3 | |||
| e6cafaaa5c | |||
| 1a21cd0756 | |||
| 18e3becb53 | |||
| 76fe2187fc | |||
| 803da78526 | |||
| f581e8b738 | |||
| 08c2fc78ec | |||
| dd16be0a61 | |||
| 0c5eb64ffa | |||
| 895c1c41df | |||
| 9fa6ef6851 | |||
| 8753716ceb | |||
| 6e51cc756d | |||
| 4903382056 | |||
| c0a1f4e5cd | |||
| 5fd09d8783 | |||
| 5f28f1068f | |||
| 7e4aa98ce2 | |||
| 07e80aba8f | |||
| bc8c6993b7 | |||
| f93fd5181b | |||
| fe1576ba65 | |||
| 23cc755aa8 | |||
| 1997af872f | |||
| a3a7a36669 | |||
| e0ffb9670d | |||
| 13c17f1d3a | |||
| 81fbea171b | |||
| 24b53d5355 | |||
| e893a65658 | |||
| 43c09e8b8c | |||
| 916dba3f06 | |||
| a8e008de07 | |||
| 2114aa939b | |||
| 8602065490 | |||
| 6da9d718cc | |||
| 2372950563 | |||
| 1e82b04382 | |||
| 2fd6ac37d0 | |||
| 73c7a22900 | |||
| 5aad9e95b5 | |||
| 4c9e37fa6e | |||
| 9f912b3824 | |||
| dc41218cee | |||
| fe60e5e5db | |||
| 74368ec9d4 | |||
| 62b9104a68 | |||
| b328a2b496 | |||
| ab920ac0e1 | |||
| 6f576c29ea | |||
| d0d275a6c4 | |||
| f575aa9b5f | |||
| 3eb9822c09 | |||
| bd0d9fda22 | |||
| 18c802ae09 | |||
| 3e91f03b40 | |||
| 057f66cf31 | |||
| ad47713641 | |||
| df507a9de5 | |||
| 59080727cf | |||
| 95b9af557f | |||
| 84a49321f1 | |||
| dc61ab7e83 | |||
| 9479f1f801 | |||
| 62d2d2a8b3 | |||
| 500c774f31 | |||
| 88b52d86ab | |||
| a0f24b3cbf | |||
| 0db889af38 | |||
| 0cff10b177 | |||
| d6fa819fa1 | |||
| 6817fafcca | |||
| e062cbcb0e | |||
| f8fd872bde | |||
| 5ffa558327 | |||
| b9064e3eee | |||
| 106aeab194 | |||
| 36983898f1 | |||
| 3cf4cd62f8 | |||
| 88dabcc4e1 | |||
| db80f6300f | |||
| 7ff8038907 | |||
| cfbe458e9a | |||
| 66eb2d1c38 | |||
| 0d6ea89ad3 | |||
| 2597a6260f | |||
| 8e6fa13c72 | |||
| bbf634aab7 | |||
| 4c0e669d51 | |||
| 65cb30498e | |||
| 94828f71d1 | |||
| 211659a5bf | |||
| 659a3383c9 | |||
| be00ce4fc5 | |||
| 48c2387853 | |||
| eb595aadcc | |||
| b927953ff3 | |||
| 6c9203a7be | |||
| 462e1d0400 | |||
| 2e67b9ca6f | |||
| e24a7181f2 | |||
| e7eecc05cd | |||
| 1d33c8827c | |||
| 26afc0979c | |||
| fb9bece01c | |||
| c751364974 | |||
| 3ec9cc33c0 | |||
| 465f4bff60 | |||
| 6fb7131ee9 | |||
| df3164a119 | |||
| da546a8fc9 | |||
| d05b649625 | |||
| efdc06d702 | |||
| e0241e8a6a | |||
| f0f5d9a2aa | |||
| 7dbffca97c | |||
| 4d3544ff77 | |||
| f235ecc75c | |||
| c4c4146636 | |||
| 3f2fa6ca66 | |||
| 5687bb3b49 | |||
| 9cfbcc000a | |||
| 2c31c00998 | |||
| b06d67a134 | |||
| 297abec7fe | |||
| 30d4415aa0 | |||
| 934d2722a2 | |||
| 6b77130251 | |||
| d672527bee | |||
| 5210ef87a3 | |||
| fe7620c37a | |||
| 32d1463f53 | |||
| 56f03bc0c0 | |||
| e70050d213 | |||
| 23d2bdb5b4 | |||
| 7f8605afd7 | |||
| ddcecaccb9 | |||
| a9c7490d94 | |||
| f96b66779d | |||
| 3285b56a62 | |||
| 6129362257 | |||
| e55c78b852 | |||
| 40ca81ed32 | |||
| 748dc66c99 | |||
| e7f4821703 | |||
| 6e8511d20d | |||
| 24f8b61cea | |||
| 5f94c05c75 | |||
| f8c1387159 | |||
| 11bc7226ab | |||
| 6ca0aec7db | |||
| dc7a288bc4 | |||
| 427ed2a856 | |||
| 53485964bd | |||
| 57bef7da37 | |||
| 6017cab509 | |||
| 2664c15910 | |||
| c3b61df0a9 | |||
| dd8bdc230d | |||
| bd7a8c0368 | |||
| a1e427c8ab | |||
| fa5095261a | |||
| 3c8aa03fd9 | |||
| 2dd4cc4f92 | |||
| 1a8e2fa0bd | |||
| 323ee0e36d | |||
| d5d9f38cb1 | |||
| b5401915fd | |||
| 2ca5e8bb4a | |||
| cb5a0b7045 | |||
| 8142d78e10 | |||
| cf7b2f0c1a | |||
| eacb79e512 | |||
| 5c5300a6c2 | |||
| 052b78be28 | |||
| daab3eebee | |||
| a2c725abbb | |||
| 1ebff25492 | |||
| a36d2e810d | |||
| 86cde0e983 | |||
| c592231fd9 | |||
| fec34ae974 | |||
| d316764f63 | |||
| 832fa68839 | |||
| 70acbe38e0 | |||
| 8a31d29ce7 | |||
| 0606d87b14 | |||
| 2eaa7dba36 | |||
| 41d63bd245 | |||
| 2aa16ff8aa | |||
| d72cf56b8c | |||
| ca8c4b40c6 | |||
| 63e1da69a1 | |||
| afaf11ffb6 | |||
| 8b9f5d4448 | |||
| 1666b94135 | |||
| 4f80f9e97b | |||
| 6aa64092b6 | |||
| 90faa87e52 | |||
| 292dfe6da7 | |||
| 9594acb6e6 | |||
| 11de15c1d0 | |||
| 23323d9346 | |||
| 341b0ab8da | |||
| f6b93f2b35 | |||
| 17c69c3cc5 | |||
| 49db6e78d0 | |||
| 9082623c49 | |||
| 16605eafd0 | |||
| 701343e82f | |||
| 6214fed8ae | |||
| 1af1f77a60 | |||
| 2cc478357a | |||
| 82d7445e62 | |||
| 065bf980d3 | |||
| 1e8072ba21 | |||
| 76d455e6de | |||
| b20e656c30 | |||
| 493d5c0768 | |||
| 15531f4223 | |||
| 7d8e679d9c | |||
| 34684cdf70 | |||
| e6aa178062 | |||
| e4d0322a16 | |||
| e48a13fed5 | |||
| 7c59d3f3cb | |||
| 85516530ca | |||
| 90cf954d8f | |||
| ac28c88712 | |||
| 45f410ca4c | |||
| db1a527f95 | |||
| 3cb1be88f6 | |||
| 342c31f38c | |||
| 4afa76ba2a | |||
| 04065a8dcb | |||
| ec31d18c26 | |||
| 29f2ce3a56 | |||
| 957c299fc5 | |||
| 3d71bc17c8 | |||
| fce712e6c7 | |||
| 3f1f31581f | |||
| 8534079687 | |||
| 6973a0045e | |||
| 3d8cf0ef41 | |||
| 59b089a4eb | |||
| a590bdf347 | |||
| 1d9f88f803 | |||
| f660b6368d | |||
| e9c925082b | |||
| b41bafad30 | |||
| 969169243b | |||
| 4b3e0eaa4e | |||
| eda3938075 | |||
| 016abd1a98 | |||
| 1b043d3a64 | |||
| 38834e6294 | |||
| 83155783e7 | |||
| c50e63dd34 | |||
| ebc858579b | |||
| d63ce3673b | |||
| 7d5bfaa3fb | |||
| 5e5551a16f | |||
| 7d040f07dd | |||
| f0c433cc02 | |||
| 46ab8a20fe | |||
| bede0adbf7 | |||
| b0c76757cc | |||
| cf327f59dc | |||
| bb40366f00 | |||
| 290f63f2a1 | |||
| 811d6de69d | |||
| 98d93b1f98 | |||
| 5c04bceca7 | |||
| 61db21e0d3 | |||
| 5293f4f3ea | |||
| c2531f9b07 | |||
| 203062dd98 | |||
| 122ac657f1 | |||
| 8a40e959ea | |||
| 49ba98c6fc | |||
| 9b0de85ed4 | |||
| b2d36e0a73 | |||
| 797ea9b918 | |||
| 07e4f549b1 | |||
| 2e626660e6 | |||
| 23b6b11f9e | |||
| ea43edc864 | |||
| 264f927433 | |||
| f0b5859747 | |||
| c3a17046c6 | |||
| 11fb3aafd8 | |||
| 5afa01ba89 | |||
| 8762f5b751 | |||
| 2167a8243c | |||
| 98a2de61f1 | |||
| d39c12f8f1 | |||
| 027caa650e | |||
| d055507c80 | |||
| 5383b90581 | |||
| 80f139ef9e | |||
| 4a07fdb4a8 | |||
| ecbfd61bac | |||
| 37981c139b | |||
| dc56fce18a | |||
| 95f20c9827 | |||
| a4830a4119 | |||
| b702294920 | |||
| 969592589c | |||
| fe35d6c529 | |||
| 46fba3e2bd | |||
| 4692420e5f | |||
| fa19fe63c9 | |||
| 629f981819 | |||
| 0b09d524cc | |||
| d2401cca68 | |||
| d841396c19 | |||
| 86dd5af6ba | |||
| c907a9861a | |||
| 78a201590c | |||
| 0668b4f255 | |||
| cc8cc43907 | |||
| f915e9925a | |||
| 2a2ab45c4b | |||
| e0068a70f6 | |||
| 0183875742 | |||
| 8cb5dd993f | |||
| 8f30a1530c | |||
| ebc13e134b | |||
| 8d94497439 | |||
| eeef73b3c3 | |||
| 3ff3d3e452 | |||
| a32375243f | |||
| 2ef53f32e0 | |||
| 4c43e85d89 | |||
| 75bd7214e7 | |||
| 3a1e268a17 | |||
| 0f95078ae9 | |||
| bbefbbcb64 | |||
| c97134dd8d | |||
| 2820efc454 | |||
| 190d160dce | |||
| 61413663b0 | |||
| 71aa297cc8 | |||
| 70ddccc27e | |||
| f014602ec7 | |||
| 4a92adfcc2 | |||
| 17703c2ed7 | |||
| b20bf6a748 | |||
| c87b7171ea | |||
| 1ba1ad9fa2 | |||
| 6c0915107e | |||
| eba1d4d8d6 | |||
| 0c98e0c365 | |||
| 83a8e9eb09 | |||
| 07188847de | |||
| bfe04cfa24 | |||
| d580cab48c | |||
| bf85f766ca | |||
| f2120ff582 | |||
| 24b6eee8e5 | |||
| a9ee6ca75d | |||
| bf4f8a70dc | |||
| 82e656821d | |||
| 85bdec0009 | |||
| f945ad20a3 | |||
| e771e45f8e | |||
| 1b5c5ba1f6 | |||
| abf34123a3 | |||
| 9d70bf93d9 | |||
| 2f3d991bf2 | |||
| 7af90d0115 | |||
| d180322f88 | |||
| d0c1267b53 | |||
| 0893e460e5 | |||
| 8bdc43a435 | |||
| c42266c2f8 | |||
| c7b6229a0e | |||
| c4a89db638 | |||
| 5e0fe16fd0 | |||
| 8c429992a1 | |||
| 9ed0ab480f | |||
| d33a657275 | |||
| ec16ac9ad2 | |||
| 16b8d0195d | |||
| e527d55b38 | |||
| 8df8f8ca50 | |||
| 04e172d752 | |||
| 0378b81b6b | |||
| 0308d2b5cf | |||
| a5d88da1e6 | |||
| c4318f1d18 | |||
| 885406ddb3 | |||
| cdde7648af | |||
| a4960f09be | |||
| b7ebe3083b | |||
| 6c553f52f8 | |||
| 2be1807b0f | |||
| 64aebf35ab | |||
| 4e4c149dda | |||
| 795febe0ee | |||
| db540ac62b | |||
| fd7686984c | |||
| b144fc678f | |||
| cdd054c0af | |||
| 780c13c56a | |||
| 7b6ba458dd | |||
| 912bc7a8f5 | |||
| 2a7d3a07e4 | |||
| 36b1560b45 | |||
| 2ff6e7eab4 | |||
| 350cfe5d22 | |||
| 3ce69256bf | |||
| 41691eed2f | |||
| 7ad8a83f8c | |||
| 5f481fd3f9 | |||
| e89ec15e34 | |||
| 7e8ec52260 | |||
| 7fe0d60d8f | |||
| 07316dad5a | |||
| a66abff17d | |||
| da834eb718 | |||
| 3191e2b174 | |||
| e308df2e65 | |||
| 452c91807d | |||
| c3fb62f22c | |||
| e1f99cce63 | |||
| ac2c1131ac | |||
| f86259b50c | |||
| 6a44fc3397 | |||
| e0be77602a | |||
| f82f582183 | |||
| 9904fc0912 | |||
| 95bdcc6418 | |||
| 1ef5d0cca9 | |||
| 1494c8e085 | |||
| 5655216792 | |||
| 0232a4f2fd | |||
| f2415eb08a | |||
| 56e9438f8e | |||
| d63b948d58 | |||
| 60f552b953 | |||
| 36b612ff1b | |||
| d608c9cc8e | |||
| 40a1bec7d3 | |||
| 9804362b6c | |||
| 8a5956fbb3 | |||
| 0eb2f908f1 | |||
| 00608cacd4 | |||
| 245b532954 | |||
| 6530408307 | |||
| 08e7c8e5bc | |||
| 5162d422f5 | |||
| 594f69e825 | |||
| 868579f978 | |||
| cd573f5bd7 | |||
| 16615eb407 | |||
| 51158630b1 | |||
| 7cbbad2473 | |||
| 64a012ff95 | |||
| c1f391823b | |||
| 55400bd45e | |||
| 5f7007451f | |||
| cf12d1f2b9 | |||
| 53d8879aaf | |||
| 83b6108074 | |||
| 38f0ea0e45 | |||
| 06b6125862 | |||
| 9fe48cd2f8 | |||
| 2b3c5d6836 | |||
| 660bc0b989 | |||
| f33c1a69f4 | |||
| b348a2bae2 | |||
| bc58b6ec82 | |||
| 5dc79e665c | |||
| 9acbeb4d46 | |||
| 8174aeb846 | |||
| 9fa637768c | |||
| 0974c6063a | |||
| 47b3ce7f7e | |||
| 84aee63b09 | |||
| ec1278bc90 | |||
| 4cddf24d50 | |||
| 1cdf658bee | |||
| 94b19bffb4 | |||
| ee34e9b598 | |||
| ac25160791 | |||
| 1940e04f4f | |||
| d45676f682 | |||
| 82a267cfff | |||
| c71c1ae9f7 | |||
| 6d1b02768d | |||
| 8b598b8817 | |||
| 323c926a92 | |||
| 156ef00f8d | |||
| c0f6f8c75d | |||
| d886b1b7ca | |||
| f87844850f | |||
| f7bf234da9 | |||
| ebed5a5619 | |||
| 9a885d0bf6 | |||
| 2133e0fb4f | |||
| c3cd5e7cfb | |||
| 1e80addaec | |||
| a56c5e3ffc | |||
| 5ab7d9b3a0 | |||
| 4452bd0234 | |||
| e3b483519e | |||
| ac31c663ee | |||
| c1cbe20c3a | |||
| 24e004a69b | |||
| ec49d1f097 | |||
| e6e5748195 | |||
| 32714e76da | |||
| 91a3c0c3f2 | |||
| a7b23982c9 | |||
| 542a06865a | |||
| fc5e2ac70b | |||
| 54ca1a2cf2 | |||
| ee71023223 | |||
| 5459507b09 | |||
| 32ad6bdf2d | |||
| 0ae74e4d6b | |||
| 938598aa72 | |||
| 15dc4371f8 | |||
| d14608e81f | |||
| 1c8ceea40a | |||
| 7243145d4f | |||
| c83fc35f96 | |||
| bdbff79b61 | |||
| ece404ef2e | |||
| 3ba2782667 | |||
| d9d5a787fd | |||
| 7d3df970e5 | |||
| d1080fe738 | |||
| cde7a0fc4c | |||
| 69b7e4b46d | |||
| fc0c2804a4 | |||
| 6f71805c3d | |||
| 931da8e54d | |||
| e66914ee9d | |||
| 9c3218a808 | |||
| 13f5cea370 | |||
| 6c65274fda | |||
| ed9c9be336 | |||
| 9b2277d9ad | |||
| 3aa1de3b98 | |||
| 50ca94ca7b | |||
| bcff195be2 | |||
| 8d2954035b | |||
| eb50384db6 | |||
| 981df89f30 | |||
| f94ee616f7 | |||
| 4108d2fa98 | |||
| 7773a5bc46 | |||
| 8477b42a10 | |||
| 36027bc31d | |||
| 4731049693 | |||
| 3f4fcaa2d9 | |||
| 4cc20ee1e6 | |||
| 7442d0f7b1 | |||
| 9249dd0679 | |||
| b9c1f6e3fd | |||
| d7a26952ac | |||
| b53df317eb | |||
| ba00431e94 | |||
| ef61261b46 | |||
| 8604c4281c | |||
| ddb66db055 | |||
| 55beed4676 | |||
| 389d8551f2 | |||
| b0882f66dd | |||
| 727a3f00a4 | |||
| 5f53985e68 | |||
| aa70f41f4d | |||
| 3a6ac93f0e | |||
| 2913640a86 | |||
| c1eb74bfb0 | |||
| 642da9cfad | |||
| a7c44de05b | |||
| d5092998f5 | |||
| ae2d4a33ae | |||
| 8950df859b | |||
| caadd99b68 | |||
| 31a6fc9c36 | |||
| d9cca1bad1 | |||
| 9e76872d05 | |||
| a6838eb4dc | |||
| 7d2fd40097 | |||
| 255f985cd4 | |||
| 80bd8cd001 | |||
| 283aa092fe | |||
| 6fb86871bc | |||
| ad951c8c49 | |||
| 0abfb29ff8 | |||
| ac653a331f | |||
| f972a23dd8 | |||
| e8cca96e1f | |||
| 61f2e672bc | |||
| 3a375881b8 | |||
| fc7482dc69 | |||
| 1d8035861f | |||
| 91661be354 | |||
| 205a98723d | |||
| 58970d0abb | |||
| 219dc7ff36 | |||
| 8794fe8646 | |||
| d76fb5ee3a | |||
| e22301c565 | |||
| 046015f182 | |||
| 4a762f93a6 | |||
| cb9c2f0ec6 | |||
| 1a9c3126b8 | |||
| 9681c026ad | |||
| 6f98b17405 | |||
| 404027389a | |||
| cd9ca3da7a | |||
| 889411db18 | |||
| ae3b43cdac | |||
| 237315532c | |||
| 0245c4cbb9 | |||
| 7e81bf9ad6 | |||
| 40a6cbdab7 | |||
| e9f07baff1 | |||
| d26e373e2e | |||
| 9792e1f601 | |||
| d1022d5986 | |||
| f31bb837a8 | |||
| 7d75f2fa97 | |||
| d6b53cdac3 | |||
| 6ff4a8b1b0 | |||
| 5a99943367 | |||
| ecf75669c1 | |||
| 056c5ce1cd | |||
| 359131ab93 | |||
| fe44c8f3e0 | |||
| cdfe6fead4 | |||
| 0dce384839 | |||
| 1819bc42e5 | |||
| 4fdc3c92fb | |||
| 7bc726c425 | |||
| 988662c7a0 | |||
| 4285968397 | |||
| 200815d143 | |||
| 4c2083d32d | |||
| b9f9bbcbc4 | |||
| 6ffa5470cb | |||
| d4cf2e0a46 | |||
| a1bd2b40d8 | |||
| e49deb1aab | |||
| dfeca6e549 | |||
| ea62075622 | |||
| 76c55fcd8e | |||
| ba90433012 | |||
| 4bed411dba | |||
| 2b053f1a95 | |||
| b2cc3cc26e | |||
| e0ae318152 | |||
| 4269a11c73 | |||
| 95f03bc151 | |||
| 167b77a674 | |||
| 8670e33234 | |||
| c6d43e92c1 | |||
| 84c8b3f416 | |||
| 2862d096a9 | |||
| 5a1a9f0b4b | |||
| 90a8f9a7aa | |||
| 53ba7fb035 | |||
| 8e6e929063 | |||
| eeb668e48a | |||
| 588b27190e | |||
| 8f2587118b | |||
| 39ba30f636 | |||
| 65ca05adaf | |||
| 530065d2db | |||
| 8667b2c6e8 | |||
| e75b1eddf5 | |||
| b04fcb6538 | |||
| d1a98b942d | |||
| 42615fa199 | |||
| 3e5622f04f | |||
| 7a6e5061e5 | |||
| 410263e676 | |||
| f104bab671 | |||
| 8497f6b65e | |||
| dc717170f6 | |||
| 38f05ce2d7 | |||
| e28a54a428 | |||
| f60d25618b | |||
| 6cf118ba84 | |||
| 122a5827b9 | |||
| a5364d9f4b | |||
| c6c384f834 | |||
| d90269c4f4 | |||
| b43cc3bfa5 | |||
| 4c64890971 | |||
| a111a0c391 | |||
| 552af5fa50 | |||
| d476f1ce9f | |||
| 299734c908 | |||
| 7a5fabaeae | |||
| 650262bd17 | |||
| 38edc4eb54 | |||
| a7bd5e3485 | |||
| 4261c461c7 | |||
| bbb516c213 | |||
| 0894cd94a9 | |||
| 04b0313f94 | |||
| cc8dbb9b1c | |||
| aade1d9baf | |||
| 1ce7863376 | |||
| 877cfe8127 | |||
| d91cb2e60f | |||
| 9853a60c6a | |||
| 58dd97ac2a | |||
| c55d318e64 | |||
| 3bec091d7c | |||
| dc757d561a | |||
| d421681ddb | |||
| fc93dad347 | |||
| d62e11e7f9 | |||
| 2545d1df6e | |||
| 84ec57d2d6 | |||
| 248327047a | |||
| 7ed395badd | |||
| c7f9d08ec7 | |||
| 04541ccb8c | |||
| 92eec140d7 | |||
| 571c2b1a19 | |||
| 7946cea31d | |||
| 9ebf95cace | |||
| 299c571904 | |||
| e53c7b3c8a | |||
| abe0680641 | |||
| 2c8bcbfd7b | |||
| eb6dc3e3dc | |||
| 2d32c9251e | |||
| d0fac4e7c1 | |||
| 78baf633c4 | |||
| 63a2334010 | |||
| e7fb619291 | |||
| 906cb7d1ff | |||
| 520f089f7d | |||
| 0b3a6deb69 | |||
| f89e946d1d | |||
| c440b1201b | |||
| b2b3ec4747 | |||
| e274fd27d6 | |||
| 834ca303b7 | |||
| a871fe1ea3 | |||
| 68c5173f1b | |||
| 18885e425a | |||
| 3bce8e3418 | |||
| e63a208aa3 | |||
| d8ab71fd0f | |||
| 45b1c39780 | |||
| 5e47748298 | |||
| 626990efb4 | |||
| 3691e61d56 | |||
| a65417b0ba | |||
| 212a59a112 | |||
| be1d5fb445 | |||
| 5ff9a14d41 | |||
| c15736d2d6 | |||
| ba71c22bc8 | |||
| c25dad69b0 | |||
| bd053d9b27 | |||
| 273df16f4c | |||
| 3f2a617bbc | |||
| f4a6b8f6f3 | |||
| 34660ee161 | |||
| 758f79b7dd | |||
| 11006c684b | |||
| 0030fda2cf | |||
| 33ffb594e5 | |||
| b8ea6f1f0b | |||
| 75c6146f40 | |||
| b74f7813ac | |||
| 153f7a6d0c | |||
| 14b9cb70d3 | |||
| 38270329d1 | |||
| 7e1d03e2cf | |||
| 7d2deddc66 | |||
| 168a998ac4 | |||
| a309f9f897 | |||
| 6df4d79260 | |||
| 64381f1682 | |||
| 4a038b95ef | |||
| 03b3555ddf | |||
| 8a29dca1cd | |||
| 7e147874ac | |||
| 8e1672da41 | |||
| eacbade3f2 | |||
| ce9a34b8d5 | |||
| 24651285bd | |||
| 87d8d2a008 | |||
| 6201a5a740 | |||
| ff109cf115 | |||
| aad6e33b48 | |||
| fd3f7ea3fd | |||
| 087f0a0d21 | |||
| b334b8f05d | |||
| aea7755eab | |||
| a301ca8df7 | |||
| 7e84689595 | |||
| 8ec52fc1a7 | |||
| 741591de45 | |||
| 4467174f80 | |||
| 7606940a90 | |||
| ebf55458e3 | |||
| e780f3edbc | |||
| cd091097e8 | |||
| 1b7618f25b | |||
| f9a93e2efe | |||
| faf0b7e9cc | |||
| 3c802cc900 | |||
| a8345ca307 | |||
| df60809ab1 | |||
| d2c53e8613 | |||
| cbfd7512f8 | |||
| 724dc022b7 | |||
| 4e11ce5ee7 | |||
| 7d0b4121c6 | |||
| e529d33dbf | |||
| b2e8ce765b | |||
| 6736a711cb | |||
| ea22497d9d | |||
| c364e9684d | |||
| ea8ed68296 | |||
| 2a828c93c1 | |||
| 371eaf118e | |||
| 390712965b | |||
| 557172d0d5 | |||
| c72237844f | |||
| 7546aabca9 | |||
| 6dd862496c | |||
| d4aea5f34f | |||
| c26d83c27a | |||
| 51067793e3 | |||
| beeb898b9e | |||
| 6af56c63a0 | |||
| aa0cddb1bc | |||
| af310a0f44 | |||
| 6c9868dcb3 | |||
| fd9d432d10 | |||
| 5d777896e3 | |||
| 51b96ec06f | |||
| c6042d96ed | |||
| 2ae98a6949 | |||
| 009497ba65 | |||
| c014be823b | |||
| 3e1b20e9fb | |||
| 652f5de7c7 | |||
| fa4782a4dc | |||
| 16cafbaf95 | |||
| 1934ddbe27 | |||
| d26079a188 | |||
| b4f61190b0 | |||
| fd6c2b1cd5 | |||
| bee1f5624e | |||
| cd8dd140c6 | |||
| 34e56f3e81 | |||
| 0339b36330 | |||
| d4af6f5e86 | |||
| cf3cc8a827 | |||
| fea7394558 | |||
| d1a0e6cfaf | |||
| 7a4cc161c9 | |||
| 3376b0157b | |||
| bda7c40a1a | |||
| dabce296b8 | |||
| 8c7bf40508 | |||
| 5132cb3912 | |||
| 0849e8f540 | |||
| 968f23db7f | |||
| abecc1c9b6 | |||
| 937de43978 | |||
| 52e0a4c59b | |||
| 720936b74a | |||
| 261b143679 | |||
| 6d93b7d2f3 | |||
| d8c55779f8 | |||
| bdc498ce39 | |||
| 1c5297abf1 | |||
| c8c3d7c1a2 | |||
| da490d4006 | |||
| 615e439fd3 | |||
| 41a73cf9df | |||
| 3b00da932b | |||
| 152934c740 | |||
| 68f5af01d9 | |||
| 2df8d5657e | |||
| 7e4fe9a0f8 | |||
| 3f696b63d6 | |||
| 1a7cbb780b | |||
| 42b4d74d98 | |||
| b2de62d0b9 | |||
| f1e6af0fab | |||
| 72ff929fab | |||
| 138934692c | |||
| 7b709ece22 | |||
| ac18f302a6 | |||
| 0e430827c0 |
@@ -30,7 +30,7 @@ github:
|
||||
- q-and-a
|
||||
- hacktoberfest
|
||||
features:
|
||||
wiki: false
|
||||
wiki: true
|
||||
issues: true
|
||||
projects: true
|
||||
discussions: false
|
||||
@@ -43,6 +43,6 @@ github:
|
||||
|
||||
notifications:
|
||||
commits: commits@answer.apache.org
|
||||
issues: commits@answer.apache.org
|
||||
pullrequests: commits@answer.apache.org
|
||||
discussions: commits@answer.apache.org
|
||||
issues: issues@answer.apache.org
|
||||
pullrequests: issues@answer.apache.org
|
||||
discussions: issues@answer.apache.org
|
||||
|
||||
@@ -1,30 +1,37 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
about: Report an issue to help the project improve.
|
||||
title: ''
|
||||
labels: bug
|
||||
type: 'Bug'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
## Describe the bug
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
### To Reproduce
|
||||
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
### Expected behavior
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
### Screenshots
|
||||
|
||||
**Platform (please complete the following information):**
|
||||
- Device: [e.g. Desktop, Mobile]
|
||||
- OS: [e.g. macOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
If applicable, add screenshots or video to help explain your problem.
|
||||
|
||||
### Platform
|
||||
|
||||
- Device: [e.g. Desktop, Mobile]
|
||||
- OS: [e.g. macOS]
|
||||
- Browser and version: [e.g. Chrome, Safari]
|
||||
- Version: [e.g. v1.2.0]
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Questions & Discussions
|
||||
url: https://meta.answer.dev
|
||||
about: If you have any questions while using.
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: Enhancement request
|
||||
about: Suggest an enhancement for this project. Improve an existing feature.
|
||||
title: ''
|
||||
labels: enhancement
|
||||
type: 'Feature'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Is your enhancement request related to a problem? Please describe
|
||||
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
## Describe the solution you'd like
|
||||
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
## Describe alternatives you've considered
|
||||
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
@@ -1,17 +1,21 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
about: Suggest an idea or possible new feature for this project.
|
||||
title: ''
|
||||
labels: enhancement
|
||||
labels: new-feature
|
||||
type: 'Feature'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
## Is your feature request related to a problem? Please describe
|
||||
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
## Describe the solution you'd like
|
||||
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
## Describe alternatives you've considered
|
||||
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
@@ -26,6 +26,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
build-goreleaser:
|
||||
if: ${{ github.repository_owner == 'apache' }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -35,7 +36,7 @@ jobs:
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20.18.1
|
||||
|
||||
- name: Node Build
|
||||
run: make install-ui-packages ui
|
||||
@@ -43,16 +44,16 @@ jobs:
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: 1.19
|
||||
go-version: 1.23
|
||||
- name: Run GoReleaser
|
||||
uses: goreleaser/goreleaser-action@v4
|
||||
with:
|
||||
distribution: goreleaser
|
||||
version: latest
|
||||
args: release --clean --skip-validate
|
||||
args: release --clean --skip=validate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: answer
|
||||
path: ./dist/*
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
name: Build Latest Docker Image For Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v2.*
|
||||
- v1.*
|
||||
- v0.*
|
||||
- "!v*-RC*"
|
||||
# pull_request:
|
||||
# branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'apache' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
type=raw,value=latest
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
file: ./Dockerfile
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'apache' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
@@ -19,7 +19,6 @@ name: Build Docker Image For Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main"]
|
||||
tags:
|
||||
- v2.*
|
||||
- v1.*
|
||||
@@ -29,6 +28,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'apache' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -40,7 +40,6 @@ jobs:
|
||||
with:
|
||||
images: apache/answer
|
||||
tags: |
|
||||
type=raw,value=latest
|
||||
type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
|
||||
type=semver,pattern={{version}}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.repository_owner == 'apache' }}
|
||||
name: Build and Push
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
name: Build PR Image
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
|
||||
jobs:
|
||||
build-answer:
|
||||
name: Build and push `Answer`
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
if: ${{ github.event.action != 'closed' }}
|
||||
steps:
|
||||
- name: Checkout git repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Generate UUID image name
|
||||
id: uuid
|
||||
run: echo "UUID_WORKER=$(uuidgen)" >> $GITHUB_ENV
|
||||
|
||||
- name: Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: registry.uffizzi.com/${{ env.UUID_WORKER }}
|
||||
tags: |
|
||||
type=raw,value=60d
|
||||
|
||||
- name: Build and Push Image to registry.uffizzi.com - Uffizzi's ephemeral Registry
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
push: true
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha, mode=max
|
||||
|
||||
render-compose-file:
|
||||
name: Render Docker Compose File
|
||||
# Pass output of this workflow to another triggered by `workflow_run` event.
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build-answer
|
||||
outputs:
|
||||
compose-file-cache-key: ${{ steps.hash.outputs.hash }}
|
||||
steps:
|
||||
- name: Checkout git repo
|
||||
uses: actions/checkout@v4
|
||||
- name: Render Compose File
|
||||
run: |
|
||||
ANSWER_IMAGE=${{ needs.build-answer.outputs.tags }}
|
||||
export ANSWER_IMAGE
|
||||
export UFFIZZI_URL=\$UFFIZZI_URL
|
||||
# Render simple template from environment variables.
|
||||
envsubst < docker-compose.uffizzi.yml > docker-compose.rendered.yml
|
||||
cat docker-compose.rendered.yml
|
||||
- name: Upload Rendered Compose File as Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: preview-spec
|
||||
path: docker-compose.rendered.yml
|
||||
retention-days: 2
|
||||
- name: Serialize PR Event to File
|
||||
run: |
|
||||
cat << EOF > event.json
|
||||
${{ toJSON(github.event) }}
|
||||
|
||||
EOF
|
||||
- name: Upload PR Event as Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: preview-spec
|
||||
path: event.json
|
||||
retention-days: 2
|
||||
|
||||
delete-preview:
|
||||
name: Call for Preview Deletion
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.action == 'closed' }}
|
||||
steps:
|
||||
# If this PR is closing, we will not render a compose file nor pass it to the next workflow.
|
||||
- name: Serialize PR Event to File
|
||||
run: |
|
||||
cat << EOF > event.json
|
||||
${{ toJSON(github.event) }}
|
||||
|
||||
EOF
|
||||
- name: Upload PR Event as Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: preview-spec
|
||||
path: event.json
|
||||
retention-days: 2
|
||||
@@ -1,105 +0,0 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
name: Deploy Uffizzi Preview
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows:
|
||||
- "Build PR Image"
|
||||
types:
|
||||
- completed
|
||||
|
||||
|
||||
jobs:
|
||||
cache-compose-file:
|
||||
name: Cache Compose File
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
outputs:
|
||||
compose-file-cache-key: ${{ env.HASH }}
|
||||
pr-number: ${{ env.PR_NUMBER }}
|
||||
steps:
|
||||
- name: 'Download artifacts'
|
||||
# Fetch output (zip archive) from the workflow run that triggered this workflow.
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: context.payload.workflow_run.id,
|
||||
});
|
||||
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "preview-spec"
|
||||
})[0];
|
||||
let download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
let fs = require('fs');
|
||||
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/preview-spec.zip`, Buffer.from(download.data));
|
||||
|
||||
- name: 'Unzip artifact'
|
||||
run: unzip preview-spec.zip
|
||||
- name: Read Event into ENV
|
||||
run: |
|
||||
echo 'EVENT_JSON<<EOF' >> $GITHUB_ENV
|
||||
cat event.json >> $GITHUB_ENV
|
||||
echo 'EOF' >> $GITHUB_ENV
|
||||
|
||||
- name: Hash Rendered Compose File
|
||||
id: hash
|
||||
# If the previous workflow was triggered by a PR close event, we will not have a compose file artifact.
|
||||
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
|
||||
run: echo "HASH=$(md5sum docker-compose.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV
|
||||
- name: Cache Rendered Compose File
|
||||
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: docker-compose.rendered.yml
|
||||
key: ${{ env.HASH }}
|
||||
|
||||
- name: Read PR Number From Event Object
|
||||
id: pr
|
||||
run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
|
||||
- name: DEBUG - Print Job Outputs
|
||||
if: ${{ runner.debug }}
|
||||
run: |
|
||||
echo "PR number: ${{ env.PR_NUMBER }}"
|
||||
echo "Compose file hash: ${{ env.HASH }}"
|
||||
cat event.json
|
||||
|
||||
deploy-uffizzi-preview:
|
||||
name: Use Remote Workflow to Preview on Uffizzi
|
||||
needs:
|
||||
- cache-compose-file
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2
|
||||
with:
|
||||
# If this workflow was triggered by a PR close event, cache-key will be an empty string
|
||||
# and this reusable workflow will delete the preview deployment.
|
||||
compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
|
||||
compose-file-cache-path: docker-compose.rendered.yml
|
||||
server: https://app.uffizzi.com
|
||||
pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
@@ -3,6 +3,7 @@
|
||||
*.rej
|
||||
*.so
|
||||
*~
|
||||
*.db
|
||||
.DS_Store
|
||||
._*
|
||||
/.idea
|
||||
@@ -29,3 +30,6 @@ vendor/
|
||||
/new_answer
|
||||
|
||||
dist/
|
||||
|
||||
# Lint setup generated file
|
||||
.husky/
|
||||
|
||||
+13
-7
@@ -15,6 +15,8 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
version: 2
|
||||
|
||||
env:
|
||||
- GO11MODULE=on
|
||||
- GO111MODULE=on
|
||||
@@ -32,7 +34,7 @@ builds:
|
||||
- id: build
|
||||
main: ./cmd/answer/.
|
||||
binary: answer
|
||||
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.Version}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
|
||||
ldflags: -s -w -X github.com/apache/answer/cmd.Version={{.RawVersion}} -X github.com/apache/answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/answer/cmd.Time={{.Date}} -X github.com/apache/answer/cmd.BuildUser=goreleaser
|
||||
flags: -v
|
||||
goos:
|
||||
- linux
|
||||
@@ -43,7 +45,7 @@ builds:
|
||||
- id: build-windows
|
||||
main: ./cmd/answer/.
|
||||
binary: answer
|
||||
ldflags: -s -w -X github.com/apache/incubator-answer/cmd.Version={{.Version}} -X github.com/apache/incubator-answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/incubator-answer/cmd.Time={{.Date}} -X github.com/apache/incubator-answer/cmd.BuildUser=goreleaser
|
||||
ldflags: -s -w -X github.com/apache/answer/cmd.Version={{.RawVersion}} -X github.com/apache/answer/cmd.Revision={{.ShortCommit}} -X github.com/apache/answer/cmd.Time={{.Date}} -X github.com/apache/answer/cmd.BuildUser=goreleaser
|
||||
flags: -v
|
||||
goos:
|
||||
- windows
|
||||
@@ -55,7 +57,7 @@ builds:
|
||||
|
||||
archives:
|
||||
- name_template: >-
|
||||
apache-answer-{{ .Version }}-incubating-{{ .Os }}-{{ .Arch }}
|
||||
apache-answer-{{ .RawVersion }}-bin-{{ .Os }}-{{ .Arch }}
|
||||
files:
|
||||
- src: "docs/release/LICENSE"
|
||||
dst: LICENSE
|
||||
@@ -63,12 +65,11 @@ archives:
|
||||
dst: NOTICE
|
||||
- src: "docs/release/licenses/*"
|
||||
dst: licenses/
|
||||
- src: "DISCLAIMER"
|
||||
dst: DISCLAIMER
|
||||
wrap_in_directory: true
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
||||
snapshot:
|
||||
name_template: "{{ incpatch .Version }}"
|
||||
version_template: "{{ incpatch .Version }}"
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
@@ -76,5 +77,10 @@ changelog:
|
||||
- '^docs:'
|
||||
- '^test:'
|
||||
|
||||
# goreleaser release --snapshot --rm-dist
|
||||
source:
|
||||
enabled: true
|
||||
name_template: apache-answer-{{ .RawVersion }}-src
|
||||
prefix_template: "apache-answer-{{ .RawVersion }}-src/"
|
||||
|
||||
# goreleaser release --skip-validate --skip-publish --clean
|
||||
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ version: 0.0.1
|
||||
achievements:
|
||||
- achievement:
|
||||
name: Visionary Architect
|
||||
icon: https://raw.githubusercontent.com/apache/incubator-answer/main/.vaunt/enhancement.png
|
||||
icon: https://raw.githubusercontent.com/apache/answer/main/.vaunt/enhancement.png
|
||||
description: Awarded for bringing up enhancement, dream big!
|
||||
triggers:
|
||||
- trigger:
|
||||
@@ -28,7 +28,7 @@ achievements:
|
||||
condition: labels in ['enhancement'] & labels in ['LGTM']
|
||||
- achievement:
|
||||
name: Bug Hunter
|
||||
icon: https://raw.githubusercontent.com/apache/incubator-answer/main/.vaunt/bug.png
|
||||
icon: https://raw.githubusercontent.com/apache/answer/main/.vaunt/bug.png
|
||||
description: Awarded for identifying real bugs, well spotted!
|
||||
triggers:
|
||||
- trigger:
|
||||
|
||||
Vendored
+4
-1
@@ -2,5 +2,8 @@
|
||||
"eslint.workingDirectories": [
|
||||
"ui"
|
||||
],
|
||||
"explorer.autoReveal": "focusNoScroll"
|
||||
"explorer.autoReveal": "focusNoScroll",
|
||||
"cSpell.words": [
|
||||
"grecaptcha"
|
||||
]
|
||||
}
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
Apache Answer (incubating) is an effort undergoing incubation at the Apache
|
||||
Software Foundation (ASF), sponsored by the Apache Incubator PMC.
|
||||
|
||||
Incubation is required of all newly accepted projects until a further review
|
||||
indicates that the infrastructure, communications, and decision making process
|
||||
have stabilized in a manner consistent with other successful ASF projects.
|
||||
|
||||
While incubation status is not necessarily a reflection of the completeness
|
||||
or stability of the code, it does indicate that the project has yet to be
|
||||
fully endorsed by the ASF.
|
||||
+10
-6
@@ -15,8 +15,8 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
FROM golang:1.19-alpine AS golang-builder
|
||||
LABEL maintainer="aichy@sf.com"
|
||||
FROM golang:1.23-alpine AS golang-builder
|
||||
LABEL maintainer="linkinstar@apache.org"
|
||||
|
||||
ARG GOPROXY
|
||||
# ENV GOPROXY ${GOPROXY:-direct}
|
||||
@@ -24,7 +24,7 @@ ARG GOPROXY
|
||||
|
||||
ENV GOPATH /go
|
||||
ENV GOROOT /usr/local/go
|
||||
ENV PACKAGE github.com/apache/incubator-answer
|
||||
ENV PACKAGE github.com/apache/answer
|
||||
ENV BUILD_DIR ${GOPATH}/src/${PACKAGE}
|
||||
ENV ANSWER_MODULE ${BUILD_DIR}
|
||||
|
||||
@@ -34,7 +34,7 @@ ARG CGO_EXTRA_CFLAGS
|
||||
|
||||
COPY . ${BUILD_DIR}
|
||||
WORKDIR ${BUILD_DIR}
|
||||
RUN apk --no-cache add build-base git bash nodejs npm && npm install -g pnpm@latest \
|
||||
RUN apk --no-cache add build-base git bash nodejs npm && npm install -g pnpm@9.7.0 \
|
||||
&& make clean build
|
||||
|
||||
RUN chmod 755 answer
|
||||
@@ -47,7 +47,9 @@ RUN mkdir -p /data/uploads && chmod 777 /data/uploads \
|
||||
FROM alpine
|
||||
LABEL maintainer="linkinstar@apache.org"
|
||||
|
||||
ENV TZ "Asia/Shanghai"
|
||||
ARG TIMEZONE
|
||||
ENV TIMEZONE=${TIMEZONE:-"Asia/Shanghai"}
|
||||
|
||||
RUN apk update \
|
||||
&& apk --no-cache add \
|
||||
bash \
|
||||
@@ -58,7 +60,9 @@ RUN apk update \
|
||||
openssh \
|
||||
sqlite \
|
||||
gnupg \
|
||||
&& echo "Asia/Shanghai" > /etc/timezone
|
||||
tzdata \
|
||||
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
|
||||
&& echo "${TIMEZONE}" > /etc/timezone
|
||||
|
||||
COPY --from=golang-builder /usr/bin/answer /usr/bin/answer
|
||||
COPY --from=golang-builder /data /data
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
.PHONY: build clean ui
|
||||
|
||||
VERSION=1.2.1
|
||||
VERSION=1.6.0
|
||||
BIN=answer
|
||||
DIR_SRC=./cmd/answer
|
||||
DOCKER_CMD=docker
|
||||
|
||||
GO_ENV=CGO_ENABLED=0 GO111MODULE=on
|
||||
Revision=$(shell git rev-parse --short HEAD)
|
||||
GO_FLAGS=-ldflags="-X github.com/apache/incubator-answer/cmd.Version=$(VERSION) -X 'github.com/apache/incubator-answer/cmd.Revision=$(Revision)' -X 'github.com/apache/incubator-answer/cmd.Time=`date +%s`' -extldflags -static"
|
||||
GO=$(GO_ENV) $(shell which go)
|
||||
Revision=$(shell git rev-parse --short HEAD 2>/dev/null || echo "")
|
||||
GO_FLAGS=-ldflags="-X github.com/apache/answer/cmd.Version=$(VERSION) -X 'github.com/apache/answer/cmd.Revision=$(Revision)' -X 'github.com/apache/answer/cmd.Time=`date +%s`' -extldflags -static"
|
||||
GO=$(GO_ENV) "$(shell which go)"
|
||||
|
||||
build: generate
|
||||
@$(GO) build $(GO_FLAGS) -o $(BIN) $(DIR_SRC)
|
||||
@@ -21,13 +21,20 @@ universal: generate
|
||||
@rm -f ${BIN}_amd64 ${BIN}_arm64
|
||||
|
||||
generate:
|
||||
@$(GO) get github.com/swaggo/swag/cmd/swag@v1.16.3
|
||||
@$(GO) get github.com/google/wire/cmd/wire@v0.5.0
|
||||
@$(GO) get github.com/golang/mock/mockgen@v1.6.0
|
||||
@$(GO) get go.uber.org/mock/mockgen@v0.5.0
|
||||
@$(GO) install github.com/swaggo/swag/cmd/swag@v1.16.3
|
||||
@$(GO) install github.com/google/wire/cmd/wire@v0.5.0
|
||||
@$(GO) install github.com/golang/mock/mockgen@v1.6.0
|
||||
@$(GO) install go.uber.org/mock/mockgen@v0.5.0
|
||||
@$(GO) generate ./...
|
||||
@$(GO) mod tidy
|
||||
|
||||
check:
|
||||
@mockgen -version
|
||||
@swag -v
|
||||
@wire flags
|
||||
|
||||
test:
|
||||
@$(GO) test ./internal/repo/repo_test
|
||||
|
||||
@@ -38,7 +45,7 @@ clean:
|
||||
|
||||
install-ui-packages:
|
||||
@corepack enable
|
||||
@corepack prepare pnpm@latest --activate
|
||||
@corepack prepare pnpm@9.7.0 --activate
|
||||
|
||||
ui:
|
||||
@cd ui && pnpm pre-install && pnpm build && cd -
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Apache Answer (incubating)
|
||||
Copyright 2023 The Apache Software Foundation
|
||||
Apache Answer
|
||||
Copyright 2023-2025 The Apache Software Foundation
|
||||
|
||||
This product includes software developed at
|
||||
The Apache Software Foundation (https://www.apache.org/).
|
||||
|
||||
@@ -8,10 +8,10 @@ A Q&A platform software for teams at any scales. Whether it’s a community foru
|
||||
|
||||
To learn more about the project, visit [answer.apache.org](https://answer.apache.org).
|
||||
|
||||
[](https://github.com/apache/incubator-answer/blob/main/LICENSE)
|
||||
[](https://github.com/apache/answer/blob/main/LICENSE)
|
||||
[](https://golang.org/)
|
||||
[](https://reactjs.org/)
|
||||
[](https://goreportcard.com/report/github.com/apache/incubator-answer)
|
||||
[](https://goreportcard.com/report/github.com/apache/answer)
|
||||
[](https://discord.gg/Jm7Y4cbUej)
|
||||
|
||||
## Screenshots
|
||||
@@ -23,10 +23,10 @@ To learn more about the project, visit [answer.apache.org](https://answer.apache
|
||||
### Running with docker
|
||||
|
||||
```bash
|
||||
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:latest
|
||||
docker run -d -p 9080:80 -v answer-data:/data --name answer apache/answer:1.6.0
|
||||
```
|
||||
|
||||
For more information, see [Installation](https://answer.apache.org/docs/installation)
|
||||
For more information, see [Installation](https://answer.apache.org/docs/installation).
|
||||
|
||||
### Plugins
|
||||
|
||||
@@ -40,14 +40,20 @@ You can also check out the [plugins here](https://answer.apache.org/plugins).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Golang >= 1.18
|
||||
- Node.js >= 16.17
|
||||
- pnpm >= 8
|
||||
- Golang >= 1.23
|
||||
- Node.js >= 20
|
||||
- pnpm >= 9
|
||||
- [mockgen](https://github.com/uber-go/mock?tab=readme-ov-file#installation) >= 1.6.0
|
||||
- [wire](https://github.com/google/wire/) >= 0.5.0
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
# Install wire and mockgen for building. You can run `make check` to check if they are installed.
|
||||
$ make generate
|
||||
# Install frontend dependencies and build
|
||||
$ make ui
|
||||
# Install backend dependencies and build
|
||||
$ make build
|
||||
```
|
||||
|
||||
@@ -59,4 +65,4 @@ See [CONTRIBUTING](https://answer.apache.org/community/contributing) for ways to
|
||||
|
||||
## License
|
||||
|
||||
[Apache License 2.0](https://github.com/apache/incubator-answer/blob/main/LICENSE)
|
||||
[Apache License 2.0](https://github.com/apache/answer/blob/main/LICENSE)
|
||||
|
||||
@@ -20,7 +20,7 @@ kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ include "answer.fullname" . }}-claim
|
||||
{{- with .Values.persistence.annotations }}
|
||||
{{- with .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
@@ -39,4 +39,10 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.size | quote }}
|
||||
{{- with .Values.persistence.dataSource }}
|
||||
dataSource:
|
||||
name: {{ .name }}
|
||||
kind: {{ .kind | default "VolumeSnapshot" }}
|
||||
apiGroup: {{ .apiGroup | default "snapshot.storage.k8s.io" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+8
-2
@@ -35,7 +35,7 @@ env:
|
||||
# [DEBUG INFO WARN ERROR]
|
||||
value: "INFO"
|
||||
# uncomment the below values to use AUTO_INSTALL and not have to go through the setup process.
|
||||
# Once used to do the initial setup, these variables wont be used moving forward.
|
||||
# Once used to do the initial setup, these variables won't be used moving forward.
|
||||
# You must at a minimum comment AUTO_INSTALL after initial setup to prevent an error about the database already being initiated.
|
||||
# - name: AUTO_INSTALL
|
||||
# value: "true"
|
||||
@@ -68,7 +68,7 @@ env:
|
||||
|
||||
# Configure extra containers
|
||||
extraContainers: []
|
||||
# - name: cloudsql-proxy
|
||||
# - name: cloudsql-proxy
|
||||
# image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.1.2
|
||||
# command:
|
||||
# - /cloud-sql-proxy
|
||||
@@ -91,6 +91,12 @@ persistence:
|
||||
accessMode: ReadWriteOnce
|
||||
size: 5Gi
|
||||
annotations: {}
|
||||
# To restore a PVC from a VolumeSnapshot, set the dataSource;
|
||||
# the kind and apiGroup are optional and default to the shown values
|
||||
dataSource: {}
|
||||
# name: my-volume-snapshot
|
||||
# kind: VolumeSnapshot
|
||||
# apiGroup: snapshot.storage.k8s.io
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
|
||||
+7
-1
@@ -17,12 +17,18 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
//go:generate go run github.com/swaggo/swag/cmd/swag init -g ./cmd/answer/main.go -d ../../ -o ../../docs
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
answercmd "github.com/apache/incubator-answer/cmd"
|
||||
answercmd "github.com/apache/answer/cmd"
|
||||
)
|
||||
|
||||
// main godoc
|
||||
// @title Apache Answer
|
||||
// @description Apache Answer API
|
||||
// @BasePath /
|
||||
// @securityDefinitions.apikey ApiKeyAuth
|
||||
// @in header
|
||||
// @name Authorization
|
||||
|
||||
+66
-36
@@ -24,11 +24,11 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/apache/incubator-answer/internal/base/conf"
|
||||
"github.com/apache/incubator-answer/internal/cli"
|
||||
"github.com/apache/incubator-answer/internal/install"
|
||||
"github.com/apache/incubator-answer/internal/migrations"
|
||||
"github.com/apache/incubator-answer/plugin"
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/install"
|
||||
"github.com/apache/answer/internal/migrations"
|
||||
"github.com/apache/answer/plugin"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@@ -38,6 +38,8 @@ var (
|
||||
dataDirPath string
|
||||
// dumpDataPath dump data path
|
||||
dumpDataPath string
|
||||
// place to build new answer
|
||||
buildDir string
|
||||
// plugins needed to build in answer application
|
||||
buildWithPlugins []string
|
||||
// build output path
|
||||
@@ -47,6 +49,10 @@ var (
|
||||
upgradeVersion string
|
||||
// The fields that need to be set to the default value
|
||||
configFields []string
|
||||
// i18nSourcePath i18n from path
|
||||
i18nSourcePath string
|
||||
// i18nTargetPath i18n to path
|
||||
i18nTargetPath string
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -60,17 +66,22 @@ func init() {
|
||||
|
||||
buildCmd.Flags().StringVarP(&buildOutput, "output", "o", "", "build output path")
|
||||
|
||||
buildCmd.Flags().StringVarP(&buildDir, "build-dir", "b", "", "dir for build process")
|
||||
|
||||
upgradeCmd.Flags().StringVarP(&upgradeVersion, "from", "f", "", "upgrade from specific version, eg: -f v1.1.0")
|
||||
|
||||
configCmd.Flags().StringSliceVarP(&configFields, "with", "w", []string{}, "the fields that need to be set to the default value, eg: -w allow_password_login")
|
||||
|
||||
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd, configCmd} {
|
||||
i18nCmd.Flags().StringVarP(&i18nSourcePath, "source", "s", "", "i18n source path, eg: -s ./i18n/source")
|
||||
|
||||
i18nCmd.Flags().StringVarP(&i18nTargetPath, "target", "t", "", "i18n target path, eg: -t ./i18n/target")
|
||||
|
||||
for _, cmd := range []*cobra.Command{initCmd, checkCmd, runCmd, dumpCmd, upgradeCmd, buildCmd, pluginCmd, configCmd, i18nCmd} {
|
||||
rootCmd.AddCommand(cmd)
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
// rootCmd represents the base command when called without any subcommands
|
||||
rootCmd = &cobra.Command{
|
||||
Use: "answer",
|
||||
Short: "Answer is a minimalist open source Q&A community.",
|
||||
@@ -80,11 +91,10 @@ To run answer, use:
|
||||
- 'answer run' to launch application.`,
|
||||
}
|
||||
|
||||
// runCmd represents the run command
|
||||
runCmd = &cobra.Command{
|
||||
Use: "run",
|
||||
Short: "Run the application",
|
||||
Long: `Run the application`,
|
||||
Short: "Run Answer",
|
||||
Long: `Start running Answer`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
fmt.Println("config file path: ", cli.GetConfigFilePath())
|
||||
@@ -93,11 +103,10 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// initCmd represents the init command
|
||||
initCmd = &cobra.Command{
|
||||
Use: "init",
|
||||
Short: "init answer application",
|
||||
Long: `init answer application`,
|
||||
Short: "Initialize Answer",
|
||||
Long: `Initialize Answer with specified configuration`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
// check config file and database. if config file exists and database is already created, init done
|
||||
cli.InstallAllInitialEnvironment(dataDirPath)
|
||||
@@ -123,11 +132,10 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// upgradeCmd represents the upgrade command
|
||||
upgradeCmd = &cobra.Command{
|
||||
Use: "upgrade",
|
||||
Short: "upgrade Answer version",
|
||||
Long: `upgrade Answer version`,
|
||||
Short: "Upgrade Answer",
|
||||
Long: `Upgrade Answer to the latest version`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
log.SetLogger(log.NewStdLogger(os.Stdout))
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
@@ -145,11 +153,10 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// dumpCmd represents the dump command
|
||||
dumpCmd = &cobra.Command{
|
||||
Use: "dump",
|
||||
Short: "back up data",
|
||||
Long: `back up data`,
|
||||
Short: "Back up data",
|
||||
Long: `Back up database into an SQL file`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
fmt.Println("Answer is backing up data")
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
@@ -167,10 +174,9 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// checkCmd represents the check command
|
||||
checkCmd = &cobra.Command{
|
||||
Use: "check",
|
||||
Short: "checking the required environment",
|
||||
Short: "Check the required environment",
|
||||
Long: `Check if the current environment meets the startup requirements`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
@@ -202,31 +208,30 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// buildCmd used to build another answer with plugins
|
||||
buildCmd = &cobra.Command{
|
||||
Use: "build",
|
||||
Short: "used to build answer with plugins",
|
||||
Short: "Build Answer with plugins",
|
||||
Long: `Build a new Answer with plugins that you need`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
fmt.Printf("try to build a new answer with plugins:\n%s\n", strings.Join(buildWithPlugins, "\n"))
|
||||
err := cli.BuildNewAnswer(buildOutput, buildWithPlugins, cli.OriginalAnswerInfo{
|
||||
err := cli.BuildNewAnswer(buildDir, buildOutput, buildWithPlugins, cli.OriginalAnswerInfo{
|
||||
Version: Version,
|
||||
Revision: Revision,
|
||||
Time: Time,
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Printf("build failed %v", err)
|
||||
} else {
|
||||
fmt.Printf("build new answer successfully %s\n", buildOutput)
|
||||
fmt.Printf("build failed %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fmt.Printf("build new answer successfully %s\n", buildOutput)
|
||||
},
|
||||
}
|
||||
|
||||
// pluginCmd prints all plugins packed in the binary
|
||||
pluginCmd = &cobra.Command{
|
||||
Use: "plugin",
|
||||
Short: "prints all plugins packed in the binary",
|
||||
Long: `prints all plugins packed in the binary`,
|
||||
Short: "Print all plugins packed in the binary",
|
||||
Long: `Print all plugins packed in the binary`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
_ = plugin.CallBase(func(base plugin.Base) error {
|
||||
info := base.Info()
|
||||
@@ -236,11 +241,10 @@ To run answer, use:
|
||||
},
|
||||
}
|
||||
|
||||
// configCmd set some config to default value
|
||||
configCmd = &cobra.Command{
|
||||
Use: "config",
|
||||
Short: "set some config to default value",
|
||||
Long: `set some config to default value`,
|
||||
Short: "Set some config to default value",
|
||||
Long: `Set some config to default value`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
cli.FormatAllPath(dataDirPath)
|
||||
|
||||
@@ -251,12 +255,17 @@ To run answer, use:
|
||||
}
|
||||
|
||||
field := &cli.ConfigField{}
|
||||
for _, f := range configFields {
|
||||
switch f {
|
||||
fmt.Println(configFields)
|
||||
if len(configFields) > 0 {
|
||||
switch configFields[0] {
|
||||
case "allow_password_login":
|
||||
field.AllowPasswordLogin = true
|
||||
case "deactivate_plugin":
|
||||
if len(configFields) > 1 {
|
||||
field.DeactivatePluginSlugName = configFields[1]
|
||||
}
|
||||
default:
|
||||
fmt.Printf("field %s not support\n", f)
|
||||
fmt.Printf("field %s not support\n", configFields[0])
|
||||
}
|
||||
}
|
||||
err = cli.SetDefaultConfig(c.Data.Database, c.Data.Cache, field)
|
||||
@@ -267,6 +276,27 @@ To run answer, use:
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
i18nCmd = &cobra.Command{
|
||||
Use: "i18n",
|
||||
Short: "Overwrite i18n files",
|
||||
Long: `Merge i18n files from plugins to original i18n files. It will overwrite the original i18n files`,
|
||||
Run: func(_ *cobra.Command, _ []string) {
|
||||
if err := cli.ReplaceI18nFilesLocal(i18nTargetPath); err != nil {
|
||||
fmt.Printf("replace i18n files failed %v\n", err)
|
||||
} else {
|
||||
fmt.Printf("replace i18n files successfully\n")
|
||||
}
|
||||
|
||||
fmt.Printf("try to merge i18n files from %q to %q\n", i18nSourcePath, i18nTargetPath)
|
||||
|
||||
if err := cli.MergeI18nFilesLocal(i18nTargetPath, i18nSourcePath); err != nil {
|
||||
fmt.Printf("merge i18n files failed %v\n", err)
|
||||
} else {
|
||||
fmt.Printf("merge i18n files successfully\n")
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
// Execute adds all child commands to the root command and sets flags appropriately.
|
||||
|
||||
+11
-10
@@ -25,11 +25,11 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/apache/incubator-answer/internal/base/conf"
|
||||
"github.com/apache/incubator-answer/internal/base/constant"
|
||||
"github.com/apache/incubator-answer/internal/base/cron"
|
||||
"github.com/apache/incubator-answer/internal/cli"
|
||||
"github.com/apache/incubator-answer/internal/schema"
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/base/constant"
|
||||
"github.com/apache/answer/internal/base/cron"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/schema"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/contrib/log/zap"
|
||||
@@ -37,18 +37,19 @@ import (
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
|
||||
// go build -ldflags "-X github.com/apache/incubator-answer/cmd.Version=x.y.z"
|
||||
// go build -ldflags "-X github.com/apache/answer/cmd.Version=x.y.z"
|
||||
var (
|
||||
// Name is the name of the project
|
||||
Name = "answer"
|
||||
// Version is the version of the project
|
||||
Version = "0.0.0"
|
||||
// Revision is the git short commit revision number
|
||||
Revision = "-"
|
||||
// If built without a Git repository, this field will be empty.
|
||||
Revision = ""
|
||||
// Time is the build time of the project
|
||||
Time = "-"
|
||||
Time = ""
|
||||
// GoVersion is the go version of the project
|
||||
GoVersion = "1.19"
|
||||
GoVersion = "1.23"
|
||||
// log level
|
||||
logLevel = os.Getenv("LOG_LEVEL")
|
||||
// log path
|
||||
@@ -71,7 +72,7 @@ func runApp() {
|
||||
panic(err)
|
||||
}
|
||||
app, cleanup, err := initApplication(
|
||||
c.Debug, c.Server, c.Data.Database, c.Data.Cache, c.I18n, c.Swaggerui, c.ServiceConfig, log.GetLogger())
|
||||
c.Debug, c.Server, c.Data.Database, c.Data.Cache, c.I18n, c.Swaggerui, c.ServiceConfig, c.UI, log.GetLogger())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
+14
-13
@@ -25,19 +25,19 @@
|
||||
package answercmd
|
||||
|
||||
import (
|
||||
"github.com/apache/incubator-answer/internal/base/conf"
|
||||
"github.com/apache/incubator-answer/internal/base/cron"
|
||||
"github.com/apache/incubator-answer/internal/base/data"
|
||||
"github.com/apache/incubator-answer/internal/base/middleware"
|
||||
"github.com/apache/incubator-answer/internal/base/server"
|
||||
"github.com/apache/incubator-answer/internal/base/translator"
|
||||
"github.com/apache/incubator-answer/internal/controller"
|
||||
"github.com/apache/incubator-answer/internal/controller/template_render"
|
||||
"github.com/apache/incubator-answer/internal/controller_admin"
|
||||
"github.com/apache/incubator-answer/internal/repo"
|
||||
"github.com/apache/incubator-answer/internal/router"
|
||||
"github.com/apache/incubator-answer/internal/service"
|
||||
"github.com/apache/incubator-answer/internal/service/service_config"
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/base/cron"
|
||||
"github.com/apache/answer/internal/base/data"
|
||||
"github.com/apache/answer/internal/base/middleware"
|
||||
"github.com/apache/answer/internal/base/server"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/apache/answer/internal/controller"
|
||||
"github.com/apache/answer/internal/controller/template_render"
|
||||
"github.com/apache/answer/internal/controller_admin"
|
||||
"github.com/apache/answer/internal/repo"
|
||||
"github.com/apache/answer/internal/router"
|
||||
"github.com/apache/answer/internal/service"
|
||||
"github.com/apache/answer/internal/service/service_config"
|
||||
"github.com/google/wire"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
@@ -52,6 +52,7 @@ func initApplication(
|
||||
i18nConf *translator.I18n,
|
||||
swaggerConf *router.SwaggerConfig,
|
||||
serviceConf *service_config.ServiceConfig,
|
||||
uiConf *server.UI,
|
||||
logConf log.Logger) (*pacman.Application, func(), error) {
|
||||
panic(wire.Build(
|
||||
server.ProviderSetServer,
|
||||
|
||||
+157
-124
@@ -27,82 +27,93 @@
|
||||
package answercmd
|
||||
|
||||
import (
|
||||
"github.com/apache/incubator-answer/internal/base/conf"
|
||||
"github.com/apache/incubator-answer/internal/base/cron"
|
||||
"github.com/apache/incubator-answer/internal/base/data"
|
||||
"github.com/apache/incubator-answer/internal/base/middleware"
|
||||
"github.com/apache/incubator-answer/internal/base/server"
|
||||
"github.com/apache/incubator-answer/internal/base/translator"
|
||||
"github.com/apache/incubator-answer/internal/controller"
|
||||
"github.com/apache/incubator-answer/internal/controller/template_render"
|
||||
"github.com/apache/incubator-answer/internal/controller_admin"
|
||||
"github.com/apache/incubator-answer/internal/repo/activity"
|
||||
"github.com/apache/incubator-answer/internal/repo/activity_common"
|
||||
"github.com/apache/incubator-answer/internal/repo/answer"
|
||||
"github.com/apache/incubator-answer/internal/repo/auth"
|
||||
"github.com/apache/incubator-answer/internal/repo/captcha"
|
||||
"github.com/apache/incubator-answer/internal/repo/collection"
|
||||
"github.com/apache/incubator-answer/internal/repo/comment"
|
||||
"github.com/apache/incubator-answer/internal/repo/config"
|
||||
"github.com/apache/incubator-answer/internal/repo/export"
|
||||
"github.com/apache/incubator-answer/internal/repo/limit"
|
||||
"github.com/apache/incubator-answer/internal/repo/meta"
|
||||
notification2 "github.com/apache/incubator-answer/internal/repo/notification"
|
||||
"github.com/apache/incubator-answer/internal/repo/plugin_config"
|
||||
"github.com/apache/incubator-answer/internal/repo/question"
|
||||
"github.com/apache/incubator-answer/internal/repo/rank"
|
||||
"github.com/apache/incubator-answer/internal/repo/reason"
|
||||
"github.com/apache/incubator-answer/internal/repo/report"
|
||||
"github.com/apache/incubator-answer/internal/repo/revision"
|
||||
"github.com/apache/incubator-answer/internal/repo/role"
|
||||
"github.com/apache/incubator-answer/internal/repo/search_common"
|
||||
"github.com/apache/incubator-answer/internal/repo/site_info"
|
||||
"github.com/apache/incubator-answer/internal/repo/tag"
|
||||
"github.com/apache/incubator-answer/internal/repo/tag_common"
|
||||
"github.com/apache/incubator-answer/internal/repo/unique"
|
||||
"github.com/apache/incubator-answer/internal/repo/user"
|
||||
"github.com/apache/incubator-answer/internal/repo/user_external_login"
|
||||
"github.com/apache/incubator-answer/internal/repo/user_notification_config"
|
||||
"github.com/apache/incubator-answer/internal/router"
|
||||
"github.com/apache/incubator-answer/internal/service"
|
||||
"github.com/apache/incubator-answer/internal/service/action"
|
||||
activity2 "github.com/apache/incubator-answer/internal/service/activity"
|
||||
activity_common2 "github.com/apache/incubator-answer/internal/service/activity_common"
|
||||
"github.com/apache/incubator-answer/internal/service/activity_queue"
|
||||
"github.com/apache/incubator-answer/internal/service/answer_common"
|
||||
auth2 "github.com/apache/incubator-answer/internal/service/auth"
|
||||
"github.com/apache/incubator-answer/internal/service/collection_common"
|
||||
comment2 "github.com/apache/incubator-answer/internal/service/comment"
|
||||
"github.com/apache/incubator-answer/internal/service/comment_common"
|
||||
config2 "github.com/apache/incubator-answer/internal/service/config"
|
||||
"github.com/apache/incubator-answer/internal/service/dashboard"
|
||||
export2 "github.com/apache/incubator-answer/internal/service/export"
|
||||
"github.com/apache/incubator-answer/internal/service/follow"
|
||||
meta2 "github.com/apache/incubator-answer/internal/service/meta"
|
||||
"github.com/apache/incubator-answer/internal/service/notice_queue"
|
||||
"github.com/apache/incubator-answer/internal/service/notification"
|
||||
"github.com/apache/incubator-answer/internal/service/notification_common"
|
||||
"github.com/apache/incubator-answer/internal/service/object_info"
|
||||
"github.com/apache/incubator-answer/internal/service/plugin_common"
|
||||
"github.com/apache/incubator-answer/internal/service/question_common"
|
||||
rank2 "github.com/apache/incubator-answer/internal/service/rank"
|
||||
reason2 "github.com/apache/incubator-answer/internal/service/reason"
|
||||
report2 "github.com/apache/incubator-answer/internal/service/report"
|
||||
"github.com/apache/incubator-answer/internal/service/report_admin"
|
||||
"github.com/apache/incubator-answer/internal/service/report_handle_admin"
|
||||
"github.com/apache/incubator-answer/internal/service/revision_common"
|
||||
role2 "github.com/apache/incubator-answer/internal/service/role"
|
||||
"github.com/apache/incubator-answer/internal/service/search_parser"
|
||||
"github.com/apache/incubator-answer/internal/service/service_config"
|
||||
"github.com/apache/incubator-answer/internal/service/siteinfo"
|
||||
"github.com/apache/incubator-answer/internal/service/siteinfo_common"
|
||||
tag2 "github.com/apache/incubator-answer/internal/service/tag"
|
||||
tag_common2 "github.com/apache/incubator-answer/internal/service/tag_common"
|
||||
"github.com/apache/incubator-answer/internal/service/uploader"
|
||||
"github.com/apache/incubator-answer/internal/service/user_admin"
|
||||
"github.com/apache/incubator-answer/internal/service/user_common"
|
||||
user_external_login2 "github.com/apache/incubator-answer/internal/service/user_external_login"
|
||||
user_notification_config2 "github.com/apache/incubator-answer/internal/service/user_notification_config"
|
||||
"github.com/apache/answer/internal/base/conf"
|
||||
"github.com/apache/answer/internal/base/cron"
|
||||
"github.com/apache/answer/internal/base/data"
|
||||
"github.com/apache/answer/internal/base/middleware"
|
||||
"github.com/apache/answer/internal/base/server"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/apache/answer/internal/controller"
|
||||
"github.com/apache/answer/internal/controller/template_render"
|
||||
"github.com/apache/answer/internal/controller_admin"
|
||||
"github.com/apache/answer/internal/repo/activity"
|
||||
"github.com/apache/answer/internal/repo/activity_common"
|
||||
"github.com/apache/answer/internal/repo/answer"
|
||||
"github.com/apache/answer/internal/repo/auth"
|
||||
"github.com/apache/answer/internal/repo/badge"
|
||||
"github.com/apache/answer/internal/repo/badge_award"
|
||||
"github.com/apache/answer/internal/repo/badge_group"
|
||||
"github.com/apache/answer/internal/repo/captcha"
|
||||
"github.com/apache/answer/internal/repo/collection"
|
||||
"github.com/apache/answer/internal/repo/comment"
|
||||
"github.com/apache/answer/internal/repo/config"
|
||||
"github.com/apache/answer/internal/repo/export"
|
||||
"github.com/apache/answer/internal/repo/file_record"
|
||||
"github.com/apache/answer/internal/repo/limit"
|
||||
"github.com/apache/answer/internal/repo/meta"
|
||||
notification2 "github.com/apache/answer/internal/repo/notification"
|
||||
"github.com/apache/answer/internal/repo/plugin_config"
|
||||
"github.com/apache/answer/internal/repo/question"
|
||||
"github.com/apache/answer/internal/repo/rank"
|
||||
"github.com/apache/answer/internal/repo/reason"
|
||||
"github.com/apache/answer/internal/repo/report"
|
||||
"github.com/apache/answer/internal/repo/review"
|
||||
"github.com/apache/answer/internal/repo/revision"
|
||||
"github.com/apache/answer/internal/repo/role"
|
||||
"github.com/apache/answer/internal/repo/search_common"
|
||||
"github.com/apache/answer/internal/repo/site_info"
|
||||
"github.com/apache/answer/internal/repo/tag"
|
||||
"github.com/apache/answer/internal/repo/tag_common"
|
||||
"github.com/apache/answer/internal/repo/unique"
|
||||
"github.com/apache/answer/internal/repo/user"
|
||||
"github.com/apache/answer/internal/repo/user_external_login"
|
||||
"github.com/apache/answer/internal/repo/user_notification_config"
|
||||
"github.com/apache/answer/internal/router"
|
||||
"github.com/apache/answer/internal/service/action"
|
||||
activity2 "github.com/apache/answer/internal/service/activity"
|
||||
activity_common2 "github.com/apache/answer/internal/service/activity_common"
|
||||
"github.com/apache/answer/internal/service/activity_queue"
|
||||
"github.com/apache/answer/internal/service/answer_common"
|
||||
auth2 "github.com/apache/answer/internal/service/auth"
|
||||
badge2 "github.com/apache/answer/internal/service/badge"
|
||||
collection2 "github.com/apache/answer/internal/service/collection"
|
||||
"github.com/apache/answer/internal/service/collection_common"
|
||||
comment2 "github.com/apache/answer/internal/service/comment"
|
||||
"github.com/apache/answer/internal/service/comment_common"
|
||||
config2 "github.com/apache/answer/internal/service/config"
|
||||
"github.com/apache/answer/internal/service/content"
|
||||
"github.com/apache/answer/internal/service/dashboard"
|
||||
"github.com/apache/answer/internal/service/event_queue"
|
||||
export2 "github.com/apache/answer/internal/service/export"
|
||||
file_record2 "github.com/apache/answer/internal/service/file_record"
|
||||
"github.com/apache/answer/internal/service/follow"
|
||||
"github.com/apache/answer/internal/service/importer"
|
||||
meta2 "github.com/apache/answer/internal/service/meta"
|
||||
"github.com/apache/answer/internal/service/meta_common"
|
||||
"github.com/apache/answer/internal/service/notice_queue"
|
||||
"github.com/apache/answer/internal/service/notification"
|
||||
"github.com/apache/answer/internal/service/notification_common"
|
||||
"github.com/apache/answer/internal/service/object_info"
|
||||
"github.com/apache/answer/internal/service/plugin_common"
|
||||
"github.com/apache/answer/internal/service/question_common"
|
||||
rank2 "github.com/apache/answer/internal/service/rank"
|
||||
reason2 "github.com/apache/answer/internal/service/reason"
|
||||
report2 "github.com/apache/answer/internal/service/report"
|
||||
"github.com/apache/answer/internal/service/report_handle"
|
||||
review2 "github.com/apache/answer/internal/service/review"
|
||||
"github.com/apache/answer/internal/service/revision_common"
|
||||
role2 "github.com/apache/answer/internal/service/role"
|
||||
"github.com/apache/answer/internal/service/search_parser"
|
||||
"github.com/apache/answer/internal/service/service_config"
|
||||
"github.com/apache/answer/internal/service/siteinfo"
|
||||
"github.com/apache/answer/internal/service/siteinfo_common"
|
||||
tag2 "github.com/apache/answer/internal/service/tag"
|
||||
tag_common2 "github.com/apache/answer/internal/service/tag_common"
|
||||
"github.com/apache/answer/internal/service/uploader"
|
||||
"github.com/apache/answer/internal/service/user_admin"
|
||||
"github.com/apache/answer/internal/service/user_common"
|
||||
user_external_login2 "github.com/apache/answer/internal/service/user_external_login"
|
||||
user_notification_config2 "github.com/apache/answer/internal/service/user_notification_config"
|
||||
"github.com/segmentfault/pacman"
|
||||
"github.com/segmentfault/pacman/log"
|
||||
)
|
||||
@@ -110,7 +121,7 @@ import (
|
||||
// Injectors from wire.go:
|
||||
|
||||
// initApplication init application.
|
||||
func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database, cacheConf *data.CacheConf, i18nConf *translator.I18n, swaggerConf *router.SwaggerConfig, serviceConf *service_config.ServiceConfig, logConf log.Logger) (*pacman.Application, func(), error) {
|
||||
func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database, cacheConf *data.CacheConf, i18nConf *translator.I18n, swaggerConf *router.SwaggerConfig, serviceConf *service_config.ServiceConfig, uiConf *server.UI, logConf log.Logger) (*pacman.Application, func(), error) {
|
||||
staticRouter := router.NewStaticRouter(serviceConf)
|
||||
i18nTranslator, err := translator.NewTranslator(i18nConf)
|
||||
if err != nil {
|
||||
@@ -152,14 +163,10 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
userNotificationConfigRepo := user_notification_config.NewUserNotificationConfigRepo(dataData)
|
||||
userNotificationConfigService := user_notification_config2.NewUserNotificationConfigService(userRepo, userNotificationConfigRepo)
|
||||
userExternalLoginService := user_external_login2.NewUserExternalLoginService(userRepo, userCommon, userExternalLoginRepo, emailService, siteInfoCommonService, userActiveActivityRepo, userNotificationConfigService)
|
||||
userService := service.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService)
|
||||
captchaRepo := captcha.NewCaptchaRepo(dataData)
|
||||
captchaService := action.NewCaptchaService(captchaRepo)
|
||||
userController := controller.NewUserController(authService, userService, captchaService, emailService, siteInfoCommonService, userNotificationConfigService)
|
||||
commentRepo := comment.NewCommentRepo(dataData, uniqueIDRepo)
|
||||
commentCommonRepo := comment.NewCommentCommonRepo(dataData, uniqueIDRepo)
|
||||
answerRepo := answer.NewAnswerRepo(dataData, uniqueIDRepo, userRankRepo, activityRepo)
|
||||
questionRepo := question.NewQuestionRepo(dataData, uniqueIDRepo)
|
||||
answerRepo := answer.NewAnswerRepo(dataData, uniqueIDRepo, userRankRepo, activityRepo)
|
||||
voteRepo := activity_common.NewVoteRepo(dataData, activityRepo)
|
||||
followRepo := activity_common.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
|
||||
tagCommonRepo := tag_common.NewTagCommonRepo(dataData, uniqueIDRepo)
|
||||
tagRelRepo := tag.NewTagRelRepo(dataData, uniqueIDRepo)
|
||||
tagRepo := tag.NewTagRepo(dataData, uniqueIDRepo)
|
||||
@@ -167,11 +174,25 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
revisionService := revision_common.NewRevisionService(revisionRepo, userRepo)
|
||||
activityQueueService := activity_queue.NewActivityQueueService()
|
||||
tagCommonService := tag_common2.NewTagCommonService(tagCommonRepo, tagRelRepo, tagRepo, revisionService, siteInfoCommonService, activityQueueService)
|
||||
collectionRepo := collection.NewCollectionRepo(dataData, uniqueIDRepo)
|
||||
collectionCommon := collectioncommon.NewCollectionCommon(collectionRepo)
|
||||
answerCommon := answercommon.NewAnswerCommon(answerRepo)
|
||||
metaRepo := meta.NewMetaRepo(dataData)
|
||||
metaCommonService := metacommon.NewMetaCommonService(metaRepo)
|
||||
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaCommonService, configService, activityQueueService, revisionRepo, siteInfoCommonService, dataData)
|
||||
eventQueueService := event_queue.NewEventQueueService()
|
||||
fileRecordRepo := file_record.NewFileRecordRepo(dataData)
|
||||
fileRecordService := file_record2.NewFileRecordService(fileRecordRepo, revisionRepo, serviceConf, siteInfoCommonService, userCommon)
|
||||
userService := content.NewUserService(userRepo, userActiveActivityRepo, activityRepo, emailService, authService, siteInfoCommonService, userRoleRelService, userCommon, userExternalLoginService, userNotificationConfigRepo, userNotificationConfigService, questionCommon, eventQueueService, fileRecordService)
|
||||
captchaRepo := captcha.NewCaptchaRepo(dataData)
|
||||
captchaService := action.NewCaptchaService(captchaRepo)
|
||||
userController := controller.NewUserController(authService, userService, captchaService, emailService, siteInfoCommonService, userNotificationConfigService)
|
||||
commentRepo := comment.NewCommentRepo(dataData, uniqueIDRepo)
|
||||
commentCommonRepo := comment.NewCommentCommonRepo(dataData, uniqueIDRepo)
|
||||
objService := object_info.NewObjService(answerRepo, questionRepo, commentCommonRepo, tagCommonRepo, tagCommonService)
|
||||
voteRepo := activity_common.NewVoteRepo(dataData, activityRepo)
|
||||
notificationQueueService := notice_queue.NewNotificationQueueService()
|
||||
externalNotificationQueueService := notice_queue.NewNewQuestionNotificationQueueService()
|
||||
commentService := comment2.NewCommentService(commentRepo, commentCommonRepo, userCommon, objService, voteRepo, emailService, userRepo, notificationQueueService, externalNotificationQueueService, activityQueueService)
|
||||
commentService := comment2.NewCommentService(commentRepo, commentCommonRepo, userCommon, objService, voteRepo, emailService, userRepo, notificationQueueService, externalNotificationQueueService, activityQueueService, eventQueueService)
|
||||
rolePowerRelRepo := role.NewRolePowerRelRepo(dataData)
|
||||
rolePowerRelService := role2.NewRolePowerRelService(rolePowerRelRepo, userRoleRelService)
|
||||
rankService := rank2.NewRankService(userCommon, userRankRepo, objService, userRoleRelService, rolePowerRelService, configService)
|
||||
@@ -179,86 +200,98 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
|
||||
rateLimitMiddleware := middleware.NewRateLimitMiddleware(limitRepo)
|
||||
commentController := controller.NewCommentController(commentService, rankService, captchaService, rateLimitMiddleware)
|
||||
reportRepo := report.NewReportRepo(dataData, uniqueIDRepo)
|
||||
reportService := report2.NewReportService(reportRepo, objService)
|
||||
reportController := controller.NewReportController(reportService, rankService, captchaService)
|
||||
serviceVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
voteService := service.NewVoteService(serviceVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService)
|
||||
voteController := controller.NewVoteController(voteService, rankService, captchaService)
|
||||
followRepo := activity_common.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
|
||||
tagService := tag2.NewTagService(tagRepo, tagCommonService, revisionService, followRepo, siteInfoCommonService, activityQueueService)
|
||||
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
answerActivityService := activity2.NewAnswerActivityService(answerActivityRepo, configService)
|
||||
externalNotificationService := notification.NewExternalNotificationService(dataData, userNotificationConfigRepo, followRepo, emailService, userRepo, externalNotificationQueueService, userExternalLoginRepo, siteInfoCommonService)
|
||||
reviewRepo := review.NewReviewRepo(dataData)
|
||||
reviewService := review2.NewReviewService(reviewRepo, objService, userCommon, userRepo, questionRepo, answerRepo, userRoleRelService, externalNotificationQueueService, tagCommonService, questionCommon, notificationQueueService, siteInfoCommonService)
|
||||
questionService := content.NewQuestionService(activityRepo, questionRepo, answerRepo, tagCommonService, tagService, questionCommon, userCommon, userRepo, userRoleRelService, revisionService, metaCommonService, collectionCommon, answerActivityService, emailService, notificationQueueService, externalNotificationQueueService, activityQueueService, siteInfoCommonService, externalNotificationService, reviewService, configService, eventQueueService, reviewRepo)
|
||||
answerService := content.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, externalNotificationQueueService, activityQueueService, reviewService, eventQueueService)
|
||||
reportHandle := report_handle.NewReportHandle(questionService, answerService, commentService)
|
||||
reportService := report2.NewReportService(reportRepo, objService, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService, eventQueueService)
|
||||
reportController := controller.NewReportController(reportService, rankService, captchaService)
|
||||
contentVoteRepo := activity.NewVoteRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
voteService := content.NewVoteService(contentVoteRepo, configService, questionRepo, answerRepo, commentCommonRepo, objService, eventQueueService)
|
||||
voteController := controller.NewVoteController(voteService, rankService, captchaService)
|
||||
tagController := controller.NewTagController(tagService, tagCommonService, rankService)
|
||||
followFollowRepo := activity.NewFollowRepo(dataData, uniqueIDRepo, activityRepo)
|
||||
followService := follow.NewFollowService(followFollowRepo, followRepo, tagCommonRepo)
|
||||
followController := controller.NewFollowController(followService)
|
||||
collectionRepo := collection.NewCollectionRepo(dataData, uniqueIDRepo)
|
||||
collectionGroupRepo := collection.NewCollectionGroupRepo(dataData)
|
||||
collectionCommon := collectioncommon.NewCollectionCommon(collectionRepo)
|
||||
answerCommon := answercommon.NewAnswerCommon(answerRepo)
|
||||
metaRepo := meta.NewMetaRepo(dataData)
|
||||
metaService := meta2.NewMetaService(metaRepo)
|
||||
questionCommon := questioncommon.NewQuestionCommon(questionRepo, answerRepo, voteRepo, followRepo, tagCommonService, userCommon, collectionCommon, answerCommon, metaService, configService, activityQueueService, dataData)
|
||||
collectionService := service.NewCollectionService(collectionRepo, collectionGroupRepo, questionCommon)
|
||||
collectionService := collection2.NewCollectionService(collectionRepo, collectionGroupRepo, questionCommon)
|
||||
collectionController := controller.NewCollectionController(collectionService)
|
||||
answerActivityRepo := activity.NewAnswerActivityRepo(dataData, activityRepo, userRankRepo, notificationQueueService)
|
||||
answerActivityService := activity2.NewAnswerActivityService(answerActivityRepo, configService)
|
||||
externalNotificationService := notification.NewExternalNotificationService(dataData, userNotificationConfigRepo, followRepo, emailService, userRepo, externalNotificationQueueService)
|
||||
questionService := service.NewQuestionService(questionRepo, tagCommonService, questionCommon, userCommon, userRepo, revisionService, metaService, collectionCommon, answerActivityService, emailService, notificationQueueService, externalNotificationQueueService, activityQueueService, siteInfoCommonService, externalNotificationService)
|
||||
answerService := service.NewAnswerService(answerRepo, questionRepo, questionCommon, userCommon, collectionCommon, userRepo, revisionService, answerActivityService, answerCommon, voteRepo, emailService, userRoleRelService, notificationQueueService, externalNotificationQueueService, activityQueueService)
|
||||
questionController := controller.NewQuestionController(questionService, answerService, rankService, siteInfoCommonService, captchaService, rateLimitMiddleware)
|
||||
answerController := controller.NewAnswerController(answerService, rankService, captchaService, siteInfoCommonService, rateLimitMiddleware)
|
||||
searchParser := search_parser.NewSearchParser(tagCommonService, userCommon)
|
||||
searchRepo := search_common.NewSearchRepo(dataData, uniqueIDRepo, userCommon, tagCommonService)
|
||||
searchService := service.NewSearchService(searchParser, searchRepo)
|
||||
searchService := content.NewSearchService(searchParser, searchRepo)
|
||||
searchController := controller.NewSearchController(searchService, captchaService)
|
||||
serviceRevisionService := service.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService)
|
||||
revisionController := controller.NewRevisionController(serviceRevisionService, rankService)
|
||||
reviewActivityRepo := activity.NewReviewActivityRepo(dataData, activityRepo, userRankRepo, configService)
|
||||
contentRevisionService := content.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService, reportRepo, reviewService, reviewActivityRepo)
|
||||
revisionController := controller.NewRevisionController(contentRevisionService, rankService)
|
||||
rankController := controller.NewRankController(rankService)
|
||||
reportHandle := report_handle_admin.NewReportHandle(questionCommon, commentRepo, configService, notificationQueueService)
|
||||
reportAdminService := report_admin.NewReportAdminService(reportRepo, userCommon, answerRepo, questionRepo, commentCommonRepo, reportHandle, configService, objService)
|
||||
controller_adminReportController := controller_admin.NewReportController(reportAdminService)
|
||||
userAdminRepo := user.NewUserAdminRepo(dataData, authRepo)
|
||||
userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo)
|
||||
notificationRepo := notification2.NewNotificationRepo(dataData)
|
||||
pluginUserConfigRepo := plugin_config.NewPluginUserConfigRepo(dataData)
|
||||
badgeAwardRepo := badge_award.NewBadgeAwardRepo(dataData, uniqueIDRepo)
|
||||
userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo, userExternalLoginRepo, notificationRepo, pluginUserConfigRepo, badgeAwardRepo)
|
||||
userAdminController := controller_admin.NewUserAdminController(userAdminService)
|
||||
reasonRepo := reason.NewReasonRepo(configService)
|
||||
reasonService := reason2.NewReasonService(reasonRepo)
|
||||
reasonController := controller.NewReasonController(reasonService)
|
||||
themeController := controller_admin.NewThemeController()
|
||||
siteInfoService := siteinfo.NewSiteInfoService(siteInfoRepo, siteInfoCommonService, emailService, tagCommonService, configService, questionCommon)
|
||||
siteInfoService := siteinfo.NewSiteInfoService(siteInfoRepo, siteInfoCommonService, emailService, tagCommonService, configService, questionCommon, fileRecordService)
|
||||
siteInfoController := controller_admin.NewSiteInfoController(siteInfoService)
|
||||
controllerSiteInfoController := controller.NewSiteInfoController(siteInfoCommonService)
|
||||
notificationRepo := notification2.NewNotificationRepo(dataData)
|
||||
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService)
|
||||
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo)
|
||||
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService, userExternalLoginRepo, siteInfoCommonService)
|
||||
badgeRepo := badge.NewBadgeRepo(dataData, uniqueIDRepo)
|
||||
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo, reportRepo, reviewService, badgeRepo)
|
||||
notificationController := controller.NewNotificationController(notificationService, rankService)
|
||||
dashboardService := dashboard.NewDashboardService(questionRepo, answerRepo, commentCommonRepo, voteRepo, userRepo, reportRepo, configService, siteInfoCommonService, serviceConf, dataData)
|
||||
dashboardService := dashboard.NewDashboardService(questionRepo, answerRepo, commentCommonRepo, voteRepo, userRepo, reportRepo, configService, siteInfoCommonService, serviceConf, reviewService, revisionRepo, dataData)
|
||||
dashboardController := controller.NewDashboardController(dashboardService)
|
||||
uploaderService := uploader.NewUploaderService(serviceConf, siteInfoCommonService)
|
||||
uploaderService := uploader.NewUploaderService(serviceConf, siteInfoCommonService, fileRecordService)
|
||||
uploadController := controller.NewUploadController(uploaderService)
|
||||
activityActivityRepo := activity.NewActivityRepo(dataData, configService)
|
||||
activityCommon := activity_common2.NewActivityCommon(activityRepo, activityQueueService)
|
||||
commentCommonService := comment_common.NewCommentCommonService(commentCommonRepo)
|
||||
activityService := activity2.NewActivityService(activityActivityRepo, userCommon, activityCommon, tagCommonService, objService, commentCommonService, revisionService, metaService, configService)
|
||||
activityService := activity2.NewActivityService(activityActivityRepo, userCommon, activityCommon, tagCommonService, objService, commentCommonService, revisionService, metaCommonService, configService)
|
||||
activityController := controller.NewActivityController(activityService)
|
||||
roleController := controller_admin.NewRoleController(roleService)
|
||||
pluginConfigRepo := plugin_config.NewPluginConfigRepo(dataData)
|
||||
pluginCommonService := plugin_common.NewPluginCommonService(pluginConfigRepo, configService, dataData)
|
||||
importerService := importer.NewImporterService(questionService, rankService, userCommon)
|
||||
pluginCommonService := plugin_common.NewPluginCommonService(pluginConfigRepo, pluginUserConfigRepo, configService, dataData, importerService)
|
||||
pluginController := controller_admin.NewPluginController(pluginCommonService)
|
||||
permissionController := controller.NewPermissionController(rankService)
|
||||
answerAPIRouter := router.NewAnswerAPIRouter(langController, userController, commentController, reportController, voteController, tagController, followController, collectionController, questionController, answerController, searchController, revisionController, rankController, controller_adminReportController, userAdminController, reasonController, themeController, siteInfoController, controllerSiteInfoController, notificationController, dashboardController, uploadController, activityController, roleController, pluginController, permissionController)
|
||||
userPluginController := controller.NewUserPluginController(pluginCommonService)
|
||||
reviewController := controller.NewReviewController(reviewService, rankService, captchaService)
|
||||
metaService := meta2.NewMetaService(metaCommonService, userCommon, answerRepo, questionRepo, eventQueueService)
|
||||
metaController := controller.NewMetaController(metaService)
|
||||
badgeGroupRepo := badge_group.NewBadgeGroupRepo(dataData, uniqueIDRepo)
|
||||
eventRuleRepo := badge.NewEventRuleRepo(dataData)
|
||||
badgeAwardService := badge2.NewBadgeAwardService(badgeAwardRepo, badgeRepo, userCommon, objService, notificationQueueService)
|
||||
badgeEventService := badge2.NewBadgeEventService(dataData, eventQueueService, badgeRepo, eventRuleRepo, badgeAwardService)
|
||||
badgeService := badge2.NewBadgeService(badgeRepo, badgeGroupRepo, badgeAwardRepo, badgeEventService, siteInfoCommonService)
|
||||
badgeController := controller.NewBadgeController(badgeService, badgeAwardService)
|
||||
controller_adminBadgeController := controller_admin.NewBadgeController(badgeService)
|
||||
answerAPIRouter := router.NewAnswerAPIRouter(langController, userController, commentController, reportController, voteController, tagController, followController, collectionController, questionController, answerController, searchController, revisionController, rankController, userAdminController, reasonController, themeController, siteInfoController, controllerSiteInfoController, notificationController, dashboardController, uploadController, activityController, roleController, pluginController, permissionController, userPluginController, reviewController, metaController, badgeController, controller_adminBadgeController)
|
||||
swaggerRouter := router.NewSwaggerRouter(swaggerConf)
|
||||
uiRouter := router.NewUIRouter(controllerSiteInfoController, siteInfoCommonService)
|
||||
authUserMiddleware := middleware.NewAuthUserMiddleware(authService, siteInfoCommonService)
|
||||
avatarMiddleware := middleware.NewAvatarMiddleware(serviceConf, uploaderService)
|
||||
shortIDMiddleware := middleware.NewShortIDMiddleware(siteInfoCommonService)
|
||||
templateRenderController := templaterender.NewTemplateRenderController(questionService, userService, tagService, answerService, commentService, siteInfoCommonService, questionRepo)
|
||||
templateController := controller.NewTemplateController(templateRenderController, siteInfoCommonService)
|
||||
templateController := controller.NewTemplateController(templateRenderController, siteInfoCommonService, eventQueueService, userService, questionService)
|
||||
templateRouter := router.NewTemplateRouter(templateController, templateRenderController, siteInfoController, authUserMiddleware)
|
||||
connectorController := controller.NewConnectorController(siteInfoCommonService, emailService, userExternalLoginService)
|
||||
userCenterLoginService := user_external_login2.NewUserCenterLoginService(userRepo, userCommon, userExternalLoginRepo, userActiveActivityRepo, siteInfoCommonService)
|
||||
userCenterController := controller.NewUserCenterController(userCenterLoginService, siteInfoCommonService)
|
||||
pluginAPIRouter := router.NewPluginAPIRouter(connectorController, userCenterController)
|
||||
ginEngine := server.NewHTTPServer(debug, staticRouter, answerAPIRouter, swaggerRouter, uiRouter, authUserMiddleware, avatarMiddleware, shortIDMiddleware, templateRouter, pluginAPIRouter)
|
||||
scheduledTaskManager := cron.NewScheduledTaskManager(siteInfoCommonService, questionService)
|
||||
captchaController := controller.NewCaptchaController()
|
||||
embedController := controller.NewEmbedController()
|
||||
renderController := controller.NewRenderController()
|
||||
pluginAPIRouter := router.NewPluginAPIRouter(connectorController, userCenterController, captchaController, embedController, renderController)
|
||||
ginEngine := server.NewHTTPServer(debug, staticRouter, answerAPIRouter, swaggerRouter, uiRouter, authUserMiddleware, avatarMiddleware, shortIDMiddleware, templateRouter, pluginAPIRouter, uiConf)
|
||||
scheduledTaskManager := cron.NewScheduledTaskManager(siteInfoCommonService, questionService, fileRecordService, userAdminService, serviceConf)
|
||||
application := newApplication(serverConf, ginEngine, scheduledTaskManager)
|
||||
return application, func() {
|
||||
cleanup2()
|
||||
|
||||
+9
-2
@@ -32,6 +32,13 @@ swaggerui:
|
||||
host: 127.0.0.1
|
||||
address: ':80'
|
||||
service_config:
|
||||
secret_key: "answer"
|
||||
web_host: "http://127.0.0.1:9080"
|
||||
upload_path: "/data/uploads"
|
||||
clean_up_uploads: true
|
||||
clean_orphan_uploads_period_hours: 48
|
||||
purge_deleted_files_period_days: 30
|
||||
ui:
|
||||
public_url: '/'
|
||||
api_url: '/'
|
||||
base_url: ''
|
||||
api_base_url: ''
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
version: "3.9"
|
||||
|
||||
# uffizzi integration
|
||||
x-uffizzi:
|
||||
ingress:
|
||||
service: answer
|
||||
port: 80
|
||||
|
||||
services:
|
||||
|
||||
answer:
|
||||
image: "${ANSWER_IMAGE}"
|
||||
environment:
|
||||
- AUTO_INSTALL=true
|
||||
- DB_TYPE=mysql
|
||||
- DB_USERNAME=root
|
||||
- DB_PASSWORD=password
|
||||
- DB_HOST=127.0.0.1:3306
|
||||
- DB_NAME=answer
|
||||
- LANGUAGE=en_US
|
||||
- SITE_NAME=answer-test
|
||||
- SITE_URL=http://localhost
|
||||
- CONTACT_EMAIL=test@answer.com
|
||||
- ADMIN_NAME=admin123
|
||||
- ADMIN_PASSWORD=admin123
|
||||
- ADMIN_EMAIL=admin123@admin.com
|
||||
volumes:
|
||||
- answer-data:/data
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
links:
|
||||
- db
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 4000M
|
||||
|
||||
mysql:
|
||||
image: mysql:latest
|
||||
environment:
|
||||
- MYSQL_DATABASE=answer
|
||||
- MYSQL_ROOT_PASSWORD=password
|
||||
- MYSQL_USER=mysql
|
||||
- MYSQL_PASSWORD=mysql
|
||||
healthcheck:
|
||||
test: [ "CMD", "mysqladmin" ,"ping", "-uroot", "-ppassword" ]
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--skip-character-set-client-handshake']
|
||||
volumes:
|
||||
- sql_data:/var/lib/mysql
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 500M
|
||||
|
||||
volumes:
|
||||
answer-data:
|
||||
sql_data:
|
||||
+2460
-281
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB |
@@ -1,3 +1,21 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<svg width="126" height="44" viewBox="0 0 126 44" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="125.49" height="44" rx="6" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 14.4C8 12.1598 8 11.0397 8.43597 10.184C8.81947 9.43139 9.43139 8.81947 10.184 8.43597C11.0397 8 12.1598 8 14.4 8H29.6C31.8402 8 32.9603 8 33.816 8.43597C34.5686 8.81947 35.1805 9.43139 35.564 10.184C36 11.0397 36 12.1598 36 14.4V24.0892C36 26.9608 36 28.3967 35.5628 29.6643C35.1761 30.7853 34.5451 31.8063 33.7153 32.6535C32.7771 33.6115 31.4928 34.2536 28.9244 35.5378L28 36V32H14.4C12.1598 32 11.0397 32 10.184 31.564C9.43139 31.1805 8.81947 30.5686 8.43597 29.816C8 28.9603 8 27.8402 8 25.6V14.4ZM28 20C28 23.3137 25.3137 26 22 26C18.6954 26 16.0148 23.3285 16.0001 20.0274V20H28Z" fill="#0033FF"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 96 KiB |
@@ -231,7 +231,11 @@ The following components are provided under the MIT License. See project link fo
|
||||
(MIT License) bootstrap (https://github.com/twbs/bootstrap) [link](./licenses/LICENSE-twbs-bootstrap.txt)
|
||||
(MIT License) icons (https://github.com/twbs/icons) [link](./licenses/LICENSE-twbs-icons.txt)
|
||||
(MIT License) classnames (https://github.com/JedWatson/classnames) [link](./LICENSE-JedWatson-classnames.txt)
|
||||
(MIT License) codemirror5 (https://github.com/codemirror/codemirror5) [link](./licenses/LICENSE-codemirror-codemirror5.txt)
|
||||
(MIT License) codemirror (https://github.com/codemirror/basic-setup) [link](./licenses/LICENSE-codemirror-basic-setup.txt)
|
||||
(MIT License) @codemirror/lang-markdown (https://github.com/codemirror/lang-markdown) [link](./licenses/LICENSE-codemirror-lang-markdown.txt)
|
||||
(MIT License) @codemirror/language-data (https://github.com/codemirror/language-data) [link](./licenses/LICENSE-codemirror-language-data.txt)
|
||||
(MIT License) @codemirror/state (https://github.com/codemirror/state) [link](./licenses/LICENSE-codemirror-state.txt)
|
||||
(MIT License) @codemirror/view (https://github.com/codemirror/view) [link](./licenses/LICENSE-codemirror-view.txt)
|
||||
(MIT License) color (https://github.com/Qix-/color) [link](./licenses/LICENSE-Qix--color.txt)
|
||||
(MIT License) copy-to-clipboard (https://github.com/sudodoki/copy-to-clipboard) [link](./licenses/LICENSE-sudodoki-copy-to-clipboard.txt)
|
||||
(MIT License) dayjs (https://github.com/iamkun/dayjs) [link](./licenses/LICENSE-iamkun-dayjs.txt)
|
||||
@@ -246,7 +250,7 @@ The following components are provided under the MIT License. See project link fo
|
||||
(MIT License) react-router (https://github.com/remix-run/react-router) [link](./licenses/LICENSE-remix-run-react-router.txt)
|
||||
(MIT License) swr (https://github.com/vercel/swr) [link](./licenses/LICENSE-vercel-swr.txt)
|
||||
(MIT License) zustand (https://github.com/pmndrs/zustand) [link](./licenses/LICENSE-pmndrs-zustand.txt)
|
||||
(MIT License) Chain-Zhang-pinyin (https://github.com/Chain-Zhang/pinyin) [link](./licenses/LICENSE-Chain-Zhang-pinyin.txt)
|
||||
(MIT License) mozillazg-go-pinyin (https://github.com/mozillazg/go-pinyin) [link](./licenses/LICENSE-mozillazg-go-pinyin.txt)
|
||||
(MIT License) Machiel-slugify (https://github.com/Machiel/slugify) [link](./licenses/LICENSE-Machiel-slugify.txt)
|
||||
(MIT License) Masterminds-semver (https://github.com/Masterminds/semver) [link](./licenses/LICENSE-Masterminds-semver.txt)
|
||||
(MIT License) anargu-gin-brotli (https://github.com/anargu/gin-brotli) [link](./licenses/LICENSE-anargu-gin-brotli.txt)
|
||||
@@ -272,6 +276,8 @@ The following components are provided under the MIT License. See project link fo
|
||||
(MIT License) tidwall-gjson (https://github.com/tidwall/gjson) [link](./licenses/LICENSE-tidwall-gjson.txt)
|
||||
(MIT License) yuin-goldmark (https://github.com/yuin/goldmark) [link](./licenses/LICENSE-yuin-goldmark.txt)
|
||||
(MIT License) go-gomail-gomail (https://gopkg.in/gomail.v2) [link](./licenses/LICENSE-go-gomail-gomail.txt)
|
||||
(MIT License) front-matter (https://github.com/jxson/front-matter) [link](./licenses/LICENSE-jxson-front-matter.txt)
|
||||
(MIT License) js-sha256 (https://github.com/emn178/js-sha256) [link](./licenses/LICENSE-emn178-js-sha256.txt)
|
||||
|
||||
========================================================================
|
||||
BSD licenses
|
||||
@@ -286,7 +292,6 @@ The following components are provided under a BSD license. See project link for
|
||||
(BSD 3-Clause) microcosm-cc-bluemonday (https://github.com/microcosm-cc/bluemonday) [link](./licenses/LICENSE-microcosm-cc-bluemonday.txt)
|
||||
(BSD 3-Clause) cznic-sqlite (https://modernc.org/sqlite) [link](./licenses/LICENSE-cznic-sqlite.txt)
|
||||
(BSD 3-Clause) jsdiff (https://github.com/kpdecker/jsdiff) [link](./licenses/LICENSE-kpdecker-jsdiff.txt)
|
||||
(BSD 3-Clause) node-md5 (https://github.com/pvorb/node-md5) [link](./licenses/LICENSE-pvorb-node-md5.txt)
|
||||
(BSD 3-Clause) qs (https://github.com/ljharb/qs) [link](./licenses/LICENSE-ljharb-qs.txt)
|
||||
|
||||
========================================================================
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
Apache Answer (incubating)
|
||||
Copyright 2023 The Apache Software Foundation
|
||||
Apache Answer
|
||||
Copyright 2025 The Apache Software Foundation
|
||||
|
||||
This product includes software developed at
|
||||
The Apache Software Foundation (https://www.apache.org/).
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2017 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2014-2024 Chen, Yi-Cyuan
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,9 @@
|
||||
# The MIT License (MIT)
|
||||
|
||||
Copyright (c) Jason Campbell ("Author")
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019 Chain Zhang
|
||||
Copyright (c) 2016 mozillazg
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,27 +0,0 @@
|
||||
Copyright © 2011-2012, Paul Vorbach.
|
||||
Copyright © 2009, Jeff Mott.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
* Neither the name Crypto-JS nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+2459
-276
File diff suppressed because it is too large
Load Diff
+1563
-181
File diff suppressed because it is too large
Load Diff
@@ -1,155 +1,177 @@
|
||||
module github.com/apache/incubator-answer
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
go 1.18
|
||||
module github.com/apache/answer
|
||||
|
||||
go 1.23.0
|
||||
|
||||
require (
|
||||
github.com/Chain-Zhang/pinyin v0.1.3
|
||||
github.com/Machiel/slugify v1.0.1
|
||||
github.com/Masterminds/semver/v3 v3.1.1
|
||||
github.com/Masterminds/semver/v3 v3.3.0
|
||||
github.com/anargu/gin-brotli v0.0.0-20220116052358-12bf532d5267
|
||||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
|
||||
github.com/bwmarrin/snowflake v0.3.0
|
||||
github.com/disintegration/imaging v1.6.2
|
||||
github.com/gin-gonic/gin v1.9.1
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
github.com/go-playground/locales v0.14.1
|
||||
github.com/go-playground/universal-translator v0.18.1
|
||||
github.com/go-playground/validator/v10 v10.14.0
|
||||
github.com/go-sql-driver/mysql v1.6.0
|
||||
github.com/goccy/go-json v0.10.2
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/google/uuid v1.3.0
|
||||
github.com/go-playground/validator/v10 v10.22.1
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/goccy/go-json v0.10.3
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/google/wire v0.5.0
|
||||
github.com/grokify/html-strip-tags-go v0.0.1
|
||||
github.com/jinzhu/copier v0.3.5
|
||||
github.com/grokify/html-strip-tags-go v0.1.0
|
||||
github.com/jinzhu/copier v0.4.0
|
||||
github.com/jinzhu/now v1.1.5
|
||||
github.com/lib/pq v1.10.7
|
||||
github.com/microcosm-cc/bluemonday v1.0.21
|
||||
github.com/mojocn/base64Captcha v1.3.5
|
||||
github.com/ory/dockertest/v3 v3.10.0
|
||||
github.com/lib/pq v1.10.9
|
||||
github.com/microcosm-cc/bluemonday v1.0.27
|
||||
github.com/mozillazg/go-pinyin v0.20.0
|
||||
github.com/ory/dockertest/v3 v3.11.0
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/scottleedavis/go-exif-remove v0.0.0-20230314195146-7e059d593405
|
||||
github.com/segmentfault/pacman v1.0.5-0.20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/cache/memory v0.0.0-20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/conf/viper v0.0.0-20221018072427-a15dd1434e05
|
||||
github.com/segmentfault/pacman/contrib/i18n v0.0.0-20230516093754-b76aef1c1150
|
||||
github.com/segmentfault/pacman/contrib/log/zap v0.0.0-20221018072427-a15dd1434e05
|
||||
github.com/segmentfault/pacman/contrib/server/http v0.0.0-20221018072427-a15dd1434e05
|
||||
github.com/spf13/cobra v1.6.1
|
||||
github.com/stretchr/testify v1.8.4
|
||||
github.com/swaggo/files v1.0.0
|
||||
github.com/swaggo/gin-swagger v1.5.3
|
||||
github.com/swaggo/swag v1.16.1
|
||||
github.com/tidwall/gjson v1.14.4
|
||||
github.com/yuin/goldmark v1.4.13
|
||||
golang.org/x/crypto v0.13.0
|
||||
golang.org/x/image v0.1.0
|
||||
golang.org/x/net v0.15.0
|
||||
github.com/segmentfault/pacman/contrib/conf/viper v0.0.0-20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/i18n v0.0.0-20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/log/zap v0.0.0-20230822083413-c0075a2d401f
|
||||
github.com/segmentfault/pacman/contrib/server/http v0.0.0-20230822083413-c0075a2d401f
|
||||
github.com/spf13/cobra v1.8.1
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/swaggo/files v1.0.1
|
||||
github.com/swaggo/gin-swagger v1.6.0
|
||||
github.com/swaggo/swag v1.16.3
|
||||
github.com/tidwall/gjson v1.17.3
|
||||
github.com/yuin/goldmark v1.7.4
|
||||
go.uber.org/mock v0.5.0
|
||||
golang.org/x/crypto v0.36.0
|
||||
golang.org/x/image v0.20.0
|
||||
golang.org/x/net v0.38.0
|
||||
golang.org/x/text v0.23.0
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
modernc.org/sqlite v1.24.0
|
||||
xorm.io/builder v0.3.12
|
||||
modernc.org/sqlite v1.33.0
|
||||
xorm.io/builder v0.3.13
|
||||
xorm.io/xorm v1.3.2
|
||||
)
|
||||
|
||||
require (
|
||||
dario.cat/mergo v1.0.1 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
|
||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||
github.com/LinkinStars/go-i18n/v2 v2.2.2 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
|
||||
github.com/andybalholm/brotli v1.0.4 // indirect
|
||||
github.com/andybalholm/brotli v1.1.0 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/bytedance/sonic v1.9.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
||||
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
|
||||
github.com/containerd/continuity v0.4.2 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/docker/cli v24.0.6+incompatible // indirect
|
||||
github.com/docker/docker v24.0.6+incompatible // indirect
|
||||
github.com/docker/go-connections v0.4.0 // indirect
|
||||
github.com/bytedance/sonic v1.12.2 // indirect
|
||||
github.com/bytedance/sonic/loader v0.2.0 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/cloudwego/base64x v0.1.4 // indirect
|
||||
github.com/cloudwego/iasm v0.2.0 // indirect
|
||||
github.com/containerd/continuity v0.4.3 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/docker/cli v27.2.1+incompatible // indirect
|
||||
github.com/docker/docker v27.2.1+incompatible // indirect
|
||||
github.com/docker/go-connections v0.5.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/dsoprea/go-exif v0.0.0-20190901173045-3ce78807c90f // indirect
|
||||
github.com/dsoprea/go-jpeg-image-structure v0.0.0-20190422055009-d6f9ba25cf48 // indirect
|
||||
github.com/dsoprea/go-logging v0.0.0-20190624164917-c4f10aab7696 // indirect
|
||||
github.com/dsoprea/go-png-image-structure v0.0.0-20190624104353-c9b28dcdc5c8 // indirect
|
||||
github.com/dsoprea/go-exif v0.0.0-20230826092837-6579e82b732d // indirect
|
||||
github.com/dsoprea/go-exif/v2 v2.0.0-20230826092837-6579e82b732d // indirect
|
||||
github.com/dsoprea/go-iptc v0.0.0-20200610044640-bc9ca208b413 // indirect
|
||||
github.com/dsoprea/go-jpeg-image-structure v0.0.0-20221012074422-4f3f7e934102 // indirect
|
||||
github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect
|
||||
github.com/dsoprea/go-photoshop-info-format v0.0.0-20200610045659-121dd752914d // indirect
|
||||
github.com/dsoprea/go-png-image-structure v0.0.0-20210512210324-29b889a6093d // indirect
|
||||
github.com/dsoprea/go-utility v0.0.0-20221003172846-a3e1774ef349 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.5 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-errors/errors v1.0.1 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.20.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||
github.com/go-openapi/spec v0.20.9 // indirect
|
||||
github.com/go-openapi/swag v0.22.4 // indirect
|
||||
github.com/go-errors/errors v1.5.1 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
||||
github.com/go-openapi/spec v0.21.0 // indirect
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.1.0 // indirect
|
||||
github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||
github.com/golang/geo v0.0.0-20190812012225-f41920e961ce // indirect
|
||||
github.com/golang/geo v0.0.0-20230421003525-6adc56603217 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
|
||||
github.com/gorilla/css v1.0.0 // indirect
|
||||
github.com/gorilla/css v1.0.1 // indirect
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/imdario/mergo v0.3.16 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.0.1 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
|
||||
github.com/leodido/go-urn v1.2.4 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect
|
||||
github.com/lestrrat-go/strftime v1.0.6 // indirect
|
||||
github.com/magiconair/properties v1.8.6 // indirect
|
||||
github.com/lestrrat-go/strftime v1.1.0 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/moby/docker-image-spec v1.3.1 // indirect
|
||||
github.com/moby/term v0.5.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/ncruces/go-strftime v0.1.9 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.0.2 // indirect
|
||||
github.com/opencontainers/runc v1.1.9 // indirect
|
||||
github.com/opencontainers/image-spec v1.1.0 // indirect
|
||||
github.com/opencontainers/runc v1.1.14 // indirect
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
||||
github.com/pelletier/go-toml v1.9.5 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/sagikazarmark/locafero v0.6.0 // indirect
|
||||
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/spf13/afero v1.9.2 // indirect
|
||||
github.com/spf13/cast v1.5.0 // indirect
|
||||
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/spf13/afero v1.11.0 // indirect
|
||||
github.com/spf13/cast v1.7.0 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/spf13/viper v1.13.0 // indirect
|
||||
github.com/subosito/gotenv v1.4.1 // indirect
|
||||
github.com/spf13/viper v1.19.0 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/syndtr/goleveldb v1.0.0 // indirect
|
||||
github.com/tidwall/match v1.1.1 // indirect
|
||||
github.com/tidwall/pretty v1.2.0 // indirect
|
||||
github.com/tidwall/pretty v1.2.1 // indirect
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||
github.com/ugorji/go/codec v1.2.11 // indirect
|
||||
github.com/ugorji/go/codec v1.2.12 // indirect
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
|
||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
|
||||
go.uber.org/atomic v1.10.0 // indirect
|
||||
go.uber.org/multierr v1.8.0 // indirect
|
||||
go.uber.org/zap v1.23.0 // indirect
|
||||
golang.org/x/arch v0.3.0 // indirect
|
||||
golang.org/x/mod v0.12.0 // indirect
|
||||
golang.org/x/sys v0.12.0 // indirect
|
||||
golang.org/x/text v0.13.0 // indirect
|
||||
golang.org/x/tools v0.13.0 // indirect
|
||||
google.golang.org/protobuf v1.30.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/arch v0.10.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
golang.org/x/tools v0.25.0 // indirect
|
||||
google.golang.org/protobuf v1.34.2 // indirect
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
lukechampine.com/uint128 v1.2.0 // indirect
|
||||
modernc.org/cc/v3 v3.40.0 // indirect
|
||||
modernc.org/ccgo/v3 v3.16.13 // indirect
|
||||
modernc.org/libc v1.22.5 // indirect
|
||||
modernc.org/mathutil v1.5.0 // indirect
|
||||
modernc.org/memory v1.5.0 // indirect
|
||||
modernc.org/opt v0.1.3 // indirect
|
||||
modernc.org/strutil v1.1.3 // indirect
|
||||
modernc.org/token v1.0.1 // indirect
|
||||
sigs.k8s.io/yaml v1.3.0 // indirect
|
||||
modernc.org/gc/v3 v3.0.0-20240801135723-a856999a2e4a // indirect
|
||||
modernc.org/mathutil v1.6.0 // indirect
|
||||
modernc.org/memory v1.8.0 // indirect
|
||||
modernc.org/strutil v1.2.0 // indirect
|
||||
modernc.org/token v1.1.0 // indirect
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
replace lukechampine.com/uint128 v1.1.1 => github.com/aichy126/uint128 v1.1.1
|
||||
|
||||
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+814
-248
File diff suppressed because it is too large
Load Diff
+647
-81
File diff suppressed because it is too large
Load Diff
+1692
-1126
File diff suppressed because it is too large
Load Diff
+784
-218
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+619
-88
File diff suppressed because it is too large
Load Diff
+992
-451
File diff suppressed because it is too large
Load Diff
+713
-147
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+907
-341
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+2341
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+15
-12
@@ -22,40 +22,43 @@ language_options:
|
||||
progress: 100
|
||||
- label: "Español"
|
||||
value: "es_ES"
|
||||
progress: 64
|
||||
progress: 96
|
||||
- label: "Português(BR)"
|
||||
value: "pt_BR"
|
||||
progress: 12
|
||||
progress: 96
|
||||
- label: "Português"
|
||||
value: "pt_PT"
|
||||
progress: 12
|
||||
progress: 96
|
||||
- label: "Deutsch"
|
||||
value: "de_DE"
|
||||
progress: 69
|
||||
progress: 96
|
||||
- label: "Français"
|
||||
value: "fr_FR"
|
||||
progress: 70
|
||||
progress: 96
|
||||
- label: "日本語"
|
||||
value: "ja_JP"
|
||||
progress: 12
|
||||
progress: 96
|
||||
- label: "Italiano"
|
||||
value: "it_IT"
|
||||
progress: 9
|
||||
progress: 96
|
||||
- label: "Русский"
|
||||
value: "ru_RU"
|
||||
progress: 20
|
||||
progress: 80
|
||||
- label: "简体中文"
|
||||
value: "zh_CN"
|
||||
progress: 100
|
||||
- label: "繁體中文"
|
||||
value: "zh_TW"
|
||||
progress: 64
|
||||
progress: 47
|
||||
- label: "한국어"
|
||||
value: "ko_KR"
|
||||
progress: 0
|
||||
progress: 73
|
||||
- label: "Tiếng Việt"
|
||||
value: "vi_VN"
|
||||
progress: 0
|
||||
progress: 96
|
||||
- label: "Slovak"
|
||||
value: "sk_SK"
|
||||
progress: 62
|
||||
progress: 45
|
||||
- label: "فارسی"
|
||||
value: "fa_IR"
|
||||
progress: 69
|
||||
|
||||
+675
-109
File diff suppressed because it is too large
Load Diff
+1698
-1132
File diff suppressed because it is too large
Load Diff
+1533
-966
File diff suppressed because it is too large
Load Diff
+1783
-1217
File diff suppressed because it is too large
Load Diff
+2341
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+18
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,8 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
recommend: Recommend
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +903,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +968,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1021,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1137,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1383,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+824
-258
File diff suppressed because it is too large
Load Diff
+6
-8
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: Arquivo não pode ser vazio.
|
||||
only_image: Somente um arquivo de imagem é permitido.
|
||||
max_size: O tamanho do arquivo não pode exceder 4MB.
|
||||
max_size: O tamanho do arquivo não pode exceder 4 MB.
|
||||
desc:
|
||||
label: Descrição (opcional)
|
||||
tab_url: URL da imagem
|
||||
@@ -824,7 +824,7 @@ ui:
|
||||
via: Compartilhar postagem via...
|
||||
copied: Copiado
|
||||
facebook: Compartilhar no Facebook
|
||||
twitter: Compartilhar no Twitter
|
||||
twitter: Compartilhar no X
|
||||
cannot_vote_for_self: Você não pode votar na sua própria postagem
|
||||
modal_confirm:
|
||||
title: Erro...
|
||||
@@ -855,7 +855,7 @@ ui:
|
||||
answers: Respostas
|
||||
newest: Mais recente
|
||||
active: Ativo
|
||||
frequent: Frequente
|
||||
hot: Hot
|
||||
score: Pontuação
|
||||
unanswered: Não Respondido
|
||||
modified: modificado
|
||||
@@ -899,7 +899,7 @@ ui:
|
||||
x_answers: respostas
|
||||
x_questions: perguntas
|
||||
install:
|
||||
title: Resposta
|
||||
title: Instalação
|
||||
next: Proximo
|
||||
done: Completo
|
||||
config_yaml_error: Não é possível criar o arquivo config.yaml.
|
||||
@@ -1017,7 +1017,7 @@ ui:
|
||||
title: Administrador
|
||||
dashboard:
|
||||
title: Painel
|
||||
welcome: Bem vindo ao Answer Administrador!
|
||||
welcome: Bem vindo ao Administrador!
|
||||
site_statistics: Estatísticas do Site
|
||||
questions: "Perguntas:"
|
||||
answers: "Respostas:"
|
||||
@@ -1133,7 +1133,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Nome de exibição
|
||||
msg: Nome de exibição deve ser 4-30 caracteres em comprimento.
|
||||
msg: Nome de exibição deve ser 2-30 caracteres em comprimento.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email não é válido.
|
||||
@@ -1379,5 +1379,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
Votos: Votos
|
||||
|
||||
|
||||
|
||||
+681
-115
File diff suppressed because it is too large
Load Diff
+1905
-947
File diff suppressed because it is too large
Load Diff
+1430
-864
File diff suppressed because it is too large
Load Diff
+647
-81
File diff suppressed because it is too large
Load Diff
+15
-14
@@ -355,7 +355,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -428,7 +428,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -466,7 +466,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -612,7 +612,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -708,7 +709,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -803,7 +806,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -816,7 +819,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -847,7 +850,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -891,7 +894,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -956,7 +959,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1004,7 +1007,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1120,7 +1123,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: display_name must be at 4 - 30 characters in length.
|
||||
msg: display_name must be at 2 - 30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1366,5 +1369,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+17
-16
@@ -360,7 +360,7 @@ ui:
|
||||
msg:
|
||||
empty: File cannot be empty.
|
||||
only_image: Only image files are allowed.
|
||||
max_size: File size cannot exceed 4MB.
|
||||
max_size: File size cannot exceed 4 MB.
|
||||
desc:
|
||||
label: Description (optional)
|
||||
tab_url: Image URL
|
||||
@@ -433,7 +433,7 @@ ui:
|
||||
range: Display name up to 35 characters.
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
desc: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
desc: URL slug up to 35 characters.
|
||||
msg:
|
||||
empty: URL slug cannot be empty.
|
||||
range: URL slug up to 35 characters.
|
||||
@@ -471,7 +471,7 @@ ui:
|
||||
label: Display Name
|
||||
slug_name:
|
||||
label: URL Slug
|
||||
info: 'Must use the character set "a-z", "0-9", "+ # - ."'
|
||||
info: URL slug up to 35 characters.
|
||||
desc:
|
||||
label: Description
|
||||
edit_summary:
|
||||
@@ -619,7 +619,8 @@ ui:
|
||||
label: Name
|
||||
msg:
|
||||
empty: Name cannot be empty.
|
||||
range: Name up to 30 characters.
|
||||
range: Name must be between 2 to 30 characters in length.
|
||||
character: 'Must use the character set "a-z", "A-Z", "0-9", " - . _"'
|
||||
email:
|
||||
label: Email
|
||||
msg:
|
||||
@@ -677,12 +678,12 @@ ui:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display name cannot be empty.
|
||||
msg_range: Display name up to 30 characters.
|
||||
msg_range: Display name must be 2-30 characters in length.
|
||||
username:
|
||||
label: Username
|
||||
caption: People can mention you as "@username".
|
||||
msg: Username cannot be empty.
|
||||
msg_range: Username up to 30 characters.
|
||||
msg_range: Username must be 2-30 characters in length.
|
||||
character: 'Must use the character set "a-z", "0-9", " - . _"'
|
||||
avatar:
|
||||
label: Profile Image
|
||||
@@ -715,7 +716,9 @@ ui:
|
||||
We've sent an email to that address. Please follow the confirmation instructions.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email cannot be empty.
|
||||
new_email:
|
||||
label: New email
|
||||
msg: New email cannot be empty.
|
||||
password_title: Password
|
||||
current_pass:
|
||||
label: Current Password
|
||||
@@ -811,7 +814,7 @@ ui:
|
||||
more: More
|
||||
tips:
|
||||
title: Advanced Search Tips
|
||||
tag: "<1>[tag]</1> search withing a tag"
|
||||
tag: "<1>[tag]</1> search with a tag"
|
||||
user: "<1>user:username</1> search by author"
|
||||
answer: "<1>answers:0</1> unanswered questions"
|
||||
score: "<1>score:3</1> posts with a 3+ score"
|
||||
@@ -824,7 +827,7 @@ ui:
|
||||
via: Share post via...
|
||||
copied: Copied
|
||||
facebook: Share to Facebook
|
||||
twitter: Share to Twitter
|
||||
twitter: Share to X
|
||||
cannot_vote_for_self: You can't vote for your own post
|
||||
modal_confirm:
|
||||
title: Error...
|
||||
@@ -855,7 +858,7 @@ ui:
|
||||
answers: Answers
|
||||
newest: Newest
|
||||
active: Active
|
||||
frequent: Frequent
|
||||
hot: Hot
|
||||
score: Score
|
||||
unanswered: Unanswered
|
||||
modified: modified
|
||||
@@ -899,7 +902,7 @@ ui:
|
||||
x_answers: answers
|
||||
x_questions: questions
|
||||
install:
|
||||
title: Answer
|
||||
title: Installation
|
||||
next: Next
|
||||
done: Done
|
||||
config_yaml_error: Can't create the config.yaml file.
|
||||
@@ -964,7 +967,7 @@ ui:
|
||||
msg:
|
||||
empty: Email cannot be empty.
|
||||
incorrect: Email incorrect format.
|
||||
ready_title: Your Answer is Ready!
|
||||
ready_title: Your site is ready
|
||||
ready_desc: >-
|
||||
If you ever feel like changing more settings, visit <1>admin section</1>; find it in the site menu.
|
||||
good_luck: "Have fun, and good luck!"
|
||||
@@ -1017,7 +1020,7 @@ ui:
|
||||
title: Admin
|
||||
dashboard:
|
||||
title: Dashboard
|
||||
welcome: Welcome to Answer Admin!
|
||||
welcome: Welcome to Admin!
|
||||
site_statistics: Site Statistics
|
||||
questions: "Questions:"
|
||||
answers: "Answers:"
|
||||
@@ -1133,7 +1136,7 @@ ui:
|
||||
fields:
|
||||
display_name:
|
||||
label: Display Name
|
||||
msg: Display Name must be at 4-30 characters in length.
|
||||
msg: Display name must be 2-30 characters in length.
|
||||
email:
|
||||
label: Email
|
||||
msg: Email is not valid.
|
||||
@@ -1379,5 +1382,3 @@ ui:
|
||||
staffs: Our community staff
|
||||
reputation: reputation
|
||||
votes: votes
|
||||
|
||||
|
||||
|
||||
+1360
-402
File diff suppressed because it is too large
Load Diff
+2341
File diff suppressed because it is too large
Load Diff
+1698
-1132
File diff suppressed because it is too large
Load Diff
+1781
-1215
File diff suppressed because it is too large
Load Diff
+1752
-1186
File diff suppressed because it is too large
Load Diff
+777
-216
File diff suppressed because it is too large
Load Diff
+701
-135
File diff suppressed because it is too large
Load Diff
@@ -21,15 +21,16 @@ package conf
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/apache/incubator-answer/internal/base/data"
|
||||
"github.com/apache/incubator-answer/internal/base/server"
|
||||
"github.com/apache/incubator-answer/internal/base/translator"
|
||||
"github.com/apache/incubator-answer/internal/cli"
|
||||
"github.com/apache/incubator-answer/internal/router"
|
||||
"github.com/apache/incubator-answer/internal/service/service_config"
|
||||
"github.com/apache/incubator-answer/pkg/writer"
|
||||
"github.com/apache/answer/internal/base/data"
|
||||
"github.com/apache/answer/internal/base/server"
|
||||
"github.com/apache/answer/internal/base/translator"
|
||||
"github.com/apache/answer/internal/cli"
|
||||
"github.com/apache/answer/internal/router"
|
||||
"github.com/apache/answer/internal/service/service_config"
|
||||
"github.com/apache/answer/pkg/writer"
|
||||
"github.com/segmentfault/pacman/contrib/conf/viper"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
@@ -42,6 +43,21 @@ type AllConfig struct {
|
||||
I18n *translator.I18n `json:"i18n" mapstructure:"i18n" yaml:"i18n"`
|
||||
ServiceConfig *service_config.ServiceConfig `json:"service_config" mapstructure:"service_config" yaml:"service_config"`
|
||||
Swaggerui *router.SwaggerConfig `json:"swaggerui" mapstructure:"swaggerui" yaml:"swaggerui"`
|
||||
UI *server.UI `json:"ui" mapstructure:"ui" yaml:"ui"`
|
||||
}
|
||||
|
||||
type envConfigOverrides struct {
|
||||
SwaggerHost string
|
||||
SwaggerAddressPort string
|
||||
SiteAddr string
|
||||
}
|
||||
|
||||
func loadEnvs() (envOverrides *envConfigOverrides) {
|
||||
return &envConfigOverrides{
|
||||
SwaggerHost: os.Getenv("SWAGGER_HOST"),
|
||||
SwaggerAddressPort: os.Getenv("SWAGGER_ADDRESS_PORT"),
|
||||
SiteAddr: os.Getenv("SITE_ADDR"),
|
||||
}
|
||||
}
|
||||
|
||||
type PathIgnore struct {
|
||||
@@ -59,6 +75,26 @@ type Data struct {
|
||||
Cache *data.CacheConf `json:"cache" mapstructure:"cache" yaml:"cache"`
|
||||
}
|
||||
|
||||
// SetDefault set default config
|
||||
func (c *AllConfig) SetDefault() {
|
||||
if c.UI == nil {
|
||||
c.UI = &server.UI{}
|
||||
}
|
||||
}
|
||||
|
||||
func (c *AllConfig) SetEnvironmentOverrides() {
|
||||
envs := loadEnvs()
|
||||
if envs.SiteAddr != "" {
|
||||
c.Server.HTTP.Addr = envs.SiteAddr
|
||||
}
|
||||
if envs.SwaggerHost != "" {
|
||||
c.Swaggerui.Host = envs.SwaggerHost
|
||||
}
|
||||
if envs.SwaggerAddressPort != "" {
|
||||
c.Swaggerui.Address = envs.SwaggerAddressPort
|
||||
}
|
||||
}
|
||||
|
||||
// ReadConfig read config
|
||||
func ReadConfig(configFilePath string) (c *AllConfig, err error) {
|
||||
if len(configFilePath) == 0 {
|
||||
@@ -72,6 +108,8 @@ func ReadConfig(configFilePath string) (c *AllConfig, err error) {
|
||||
if err = config.Parse(&c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
c.SetDefault()
|
||||
c.SetEnvironmentOverrides()
|
||||
return c, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,9 @@ const (
|
||||
AdminTokenCacheKey = "answer:admin:token:"
|
||||
AdminTokenCacheTime = 7 * 24 * time.Hour
|
||||
UserTokenMappingCacheKey = "answer:user-token:mapping:"
|
||||
UserEmailCodeCacheKey = "answer:user:email-code:"
|
||||
UserEmailCodeCacheTime = 10 * time.Minute
|
||||
UserLatestEmailCodeCacheKey = "answer:user-id:email-code:"
|
||||
SiteInfoCacheKey = "answer:site-info:"
|
||||
SiteInfoCacheTime = 1 * time.Hour
|
||||
ConfigID2KEYCacheKeyPrefix = "answer:config:id:"
|
||||
@@ -47,4 +50,6 @@ const (
|
||||
NewQuestionNotificationLimitMax = 50
|
||||
RateLimitCacheKeyPrefix = "answer:rate-limit:"
|
||||
RateLimitCacheTime = 5 * time.Minute
|
||||
RedDotCacheKey = "answer:red-dot:%s:%s"
|
||||
RedDotCacheTime = 30 * 24 * time.Hour
|
||||
)
|
||||
|
||||
@@ -29,3 +29,43 @@ var (
|
||||
Revision = ""
|
||||
GoVersion = ""
|
||||
)
|
||||
|
||||
var Timezones = []string{
|
||||
// Americas
|
||||
"America/New_York",
|
||||
"America/Chicago",
|
||||
"America/Los_Angeles",
|
||||
"America/Toronto",
|
||||
"America/Vancouver",
|
||||
"America/Mexico_City",
|
||||
"America/Sao_Paulo",
|
||||
"America/Buenos_Aires",
|
||||
|
||||
// Europe
|
||||
"Europe/London",
|
||||
"Europe/Paris",
|
||||
"Europe/Berlin",
|
||||
"Europe/Madrid",
|
||||
"Europe/Rome",
|
||||
"Europe/Moscow",
|
||||
|
||||
// Asia
|
||||
"Asia/Shanghai",
|
||||
"Asia/Tokyo",
|
||||
"Asia/Singapore",
|
||||
"Asia/Dubai",
|
||||
"Asia/Hong_Kong",
|
||||
"Asia/Seoul",
|
||||
"Asia/Bangkok",
|
||||
"Asia/Kolkata",
|
||||
|
||||
// Pacific
|
||||
"Australia/Sydney",
|
||||
"Australia/Melbourne",
|
||||
"Pacific/Auckland",
|
||||
|
||||
// Africa
|
||||
"Africa/Cairo",
|
||||
"Africa/Johannesburg",
|
||||
"Africa/Lagos",
|
||||
}
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package constant
|
||||
|
||||
// EventType event type. It is used to define the type of event. Such as object.action
|
||||
type EventType string
|
||||
|
||||
// event object
|
||||
const (
|
||||
eventQuestion = "question"
|
||||
eventAnswer = "answer"
|
||||
eventComment = "comment"
|
||||
eventUser = "user"
|
||||
)
|
||||
|
||||
// event action
|
||||
const (
|
||||
eventCreate = "create"
|
||||
eventUpdate = "update"
|
||||
eventDelete = "delete"
|
||||
eventVote = "vote"
|
||||
eventAccept = "accept" // only question have the accept event
|
||||
eventShare = "share" // the object share link has been clicked
|
||||
eventFlag = "flag"
|
||||
eventReact = "react"
|
||||
)
|
||||
|
||||
const (
|
||||
EventUserUpdate EventType = eventUser + "." + eventUpdate
|
||||
EventUserShare EventType = eventUser + "." + eventShare
|
||||
)
|
||||
|
||||
const (
|
||||
EventQuestionCreate EventType = eventQuestion + "." + eventCreate
|
||||
EventQuestionUpdate EventType = eventQuestion + "." + eventUpdate
|
||||
EventQuestionDelete EventType = eventQuestion + "." + eventDelete
|
||||
EventQuestionVote EventType = eventQuestion + "." + eventVote
|
||||
EventQuestionAccept EventType = eventQuestion + "." + eventAccept
|
||||
EventQuestionFlag EventType = eventQuestion + "." + eventFlag
|
||||
EventQuestionReact EventType = eventQuestion + "." + eventReact
|
||||
)
|
||||
|
||||
const (
|
||||
EventAnswerCreate EventType = eventAnswer + "." + eventCreate
|
||||
EventAnswerUpdate EventType = eventAnswer + "." + eventUpdate
|
||||
EventAnswerDelete EventType = eventAnswer + "." + eventDelete
|
||||
EventAnswerVote EventType = eventAnswer + "." + eventVote
|
||||
EventAnswerFlag EventType = eventAnswer + "." + eventFlag
|
||||
EventAnswerReact EventType = eventAnswer + "." + eventReact
|
||||
)
|
||||
|
||||
const (
|
||||
EventCommentCreate EventType = eventComment + "." + eventCreate
|
||||
EventCommentUpdate EventType = eventComment + "." + eventUpdate
|
||||
EventCommentDelete EventType = eventComment + "." + eventDelete
|
||||
EventCommentVote EventType = eventComment + "." + eventVote
|
||||
EventCommentFlag EventType = eventComment + "." + eventFlag
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user