Compare commits
664 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 005b7131c5 | |||
| 9c0a59bab5 | |||
| 3ebcba310c | |||
| 39627d39c2 | |||
| 1a4621ded1 | |||
| 60be85b5d1 | |||
| 8ba1abbfb4 | |||
| 8fddaa38c9 | |||
| b385800942 | |||
| b00bdf5204 | |||
| bd081a202c | |||
| e7cb4ac963 | |||
| ec6affaa59 | |||
| ccafa46c8b | |||
| 31336eb2f7 | |||
| e37387581c | |||
| b89a7fae88 | |||
| cf246e7db4 | |||
| 4578afff9c | |||
| a19a1b3c49 | |||
| 7cb51d3b56 | |||
| 1fd2280fc7 | |||
| 0114b9e804 | |||
| 5dcb684380 | |||
| 6a143473c8 | |||
| 5f149a596a | |||
| 55f9f73da1 | |||
| 94ec7f5f8d | |||
| 6d2b7de290 | |||
| 87275c7757 | |||
| accf28a355 | |||
| 2160d9f3ea | |||
| e7d2bf97a5 | |||
| 4ae337f827 | |||
| 3eaa45ddcc | |||
| 554c7a1a8f | |||
| 9b8d182d21 | |||
| 363ab6a63e | |||
| 971a4b5d4c | |||
| e00fe47b9f | |||
| aae839de65 | |||
| 488e5b1694 | |||
| eff3648f60 | |||
| 8e0d6e57a9 | |||
| cae8773a0f | |||
| cbe3b25edb | |||
| 1b66cbece1 | |||
| 78fa15aeef | |||
| bf43636918 | |||
| aa28a3f2ec | |||
| e070cbb023 | |||
| d1f94e84d6 | |||
| a2a23a68ee | |||
| 9345e0dd84 | |||
| 5b39016db4 | |||
| 908d358670 | |||
| d17b4742a8 | |||
| 680ee05047 | |||
| 83128646f1 | |||
| 9df60c7956 | |||
| 35e2407f1d | |||
| 71992dcb18 | |||
| f882f6b551 | |||
| 8e640faf3a | |||
| 5a8278d9e6 | |||
| 12098383cc | |||
| b92831943d | |||
| 8b48a8f560 | |||
| ef6e26cb30 | |||
| f582521f12 | |||
| f8d819fbd0 | |||
| e8e24cbe6c | |||
| 0d5f56b465 | |||
| c1257761f1 | |||
| ed3d970322 | |||
| 31a37d4f19 | |||
| f94c8b8c18 | |||
| c163ac6620 | |||
| d4addbf511 | |||
| e20c49dab6 | |||
| 7f9b28f2c1 | |||
| c6acbb4e8b | |||
| aa3e4637b5 | |||
| 0130314102 | |||
| 36aa4e8aea | |||
| 4439adaf27 | |||
| 8beb496719 | |||
| 9bd8bffc0c | |||
| 1450cb2c82 | |||
| 8a7c8c3a65 | |||
| 7ef9cbd64a | |||
| d856793db0 | |||
| 8cd410539e | |||
| 9664a3b8cd | |||
| 9bb7860146 | |||
| 7af233cf8c | |||
| c141f48c46 | |||
| 1203ebab9a | |||
| 4951e1dd0c | |||
| 08c798a45d | |||
| ccdfccc891 | |||
| d9a409606f | |||
| 027eaa4b2c | |||
| fadc9872b7 | |||
| a4e658df39 | |||
| d9163c29f3 | |||
| a3a53075d8 | |||
| f5c39b70d8 | |||
| aab023b86c | |||
| ec0a29cd52 | |||
| fe26682644 | |||
| 2fef88c5a6 | |||
| 2b18334162 | |||
| cac5afd85f | |||
| 96ce579adc | |||
| e2437c51b5 | |||
| dca1945e87 | |||
| 898266f0dc | |||
| f5f5dffd86 | |||
| 9828ae4b3f | |||
| c58f16899b | |||
| 6c0d61c9a8 | |||
| 94aa8f9306 | |||
| fd8e3f7301 | |||
| 80052995d5 | |||
| 26869c1a93 | |||
| 505e2b35b0 | |||
| 3ab41be506 | |||
| 4ed979df5f | |||
| 6c1680addc | |||
| db6b6d832e | |||
| 05b9503400 | |||
| 1e017ea69f | |||
| e912db00a8 | |||
| 4648f63431 | |||
| d3f585c329 | |||
| 8bd3ea08eb | |||
| d727ade11d | |||
| 8f2759de21 | |||
| 699691f910 | |||
| 88613ded7f | |||
| 2aed501f7f | |||
| af5d08d97f | |||
| c53acac91e | |||
| 3a83912300 | |||
| b54faa994b | |||
| 2d59027064 | |||
| 85a860a369 | |||
| aa408deef9 | |||
| f052f0e59a | |||
| 36c43bad53 | |||
| 60680cb28c | |||
| d5b2d94f78 | |||
| b818e24e28 | |||
| fdc157fe97 | |||
| fd3f090280 | |||
| 39004c2b7b | |||
| d45ecadba7 | |||
| 511487e961 | |||
| f07323d6c0 | |||
| acb67a84c2 | |||
| cb9d0b9c7c | |||
| 1b663a875a | |||
| f24f3b1bb9 | |||
| 7c86d79374 | |||
| 3b3780f532 | |||
| 579f50bc9b | |||
| aa95ac6bc8 | |||
| a951858000 | |||
| 0d8617a1f0 | |||
| 2b36716b18 | |||
| d0ad124505 | |||
| cf73db11b5 | |||
| 22ca4c5654 | |||
| 8ba36692bf | |||
| 01d12ec74e | |||
| efad504707 | |||
| b706ba41e0 | |||
| 65971f16d1 | |||
| 1179462f4e | |||
| 9c00957da0 | |||
| b88acd51d2 | |||
| 499eba593e | |||
| a110bdb10f | |||
| aee10f0281 | |||
| 7e92ef37e3 | |||
| cd78b90daf | |||
| 38f8f2837e | |||
| 1acc045e0c | |||
| a5de6b3713 | |||
| 4b8094abc1 | |||
| 127f764ee5 | |||
| 24f94eeffc | |||
| 236d16e57b | |||
| 755ca52e48 | |||
| 0010c874c4 | |||
| a03173caee | |||
| 7a94a58543 | |||
| 6ebaef54f0 | |||
| fc18c0506a | |||
| 35200de653 | |||
| c2f3127d24 | |||
| 9464d71d75 | |||
| 9cd2ef6e8a | |||
| 9b22ecd1c0 | |||
| 4bc0eb546c | |||
| f9a14e5c54 | |||
| c51ae5f8ee | |||
| 0c03e7c384 | |||
| bf9be4b2c8 | |||
| 12e006c1f5 | |||
| 152e2e361d | |||
| b66d536fc1 | |||
| 78f40de835 | |||
| dd36bed3e0 | |||
| 61a71c6f69 | |||
| 1fa95c3a4c | |||
| 5200baa966 | |||
| ee4d57660d | |||
| d32fc2d771 | |||
| cf63a16935 | |||
| c120578735 | |||
| af44b5e573 | |||
| f19ba49c60 | |||
| b74ad0c457 | |||
| d774cbe546 | |||
| 9987424496 | |||
| 1820dc2fbe | |||
| 0b965a4344 | |||
| b7780a71fd | |||
| d9824ca9f4 | |||
| 98e94de18f | |||
| 3285f5e585 | |||
| bbfc5bbf30 | |||
| 1384bf5066 | |||
| e17bc565b7 | |||
| 54f8ec8be0 | |||
| 36a8f22dc3 | |||
| 2ef8483b6d | |||
| 696ee349ea | |||
| 83fa9a1f54 | |||
| 4c3f9bd489 | |||
| 3415933bd8 | |||
| 75f9587915 | |||
| f8e25419e5 | |||
| 60ff1de286 | |||
| a0bd774ca5 | |||
| bb1db1ef5b | |||
| 5102458c3f | |||
| 300953c3ef | |||
| 0e999ab3b4 | |||
| 2a29d7a4ff | |||
| bdbdd27e47 | |||
| 8614497f91 | |||
| 4a156bb9d1 | |||
| 5bda7f84b5 | |||
| 7affaeb906 | |||
| 1f87d1aff1 | |||
| 3f16fae206 | |||
| 550983bd02 | |||
| 91aa1bb045 | |||
| 95c815fcd2 | |||
| ce4d5185fa | |||
| 81b1ce4db0 | |||
| 5bbf8eda23 | |||
| afeb3f3eec | |||
| aef1def9be | |||
| 38470ef317 | |||
| a580785da8 | |||
| 70817a61e4 | |||
| 4457323878 | |||
| e40abfbbfe | |||
| 57fc56b5f3 | |||
| e23c67b0fd | |||
| 1911fd5d9f | |||
| 3350d62b75 | |||
| eedf9a6b8a | |||
| b858550e66 | |||
| b4bbd4a70f | |||
| 0d3b333210 | |||
| 47b1b67b4c | |||
| 814ca88398 | |||
| decd956683 | |||
| bca6c78d24 | |||
| 4e10c8b8f6 | |||
| 2843ced28b | |||
| 2b9fcac462 | |||
| 0fd92a2851 | |||
| 85692194d5 | |||
| 7f327ab5ab | |||
| e6780b164f | |||
| 950ce22118 | |||
| 882b34b01e | |||
| 3b40e85c42 | |||
| 4390526c27 | |||
| fb943f0c8a | |||
| e6fd925650 | |||
| 19b8359600 | |||
| 22bba7c46a | |||
| c27dee56ac | |||
| 67fb58b4ee | |||
| 821663e397 | |||
| bb3d257eef | |||
| 66f1ca36fc | |||
| 2a9a1b8a4d | |||
| f56e05fde0 | |||
| aa51fe1095 | |||
| 47a1fbe248 | |||
| a0760ca489 | |||
| 458a90c5a1 | |||
| 640f12706f | |||
| d97aba0ca5 | |||
| f9980de6fc | |||
| d32f5c1280 | |||
| a047983ebb | |||
| 693067e6cf | |||
| ea5b7585f9 | |||
| ba66805ece | |||
| d948687caa | |||
| dce584e7f3 | |||
| f4a7991562 | |||
| 9e5bb2b241 | |||
| 18379cd1f6 | |||
| 5e76f5e020 | |||
| 3b59de7e33 | |||
| c74fe461b2 | |||
| f450603fdd | |||
| 9a4dd056c4 | |||
| b995862723 | |||
| fa206d550f | |||
| 4e3ace33d1 | |||
| 8e205c6854 | |||
| 6b9b12e0c0 | |||
| 6707df6470 | |||
| e9036a0cad | |||
| fad03d639e | |||
| fa1a9a5cc6 | |||
| c4964f710b | |||
| f628c21f08 | |||
| e51da34aa9 | |||
| 369ec64709 | |||
| 188857c691 | |||
| d60d903e75 | |||
| 6a7399808f | |||
| 1a6e3e8b08 | |||
| b720c9616d | |||
| f85ee56a01 | |||
| 04c2247b0d | |||
| 5fe8f5a254 | |||
| 6c5c14fc69 | |||
| 8dc74d9b52 | |||
| 6e3648cc2f | |||
| e66e33f12c | |||
| f152228f4c | |||
| 346d8452c8 | |||
| 36701a2865 | |||
| 9154c5d8f4 | |||
| 5ac6cacd90 | |||
| 780b97d7b1 | |||
| 3fc5039054 | |||
| c21e055c36 | |||
| 171062fed3 | |||
| 486fdcb34f | |||
| c3c642740f | |||
| b7c217290f | |||
| c47f214cf3 | |||
| 709f9231e9 | |||
| a042ffafac | |||
| cccf4b6073 | |||
| cd4cc15ac9 | |||
| 71f4877816 | |||
| b0842228f0 | |||
| 5da3d5616c | |||
| 8ec7faa26d | |||
| 411e400705 | |||
| 19d15938e3 | |||
| 30b54d3853 | |||
| 7748faf362 | |||
| acc2291f9e | |||
| 6cdf398a41 | |||
| 066db75c14 | |||
| b314da9a25 | |||
| a83b3dd736 | |||
| 049f7f9af1 | |||
| a96cf5d01c | |||
| f829ddfea5 | |||
| 6890933e4a | |||
| 5ea5d7fa52 | |||
| e15792a6aa | |||
| b2eecfb946 | |||
| c02381243c | |||
| e1809dbaf6 | |||
| ab6a34b0e2 | |||
| 96bb4672c3 | |||
| 0dae2b8296 | |||
| 59c27e0fb4 | |||
| 3bdca9beb4 | |||
| eba656c748 | |||
| fc0e6f2b11 | |||
| 9bc3a9cddd | |||
| 565d7b2b12 | |||
| 5755d16b6e | |||
| da83c854f0 | |||
| 6004eb5edf | |||
| edffde2f28 | |||
| fccafd915b | |||
| 63a2e36816 | |||
| f72db4ea07 | |||
| 163d92109b | |||
| b5a7408193 | |||
| a581b8b20f | |||
| c1b2d2549c | |||
| ff638bd331 | |||
| e84c58a13f | |||
| 21adfe77d2 | |||
| 66f11f461f | |||
| 7b2d3a933c | |||
| a091b3f588 | |||
| e1bb567a8c | |||
| 3cd0770e32 | |||
| 96be3a4a7d | |||
| ac3c323144 | |||
| 16c057e076 | |||
| 9aff749ea5 | |||
| 5ad07552b6 | |||
| 1d6d756f73 | |||
| 06428bb75f | |||
| 676ae6d87b | |||
| 152952be68 | |||
| 741392b8a8 | |||
| 42f2ae6326 | |||
| 506dbdfca5 | |||
| 5275a71c40 | |||
| c9ac47a593 | |||
| 36d9328afc | |||
| dde7c8b8fc | |||
| 703b6d1803 | |||
| 73b8518f2f | |||
| 30518ec1be | |||
| 76dde0f1e6 | |||
| a57f153ad7 | |||
| b2d9a3a08d | |||
| 92b1c865d3 | |||
| d4ab933e61 | |||
| 900b646447 | |||
| 61dbfb996f | |||
| e3434fecfe | |||
| 8f71705c2e | |||
| 64a6bfd2b5 | |||
| d68d41f3c6 | |||
| 22d43d0d82 | |||
| 5641e4c103 | |||
| 583dd64458 | |||
| 00d6bdc86d | |||
| c8cb8f5bbd | |||
| d7aadcb5df | |||
| 3447381186 | |||
| febfa83e5f | |||
| 17219162de | |||
| 0c813ce231 | |||
| c4154e5374 | |||
| 7b0c27fcc4 | |||
| 2f03557290 | |||
| 0d03452822 | |||
| 824205f860 | |||
| 4fcad83a06 | |||
| 0b9b91fc60 | |||
| 0c2dc0158f | |||
| e3c52022a8 | |||
| 6b53de48dc | |||
| be4d758981 | |||
| eaad2d2c5b | |||
| 94d483caf8 | |||
| cd393d9275 | |||
| abb6026e24 | |||
| 5a50445bd5 | |||
| db3209a4d9 | |||
| a354b07773 | |||
| 3a754b68c7 | |||
| 4ab6452679 | |||
| 0110fe001d | |||
| 1095d22e48 | |||
| 070e874fe1 | |||
| ad64a24081 | |||
| 71b18939dc | |||
| 279bdc574e | |||
| dfecc6eb0f | |||
| 774d9b7643 | |||
| 5424e00e4b | |||
| 2f99ee4fe5 | |||
| 7b76c7788f | |||
| 86289d70f4 | |||
| 8cea444f4e | |||
| b08861c603 | |||
| d732a7b32f | |||
| 9f550fa33d | |||
| 3de6e3fbc8 | |||
| a68fbcfa53 | |||
| b688de07f8 | |||
| da99c8f456 | |||
| 75858264ba | |||
| 6d6e5c1b37 | |||
| e5035494a7 | |||
| 7fb5092a39 | |||
| 046c72c84a | |||
| 7d9f190079 | |||
| 6d711fbde2 | |||
| 44ab8dde33 | |||
| c89058bc49 | |||
| 5814e636fb | |||
| ffb73fa012 | |||
| c247ef87fa | |||
| 40bffcda3b | |||
| af1077637d | |||
| abe65fd70f | |||
| 304cf28f4a | |||
| 6073704ace | |||
| bc1c247a13 | |||
| eef80b0d30 | |||
| 3a5ba033d5 | |||
| 6fd0734944 | |||
| 9a461d31e4 | |||
| ee05b1b6d6 | |||
| af7616743e | |||
| 0cd61b01fd | |||
| fe0e567bbc | |||
| 1c370506e4 | |||
| b61bb83680 | |||
| 01816a2ba2 | |||
| 3f3bcbeb47 | |||
| b71cf0b903 | |||
| 07257762e2 | |||
| 5a177b42df | |||
| 24be4e5add | |||
| efe8384f5c | |||
| 044db63190 | |||
| 5fc440b98a | |||
| 99b26d6916 | |||
| ee1e7d9726 | |||
| daf14861e4 | |||
| cbcdcda436 | |||
| 4e9e85816d | |||
| 997c307251 | |||
| e627c7942e | |||
| 54ad29c3ed | |||
| 7573ba9a4d | |||
| 0dc31ee2fe | |||
| 24eb04f724 | |||
| e1b59ad7f0 | |||
| 73750f0c1e | |||
| ad95e308ba | |||
| 937a1b2b93 | |||
| 019e72040a | |||
| 6d0e167c4d | |||
| 2a0460d885 | |||
| 7d2bb6c028 | |||
| dbec295647 | |||
| a2be470dce | |||
| 0aca631216 | |||
| d935bdfd6a | |||
| 25ef9909f0 | |||
| e1642400f5 | |||
| 2b4ac38a08 | |||
| eb12cac973 | |||
| 86b822dd52 | |||
| 79932c6d98 | |||
| 6209b40647 | |||
| 8f04555e22 | |||
| d3d18b1abc | |||
| 4035bcf26a | |||
| 74e54da304 | |||
| 70be8a309f | |||
| 74a33b0e56 | |||
| ea6917d18a | |||
| a399905aff | |||
| aba6b938f9 | |||
| 84e69f4931 | |||
| ab87fc7d3a | |||
| 234d9d8a58 | |||
| c2f5fd44c5 | |||
| 06036df9f7 | |||
| 462fc21b06 | |||
| 7a2ef950b3 | |||
| a4d9d9f845 | |||
| 7164178cd3 | |||
| 0f3adb856f | |||
| a2b5a2f109 | |||
| f3d58eebfc | |||
| 0ea4274c8d | |||
| b0cecfb92a | |||
| cddf111dbb | |||
| 1cf1119b0b | |||
| 394751a985 | |||
| 26d98e9772 | |||
| 7ddbaf649f | |||
| 9c5dcb4cbf | |||
| dbf5c266c7 | |||
| 7010f42986 | |||
| 530f313dff | |||
| f4e68ca36a | |||
| 4408507fc7 | |||
| 68a92f8186 | |||
| 541474d5ec | |||
| cf84a1128d | |||
| 490101a3a1 | |||
| 7cbc348780 | |||
| 331750a3b7 | |||
| ca811d3079 | |||
| 37efd1d001 | |||
| 4dd5efd464 | |||
| 9ca706b046 | |||
| 970a9c2382 | |||
| be9df999fc | |||
| 96feb6f05b | |||
| be9e72084d | |||
| 38c7902795 | |||
| 36066e1382 | |||
| e3a35506c4 | |||
| 99b78345a0 | |||
| 206eb29331 | |||
| 8ee2009de3 | |||
| ab0fc36a5f | |||
| 0cdece9bd4 | |||
| f8870a07b4 | |||
| 01bff3bc24 | |||
| 6bd1b03288 | |||
| 90d436e1e0 | |||
| bd835f9ecc | |||
| 0d868a9843 | |||
| ab84f785d3 | |||
| 063c2db084 | |||
| 68f0d107f5 | |||
| 1d04317fbc | |||
| dc3aee5acc | |||
| 2729c0417d | |||
| c4c8296495 | |||
| 0eb374fe12 | |||
| 8165c08cc5 | |||
| 614a22cf32 | |||
| 6f20f60f5c | |||
| 8ac5398f4e | |||
| ba46cfed3a | |||
| c8da73667b | |||
| a50643ebc9 | |||
| 718edf7828 | |||
| 71144522c9 | |||
| 9f052e44c8 | |||
| cc03a1df0b | |||
| a470b4917c | |||
| 4a0ca37cb3 | |||
| a4cbdfdc1f | |||
| b6f5e13b32 | |||
| da3cfb8710 | |||
| b0abb583c9 | |||
| f2ed3e726a | |||
| 2ff3e87f74 | |||
| f4ffa94e7f | |||
| a1ce7ac872 | |||
| f7b62abcce | |||
| baac1ad489 | |||
| 7b00b943ee | |||
| 02493563a2 | |||
| ee80cea2bd | |||
| 06bfe1139b |
@@ -1,12 +0,0 @@
|
||||
codecov:
|
||||
branch: master
|
||||
|
||||
coverage:
|
||||
precision: 2
|
||||
round: down
|
||||
range: "70...100"
|
||||
status:
|
||||
project: off
|
||||
patch: off
|
||||
|
||||
comment: off
|
||||
-699
@@ -1,699 +0,0 @@
|
||||
clone:
|
||||
git:
|
||||
image: plugins/git
|
||||
depth: 1
|
||||
|
||||
pipeline:
|
||||
jsunit:
|
||||
image: nextcloudci/jsunit:jsunit-5
|
||||
commands:
|
||||
- ./autotest-js.sh
|
||||
- curl -o codecov.sh https://codecov.io/bash
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: jsunit
|
||||
checkers:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- ./autotest-checkers.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: checkers
|
||||
syntax-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- composer install
|
||||
- ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php5.6
|
||||
syntax-php7.0:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- composer install
|
||||
- ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.0
|
||||
syntax-php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-15
|
||||
commands:
|
||||
- composer install
|
||||
- ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.1
|
||||
litmus-v1:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/litmus-v1/script.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: litmus-v1
|
||||
litmus-v2:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/litmus-v2/script.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: litmus-v2
|
||||
caldavtester-new-endpoint:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/caldav/install.sh
|
||||
- bash apps/dav/tests/travis/caldav/script-new-endpoint.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: caldavtester-new-endpoint
|
||||
caldavtester-old-endpoint:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/caldav/install.sh
|
||||
- bash apps/dav/tests/travis/caldav/script-old-endpoint.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: caldavtester-old-endpoint
|
||||
carddavtester-new-endpoint:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/carddav/install.sh
|
||||
- bash apps/dav/tests/travis/carddav/script-new-endpoint.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: carddavtester-new-endpoint
|
||||
carddavtester-old-endpoint:
|
||||
image: nextcloudci/litmus-php7.0:litmus-php7.0-6
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/carddav/install.sh
|
||||
- bash apps/dav/tests/travis/carddav/script-old-endpoint.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: carddavtester-old-endpoint
|
||||
sqlite-php7.0-samba-native:
|
||||
image: nextcloudci/samba-native-php7.0:samba-native-php7.0-3
|
||||
commands:
|
||||
- smbd -D -FS &
|
||||
- ./autotest-external.sh sqlite smb-linux
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: sqlite-php7.0-samba-native
|
||||
sqlite-php7.0-samba-non-native:
|
||||
image: nextcloudci/samba-non-native-php7.0:samba-non-native-php7.0-4
|
||||
commands:
|
||||
- smbd -D -FS &
|
||||
- ./autotest-external.sh sqlite smb-linux
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: sqlite-php7.0-samba-non-native
|
||||
sqlite-php7.0-webdav-apache:
|
||||
image: nextcloudci/webdav-apache-php7.0
|
||||
commands:
|
||||
- apache2
|
||||
- ./autotest-external.sh sqlite webdav-apachedrone
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-webdav-apachedrone.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-webdav-apachedrone.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: sqlite-php7.0-webdav-apache
|
||||
nodb-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: NODB
|
||||
PHP: 5.6
|
||||
nodb-php7.0:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: NODB
|
||||
PHP: "7.0"
|
||||
nodb-php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-15
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: NODB
|
||||
PHP: 7.1
|
||||
sqlite-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: sqlite
|
||||
PHP: 5.6
|
||||
sqlite-php7.0:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: sqlite
|
||||
PHP: "7.0"
|
||||
sqlite-php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-15
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
|
||||
when:
|
||||
matrix:
|
||||
DB: sqlite
|
||||
PHP: 7.1
|
||||
|
||||
mysql-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
|
||||
when:
|
||||
matrix:
|
||||
DB: mysql
|
||||
PHP: 5.6
|
||||
postgres-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- sleep 10 # gives the database enough time to initialize
|
||||
- POSTGRES=${POSTGRES} NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
|
||||
when:
|
||||
matrix:
|
||||
DB: postgres
|
||||
PHP: 5.6
|
||||
mysqlmb4-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
commands:
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysqlmb4
|
||||
when:
|
||||
matrix:
|
||||
DB: mysqlmb4
|
||||
PHP: 5.6
|
||||
integration-capabilities_features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh capabilities_features/capabilities.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-capabilities_features
|
||||
integration-federation_features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh federation_features/federated.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-federation_features
|
||||
integration-auth:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/auth.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-auth
|
||||
integration-maintenance-mode:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/maintenance-mode.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-maintenance-mode
|
||||
integration-ratelimiting:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- ./occ config:system:set redis host --value=cache
|
||||
- ./occ config:system:set redis port --value=6379 --type=integer
|
||||
- ./occ config:system:set redis timeout --value=0 --type=integer
|
||||
- ./occ config:system:set --type string --value "\\OC\\Memcache\\Redis" memcache.local
|
||||
- ./occ config:system:set --type string --value "\\OC\\Memcache\\Redis" memcache.distributed
|
||||
- ./occ app:enable testing
|
||||
- cd build/integration
|
||||
- ./run.sh features/ratelimiting.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-ratelimiting
|
||||
integration-carddav:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/carddav.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-carddav
|
||||
integration-dav-v2:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/dav-v2.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-dav-v2
|
||||
integration-ocs-v1:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/ocs-v1.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-ocs-v1
|
||||
integration-sharing-v1:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/sharing-v1.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-sharing-v1
|
||||
integration-sharing-v1-part2:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/sharing-v1-part2.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-sharing-v1-part2
|
||||
integration-sharing-v1-part3:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/sharing-v1-part3.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-sharing-v1-part3
|
||||
integration-checksums-v1:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/checksums.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-checksums
|
||||
integration-external-storage:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/external-storage.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-external-storage
|
||||
integration-provisioning-v1:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/provisioning-v1.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-provisioning-v1
|
||||
integration-tags:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/tags.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-tags
|
||||
integration-caldav:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/caldav.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-caldav
|
||||
integration-comments:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/comments.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-comments
|
||||
integration-favorites:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/favorites.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-favorites
|
||||
integration-provisioning-v2:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/provisioning-v2.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-provisioning-v2
|
||||
integration-webdav-related:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/webdav-related.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-webdav-related
|
||||
integration-sharees-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh sharees_features/sharees.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-sharees-features
|
||||
integration-sharees-v2-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh sharees_features/sharees_provisioningapiv2.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-sharees-v2-features
|
||||
integration-setup-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- cd build/integration
|
||||
- ./run.sh setup_features/setup.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-setup-features
|
||||
integration-filesdrop-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh filesdrop_features/filesdrop.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-filesdrop-features
|
||||
integration-transfer-ownership-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/transfer-ownership.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-transfer-ownership-features
|
||||
integration-ldap-features:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- ./occ app:enable user_ldap
|
||||
- cd build/integration
|
||||
- ./run.sh ldap_features/ldap-ocs.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-ldap-features
|
||||
integration-trashbin:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
- cd build/integration
|
||||
- ./run.sh features/trashbin.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration-trashbin
|
||||
acceptance-access-levels:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS-ACCEPTANCE: access-levels
|
||||
acceptance-app-files:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files --selenium-server selenium:4444 allow-git-repository-modifications features/app-files.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS-ACCEPTANCE: app-files
|
||||
acceptance-app-theming:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-theming --selenium-server selenium:4444 allow-git-repository-modifications features/app-theming.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS-ACCEPTANCE: app-theming
|
||||
acceptance-login:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-login --selenium-server selenium:4444 allow-git-repository-modifications features/login.feature
|
||||
when:
|
||||
matrix:
|
||||
TESTS-ACCEPTANCE: login
|
||||
nodb-codecov:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- TEST_SELECTION=NODB ./autotest.sh sqlite
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: nodb-codecov
|
||||
db-codecov:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- TEST_SELECTION=QUICKDB ./autotest.sh sqlite
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: db-codecov
|
||||
object-store:
|
||||
image: nextcloudci/php7.0:php7.0-16
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- TEST_SELECTION=PRIMARY-${OBJECT_STORE} ./autotest.sh sqlite
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TESTS: object-store
|
||||
memcache-memcached:
|
||||
image: nextcloudci/php7.0-memcached:php7.0-memcached-8
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- service memcached restart
|
||||
- ./autotest.sh sqlite tests/lib/Memcache/MemcachedTest.php
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TEST: memcache-memcached
|
||||
memcache-redis-cluster:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- sleep 20
|
||||
- ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
|
||||
- wget https://codecov.io/bash -O codecov.sh
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
|
||||
when:
|
||||
matrix:
|
||||
TEST: memcache-redis-cluster
|
||||
matrix:
|
||||
include:
|
||||
- TESTS: checkers
|
||||
- TESTS: nodb-codecov
|
||||
ENABLE_REDIS: true
|
||||
- TESTS: db-codecov
|
||||
ENABLE_REDIS: true
|
||||
- TESTS: integration-capabilities_features
|
||||
- TESTS: integration-federation_features
|
||||
- TESTS: integration-maintenance-mode
|
||||
- TESTS: integration-ratelimiting
|
||||
ENABLE_REDIS: true
|
||||
- TESTS: integration-auth
|
||||
- TESTS: integration-carddav
|
||||
- TESTS: integration-dav-v2
|
||||
- TESTS: integration-ocs-v1
|
||||
- TESTS: integration-sharing-v1
|
||||
- TESTS: integration-sharing-v1-part2
|
||||
- TESTS: integration-sharing-v1-part3
|
||||
- TESTS: integration-checksums
|
||||
- TESTS: integration-external-storage
|
||||
- TESTS: integration-provisioning-v1
|
||||
- TESTS: integration-tags
|
||||
- TESTS: integration-caldav
|
||||
- TESTS: integration-comments
|
||||
- TESTS: integration-favorites
|
||||
- TESTS: integration-provisioning-v2
|
||||
- TESTS: integration-webdav-related
|
||||
- TESTS: integration-sharees-features
|
||||
- TESTS: integration-sharees-v2-features
|
||||
- TESTS: integration-setup-features
|
||||
- TESTS: integration-filesdrop-features
|
||||
- TESTS: integration-transfer-ownership-features
|
||||
- TESTS: integration-ldap-features
|
||||
- TESTS: integration-trashbin
|
||||
- TESTS: acceptance
|
||||
TESTS-ACCEPTANCE: access-levels
|
||||
- TESTS: acceptance
|
||||
TESTS-ACCEPTANCE: app-files
|
||||
- TESTS: acceptance
|
||||
TESTS-ACCEPTANCE: app-theming
|
||||
- TESTS: acceptance
|
||||
TESTS-ACCEPTANCE: login
|
||||
- TESTS: jsunit
|
||||
- TESTS: syntax-php5.6
|
||||
- TESTS: syntax-php7.0
|
||||
- TESTS: syntax-php7.1
|
||||
- TESTS: litmus-v1
|
||||
- TESTS: litmus-v2
|
||||
- TESTS: caldavtester-old-endpoint
|
||||
- TESTS: caldavtester-new-endpoint
|
||||
- TESTS: carddavtester-new-endpoint
|
||||
- TESTS: carddavtester-old-endpoint
|
||||
- TESTS: object-store
|
||||
OBJECT_STORE: s3
|
||||
- TESTS: sqlite-php7.0-samba-native
|
||||
- TESTS: sqlite-php7.0-samba-non-native
|
||||
- TEST: memcache-memcached
|
||||
- TEST: memcache-redis-cluster
|
||||
ENABLE_REDIS_CLUSTER: true
|
||||
- TESTS: sqlite-php7.0-webdav-apache
|
||||
ENABLE_REDIS: true
|
||||
- DB: NODB
|
||||
PHP: 5.6
|
||||
ENABLE_REDIS: true
|
||||
- DB: NODB
|
||||
PHP: 7.0
|
||||
ENABLE_REDIS: true
|
||||
- DB: NODB
|
||||
PHP: 7.1
|
||||
ENABLE_REDIS: true
|
||||
- DB: sqlite
|
||||
PHP: 5.6
|
||||
ENABLE_REDIS: true
|
||||
- DB: sqlite
|
||||
PHP: 7.0
|
||||
ENABLE_REDIS: true
|
||||
- DB: sqlite
|
||||
PHP: 7.1
|
||||
ENABLE_REDIS: true
|
||||
- DB: mysql
|
||||
PHP: 5.6
|
||||
ENABLE_REDIS: true
|
||||
- DB: postgres
|
||||
PHP: 5.6
|
||||
ENABLE_REDIS: true
|
||||
- DB: mysqlmb4
|
||||
PHP: 5.6
|
||||
ENABLE_REDIS: true
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: redis
|
||||
when:
|
||||
matrix:
|
||||
ENABLE_REDIS: true
|
||||
cache-cluster:
|
||||
image: morrisjobke/redis-cluster
|
||||
when:
|
||||
matrix:
|
||||
ENABLE_REDIS_CLUSTER: true
|
||||
postgres:
|
||||
image: postgres:9
|
||||
environment:
|
||||
- POSTGRES_USER=oc_autotest
|
||||
- POSTGRES_DB=oc_autotest_dummy
|
||||
- POSTGRES_PASSWORD=owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
when:
|
||||
matrix:
|
||||
DB: postgres
|
||||
mysql:
|
||||
image: mysql:5.7.22
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=owncloud
|
||||
- MYSQL_USER=oc_autotest
|
||||
- MYSQL_PASSWORD=owncloud
|
||||
- MYSQL_DATABASE=oc_autotest
|
||||
tmpfs:
|
||||
- /var/lib/mysql
|
||||
when:
|
||||
matrix:
|
||||
DB: mysql
|
||||
mysqlmb4:
|
||||
image: mysql:5.7.22
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=owncloud
|
||||
- MYSQL_USER=oc_autotest
|
||||
- MYSQL_PASSWORD=owncloud
|
||||
- MYSQL_DATABASE=oc_autotest
|
||||
command: [ "--innodb_large_prefix=true", "--innodb_file_format=barracuda", "--innodb_file_per_table=true" ]
|
||||
tmpfs:
|
||||
- /var/lib/mysql
|
||||
when:
|
||||
matrix:
|
||||
DB: mysqlmb4
|
||||
fake-s3:
|
||||
image: lphoward/fake-s3
|
||||
when:
|
||||
matrix:
|
||||
OBJECT_STORE: s3
|
||||
selenium:
|
||||
image: selenium/standalone-firefox:2.53.1-beryllium
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
- JAVA_OPTS=-Dselenium.LOGGER.level=WARNING
|
||||
when:
|
||||
matrix:
|
||||
TESTS: acceptance
|
||||
|
||||
branches: [ master, stable* ]
|
||||
+7
-28
@@ -3,38 +3,23 @@
|
||||
/owncloud
|
||||
/config/config.php
|
||||
/config/*.config.php
|
||||
/config/mimetype*.json
|
||||
/config/mount.php
|
||||
/apps/inc.php
|
||||
/assets
|
||||
/.htaccess
|
||||
/translationfiles
|
||||
/translationtool.phar
|
||||
|
||||
# ignore all apps except core ones
|
||||
/apps*/*
|
||||
!/apps/comments
|
||||
!/apps/dav
|
||||
!/apps/files
|
||||
!/apps/federation
|
||||
!/apps/federatedfilesharing
|
||||
!/apps/sharebymail
|
||||
!/apps/files_encryption
|
||||
!/apps/encryption
|
||||
!/apps/encryption_dummy
|
||||
!/apps/files_external
|
||||
!/apps/files_sharing
|
||||
!/apps/files_trashbin
|
||||
!/apps/files_versions
|
||||
!/apps/lookup_server_connector
|
||||
!/apps/user_ldap
|
||||
!/apps/oauth2
|
||||
!/apps/provisioning_api
|
||||
!/apps/systemtags
|
||||
!/apps/testing
|
||||
!/apps/admin_audit
|
||||
!/apps/updatenotification
|
||||
!/apps/theming
|
||||
!/apps/twofactor_backupcodes
|
||||
!/apps/workflowengine
|
||||
!/apps/user_webdavauth
|
||||
!apps/provisioning_api
|
||||
/apps/files_external/3rdparty/irodsphp/PHPUnitTest
|
||||
/apps/files_external/3rdparty/irodsphp/web
|
||||
/apps/files_external/3rdparty/irodsphp/prods/test
|
||||
@@ -43,6 +28,7 @@
|
||||
/apps/files_external/tests/config.*.php
|
||||
|
||||
|
||||
|
||||
# ignore themes except the example and the README
|
||||
/themes/*
|
||||
!/themes/example
|
||||
@@ -76,7 +62,7 @@ RCS/*
|
||||
.project
|
||||
.settings
|
||||
|
||||
# netbeans
|
||||
# netbeans
|
||||
nbproject
|
||||
|
||||
# phpStorm
|
||||
@@ -92,10 +78,7 @@ nbproject
|
||||
|
||||
# vim ex mode
|
||||
.vimrc
|
||||
|
||||
# ack(-grep)
|
||||
.ackrc
|
||||
|
||||
|
||||
# Mac OS
|
||||
.DS_Store
|
||||
|
||||
@@ -110,11 +93,9 @@ nbproject
|
||||
/build/node_modules/
|
||||
|
||||
# nodejs
|
||||
/build/bin
|
||||
/build/lib/
|
||||
/build/jsdocs/
|
||||
/npm-debug.log
|
||||
/PhantomJS_*
|
||||
|
||||
# puphpet
|
||||
puphpet
|
||||
@@ -126,7 +107,6 @@ Vagrantfile
|
||||
# Tests - auto-generated files
|
||||
/data-autotest
|
||||
/tests/coverage*
|
||||
/tests/css
|
||||
/tests/karma-coverage
|
||||
/tests/autoconfig*
|
||||
/tests/autotest*
|
||||
@@ -134,4 +114,3 @@ Vagrantfile
|
||||
/tests/data/testimage-copy.png
|
||||
/config/config-autotest-backup.php
|
||||
/config/autoconfig.php
|
||||
clover.xml
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
[submodule "3rdparty"]
|
||||
path = 3rdparty
|
||||
url = https://github.com/nextcloud/3rdparty.git
|
||||
url = https://github.com/owncloud/3rdparty.git
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
# Version: 8.2.9
|
||||
<IfModule mod_headers.c>
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_fcgid.c>
|
||||
<IfModule mod_fcgid.c>
|
||||
<IfModule mod_setenvif.c>
|
||||
SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
|
||||
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
|
||||
</IfModule>
|
||||
<IfModule mod_proxy_fcgi.c>
|
||||
SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_env.c>
|
||||
@@ -14,24 +12,18 @@
|
||||
Header set X-Content-Type-Options "nosniff"
|
||||
Header set X-XSS-Protection "1; mode=block"
|
||||
Header set X-Robots-Tag "none"
|
||||
Header set X-Download-Options "noopen"
|
||||
Header set X-Permitted-Cross-Domain-Policies "none"
|
||||
Header set X-Frame-Options "SAMEORIGIN"
|
||||
SetEnv modHeadersAvailable true
|
||||
</IfModule>
|
||||
|
||||
# Add cache control for static resources
|
||||
<FilesMatch "\.(css|js|svg|gif)$">
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</FilesMatch>
|
||||
|
||||
# Let browsers cache WOFF files for a week
|
||||
<FilesMatch "\.woff$">
|
||||
Header set Cache-Control "max-age=604800"
|
||||
# Add cache control for CSS and JS files
|
||||
<FilesMatch "\.(css|js)$">
|
||||
Header set Cache-Control "max-age=7200, public"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
<IfModule mod_php5.c>
|
||||
php_value upload_max_filesize 511M
|
||||
php_value post_max_size 511M
|
||||
php_value upload_max_filesize 513M
|
||||
php_value post_max_size 513M
|
||||
php_value memory_limit 512M
|
||||
php_value mbstring.func_overload 0
|
||||
php_value always_populate_raw_post_data -1
|
||||
@@ -41,30 +33,18 @@
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
<IfModule mod_php7.c>
|
||||
php_value upload_max_filesize 511M
|
||||
php_value post_max_size 511M
|
||||
php_value memory_limit 512M
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
php_value output_buffering 0
|
||||
<IfModule mod_env.c>
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTP_USER_AGENT} DavClnt
|
||||
RewriteRule ^$ /remote.php/webdav/ [L,R=302]
|
||||
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
|
||||
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
|
||||
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
|
||||
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
|
||||
RewriteRule ^\.well-known/carddav /remote.php/carddav/ [R=301,L]
|
||||
RewriteRule ^\.well-known/caldav /remote.php/caldav/ [R=301,L]
|
||||
RewriteRule ^apps/calendar/caldav\.php remote.php/caldav/ [QSA,L]
|
||||
RewriteRule ^apps/contacts/carddav\.php remote.php/carddav/ [QSA,L]
|
||||
RewriteRule ^remote/(.*) remote.php [QSA,L]
|
||||
RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
|
||||
RewriteCond %{REQUEST_URI} !^/.well-known/(acme-challenge|pki-validation)/.*
|
||||
RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
|
||||
RewriteRule ^(build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
|
||||
RewriteRule ^(\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
|
||||
</IfModule>
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/svg+xml svg svgz
|
||||
|
||||
@@ -16,8 +16,8 @@ Andreas Schönebeck <aschoenebeck@web.de>
|
||||
Andreas Ergenzinger <andreas.ergenzinger@gmx.de> AndreasErgenzinger <andreas.ergenzinger@gmx.de>
|
||||
Andrew Brown <andrew@casabrown.com>
|
||||
André Gaul <gaul@web-yard.de>
|
||||
Arthur Schiwon <blizzz@arthur-schiwon.de> Arthur Schiwon <blizzz@owncloud.com>
|
||||
Arthur Schiwon <blizzz@arthur-schiwon.de> blizzz <blizzz@owncloud.com>
|
||||
Arthur Schiwon <blizzz@owncloud.com> Arthur Schiwon <blizzz@arthur-schiwon.de>
|
||||
Arthur Schiwon <blizzz@owncloud.com> blizzz <blizzz@owncloud.com>
|
||||
Artur Duque de Souza <asouza@kde.org>
|
||||
Axel Roenn <axel@mpim-bonn.mpg.de>
|
||||
Bagera <victor@baquero-wihlborg.se>
|
||||
@@ -30,16 +30,14 @@ Benjamin Diele <benjamin@diele.be>
|
||||
Benjamin Liles <benliles@arch.tamu.edu>
|
||||
Bernhard Posselt <dev@bernhard-posselt.com> Bernhard Posselt <nukeawhale@gmail.com>
|
||||
Bernhard Posselt <dev@bernhard-posselt.com> Bernhard Posselt <Raydiation@users.noreply.github.com>
|
||||
Bernhard Posselt <dev@bernhard-posselt.com> Bernhard Posselt <BernhardPosselt@users.noreply.github.com>
|
||||
Bernhard Reiter <ockham@raz.or.at>
|
||||
Birk Borkason <daniel.niccoli@gmail.com>
|
||||
Björn Schießle <bjoern@schiessle.org> Bjoern Schiessle <schiesbn@woody.(none)>
|
||||
Björn Schießle <bjoern@schiessle.org> Björn Schießle <schiessle@owncloud.com>
|
||||
Björn Schießle <bjoern@schiessle.org> Björn Schießle <schiesbn@potato.(none)>
|
||||
Björn Schießle <bjoern@schiessle.org> Björn Schiessle <schiessle@owncloud.com>
|
||||
Björn Schießle <bjoern@schiessle.org> Bjoern Schießle <schiessle@owncloud.com>
|
||||
Björn Schießle <bjoern@schiessle.org> Bjoern Schiessle <schiessle@owncloud.com>
|
||||
Björn Schießle <bjoern@schiessle.org> Björn Schießle <schiessle@owncloud.com>
|
||||
Björn Schießle <schiessle@owncloud.com> Bjoern Schiessle <schiesbn@woody.(none)>
|
||||
Björn Schießle <schiessle@owncloud.com> Björn Schießle <bjoern@schiessle.org>
|
||||
Björn Schießle <schiessle@owncloud.com> Björn Schießle <schiesbn@potato.(none)>
|
||||
Björn Schießle <schiessle@owncloud.com> Björn Schiessle <schiessle@owncloud.com>
|
||||
Björn Schießle <schiessle@owncloud.com> Bjoern Schießle <schiessle@owncloud.com>
|
||||
Björn Schießle <schiessle@owncloud.com> Bjoern Schiessle <schiessle@owncloud.com>
|
||||
BlackEagle <ike.devolder@gmail.com>
|
||||
Boris Rybalkin <ribalkin@gmail.com>
|
||||
Borjan Tchakaloff <borjan@tchakaloff.fr>
|
||||
@@ -63,8 +61,6 @@ Christian Berendt <berendt@b1-systems.de>
|
||||
Christian Kampka <christian@kampka.net>
|
||||
Christian Koch <koch.chris@gmail.com>
|
||||
Christian Reiner <github@christian-reiner.info> Christian Reiner <arkascha@balder.site>
|
||||
Christoph Wurst <christoph@owncloud.com> Christoph Wurst <ChristophWurst@users.noreply.github.com>
|
||||
Christoph Wurst <christoph@owncloud.com> Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
Christopher Bunn <b11.chris@gmail.com>
|
||||
Christopher Schäpers <kondou@ts.unde.re> Christopher <kondou@ts.unde.re>
|
||||
Christopher Schäpers <kondou@ts.unde.re> kondou <kondou@ts.unde.re>
|
||||
@@ -127,13 +123,12 @@ Florian Vichot <florian.vichot@gmail.com>
|
||||
Florin Peter <github@florin-peter.de> Florin Peter <fp@datawerk.de>
|
||||
Florin Peter <github@florin-peter.de> FlorinPeter <github@florin-peter.de>
|
||||
Francesco Piraneo G. <fpiraneo@iface.ch>
|
||||
Frank Karlitschek <frank@karlitschek.de> Frank Karlitschek <frank@dev.(none)>
|
||||
Frank Karlitschek <frank@karlitschek.de> Frank Karlitschek <frank@devel.(none)>
|
||||
Frank Karlitschek <frank@karlitschek.de> Frank Karlitschek <frank@oc.(none)>
|
||||
Frank Karlitschek <frank@karlitschek.de> Frank Karlitschek <frank@owncloud.org>
|
||||
Frank Karlitschek <frank@karlitschek.de> Frank Karlitschek <karlitschek@kde.org>
|
||||
Frank Karlitschek <frank@owncloud.org> Frank Karlitschek <frank@dev.(none)>
|
||||
Frank Karlitschek <frank@owncloud.org> Frank Karlitschek <frank@devel.(none)>
|
||||
Frank Karlitschek <frank@owncloud.org> Frank Karlitschek <frank@oc.(none)>
|
||||
Frank Karlitschek <frank@owncloud.org> Frank Karlitschek <karlitschek@gmx.de>
|
||||
Frank Karlitschek <frank@owncloud.org> Frank Karlitschek <karlitschek@kde.org>
|
||||
François Kubler <francois@kubler.org>
|
||||
Frédéric Fortier <frederic.fortier@oronospolytechnique.com> Frédéric Fortier <frederic.fortier@polymtl.ca>
|
||||
Frederik Gladhorn <gladhorn@kde.org>
|
||||
Gadzy <dev@gadzy.fr>
|
||||
ganomi <ganomi@gmail.com>
|
||||
@@ -178,13 +173,12 @@ Jean-Louis Dupond <jean-louis@dupond.be>
|
||||
Jenkins for ownCloud <owncloud-bot@tmit.eu> Jenkins for ownCloud <thomas.mueller@tmit.eu>
|
||||
Jens-Christian Fischer <jens-christian.fischer@switch.ch>
|
||||
Jernej Virag <jernej.virag@gmail.com>
|
||||
Jesus Macias <jmacias@full-on-net.com>
|
||||
Jesus Macias Portela <jesus.macias.portela@gmail.com>
|
||||
Jesús Macias <jmacias@solidgear.es> Jesus Macias <jmacias@full-on-net.com>
|
||||
jknockaert <jasper@knockaert.nl>
|
||||
Joan <aseques@gmail.com>
|
||||
Joar Wandborg <git@wandborg.com>
|
||||
Joas Schilling <coding@schilljs.com> Joas Schilling <nickvergessen@gmx.de>
|
||||
Joas Schilling <coding@schilljs.com> Joas Schilling <nickvergessen@owncloud.com>
|
||||
Joas Schilling <nickvergessen@owncloud.com> Joas Schilling <nickvergessen@gmx.de>
|
||||
joel hansson <joel.hansson@gmail.com>
|
||||
Johan Björk <johanimon@gmail.com>
|
||||
Johannes Twittmann <github.com@deryo.de>
|
||||
@@ -211,8 +205,8 @@ Sebastian Döll <sebastian.doell@libasys.de> libasys <sebastian.doell@libasys.de
|
||||
Lode Hoste <zillode@zillode.be>
|
||||
lolozere <laurent@chedanne.pro>
|
||||
Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
|
||||
Lukas Reschke <lukas@statuscode.ch> Lukas Reschke <lukas@owncloud.com>
|
||||
Lukas Reschke <lukas@statuscode.ch> Lukas Reschke <lukas@owncloud.org>
|
||||
Lukas Reschke <lukas@owncloud.com> Lukas Reschke <lukas@owncloud.org>
|
||||
Lukas Reschke <lukas@owncloud.com> Lukas Reschke <lukas@statuscode.ch>
|
||||
Luke Policinski <lpolicinski@gmail.com>
|
||||
Lyonel Vincent <lyonel@ezix.org>
|
||||
macjohnny <estebanmarin@gmx.ch>
|
||||
@@ -303,18 +297,16 @@ Riccardo Iaconelli <riccardo@kde.org>
|
||||
Richard Clarkson <robert@trash-mail.com>
|
||||
rnveach <rveach02@gmail.com>
|
||||
Robert Jäckel <rjaeckel@users.noreply.github.com>
|
||||
Robin Appelman <robin@icewind.nl> icewind1991 <icewind1991@gmail.com>
|
||||
Robin Appelman <robin@icewind.nl> icewind1991 <robin@icewind.nl>
|
||||
Robin Appelman <robin@icewind.nl> Robin <Robin Appelman icewind1991@gmail.com>
|
||||
Robin Appelman <robin@icewind.nl> Robin <robin@Amaya.(none)>
|
||||
Robin Appelman <robin@icewind.nl> Robin Appelman <icewind1991@gmail.com>
|
||||
Robin Appelman <robin@icewind.nl> Robin Appelman <icewind1991@gmail>
|
||||
Robin Appelman <robin@icewind.nl> Robin Appelman <icewind@owncloud.com>
|
||||
Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@karoshi.org.uk>
|
||||
Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@owncloud.com>
|
||||
Robin Appelman <icewind@owncloud.com> icewind1991 <icewind1991@gmail.com>
|
||||
Robin Appelman <icewind@owncloud.com> icewind1991 <robin@icewind.nl>
|
||||
Robin Appelman <icewind@owncloud.com> Robin <Robin Appelman icewind1991@gmail.com>
|
||||
Robin Appelman <icewind@owncloud.com> Robin <robin@Amaya.(none)>
|
||||
Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail.com>
|
||||
Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail>
|
||||
Robin Appelman <icewind@owncloud.com> Robin Appelman <robin@icewind.nl>
|
||||
Robin McCorkell <rmccorkell@karoshi.org.uk> Robin McCorkell <rmccorkell@owncloud.com>
|
||||
Rodrigo Hjort <rodrigo.hjort@gmail.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl> Roeland Jago Douma <rullzer@owncloud.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl> Roeland Douma <rullzer@users.noreply.github.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl>
|
||||
rok <brejktru@gmail.com>
|
||||
Roland Hager <roland.hager@tu-berlin.de>
|
||||
Roland van Laar <roland@micite.net>
|
||||
@@ -374,7 +366,6 @@ TheSFReader <TheSFReader@gmail.com>
|
||||
Thibaut GRIDEL <tgridel@free.fr>
|
||||
thomas <thomas@thomas-VirtualBox.(none)>
|
||||
Thomas Müller <thomas.mueller@tmit.eu> Thomas Mueller <thomas.mueller@tmit.eu>
|
||||
Thomas Müller <thomas.mueller@tmit.eu> Thomas Müller <DeepDiver1975@users.noreply.github.com>
|
||||
Thomas Olsen <tol@tanghus>
|
||||
Thomas Schmidt <tschmidt@suse.de>
|
||||
Thomas Tanghus <thomas@tanghus.net>
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"maxReviewers": 3,
|
||||
"numFilesToCheck": 5,
|
||||
"alwaysNotifyForPaths": [
|
||||
{
|
||||
"name": "nickvergessen",
|
||||
"files": [
|
||||
"lib/private/Activity/**",
|
||||
"lib/private/Notification/**",
|
||||
"lib/public/Activity/**",
|
||||
"lib/public/Notification/**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Xenopathic",
|
||||
"files": [
|
||||
"apps/files_external/**"
|
||||
]
|
||||
}
|
||||
],
|
||||
"userBlacklist": [
|
||||
"DeepDiver1975",
|
||||
"nextcloud-bot",
|
||||
"owncloud-bot",
|
||||
"PVince81",
|
||||
"scrutinizer-auto-fixer",
|
||||
"th3fallen",
|
||||
"zander",
|
||||
"luckydonald",
|
||||
"jancborchardt"
|
||||
],
|
||||
"createReviewRequest": true,
|
||||
"createComment": false
|
||||
}
|
||||
+1
-8
@@ -1,6 +1,3 @@
|
||||
before_commands:
|
||||
- 'git submodule update --init --recursive'
|
||||
|
||||
filter:
|
||||
excluded_paths:
|
||||
- '3rdparty/*'
|
||||
@@ -9,7 +6,6 @@ filter:
|
||||
- 'l10n/*'
|
||||
- 'core/l10n/*'
|
||||
- 'apps/*/l10n/*'
|
||||
- 'apps/*/tests/*'
|
||||
- 'lib/l10n/*'
|
||||
- 'core/vendor/*'
|
||||
- 'core/js/tests/lib/*.js'
|
||||
@@ -17,10 +13,7 @@ filter:
|
||||
- 'core/js/jquery-showpassword.js'
|
||||
- 'core/js/jquery-tipsy.js'
|
||||
- 'core/js/placeholders.js'
|
||||
- 'settings/l10n/*'
|
||||
- 'tests/*'
|
||||
- 'build/*'
|
||||
- 'lib/composer/*'
|
||||
|
||||
|
||||
imports:
|
||||
- javascript
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
sudo: false
|
||||
language: php
|
||||
php:
|
||||
- 5.4
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- /^stable\d+(\.\d+)?$/
|
||||
|
||||
script:
|
||||
- sh -c "if [ '$TC' = 'syntax' ]; then composer install && vendor/bin/parallel-lint --exclude vendor/jakub-onderka/ --exclude 3rdparty/patchwork/utf8/class/Patchwork/Utf8/Bootup/ --exclude vendor/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .; fi"
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.4
|
||||
env: DB=sqlite;TC=syntax
|
||||
- php: 5.5
|
||||
env: DB=sqlite;TC=syntax
|
||||
- php: 5.6
|
||||
env: DB=sqlite;TC=syntax
|
||||
- php: 7.0
|
||||
env: DB=sqlite;TC=syntax
|
||||
|
||||
fast_finish: true
|
||||
-129
@@ -1,129 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||
|
||||
[nextcloud.core]
|
||||
file_filter = translationfiles/<lang>/core.po
|
||||
source_file = translationfiles/templates/core.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files]
|
||||
file_filter = translationfiles/<lang>/files.po
|
||||
source_file = translationfiles/templates/files.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.settings-1]
|
||||
file_filter = translationfiles/<lang>/settings.po
|
||||
source_file = translationfiles/templates/settings.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.lib]
|
||||
file_filter = translationfiles/<lang>/lib.po
|
||||
source_file = translationfiles/templates/lib.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.dav]
|
||||
file_filter = translationfiles/<lang>/dav.po
|
||||
source_file = translationfiles/templates/dav.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_encryption]
|
||||
file_filter = translationfiles/<lang>/encryption.po
|
||||
source_file = translationfiles/templates/encryption.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_external]
|
||||
file_filter = translationfiles/<lang>/files_external.po
|
||||
source_file = translationfiles/templates/files_external.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_sharing]
|
||||
file_filter = translationfiles/<lang>/files_sharing.po
|
||||
source_file = translationfiles/templates/files_sharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_trashbin]
|
||||
file_filter = translationfiles/<lang>/files_trashbin.po
|
||||
source_file = translationfiles/templates/files_trashbin.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_versions]
|
||||
file_filter = translationfiles/<lang>/files_versions.po
|
||||
source_file = translationfiles/templates/files_versions.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.user_ldap]
|
||||
file_filter = translationfiles/<lang>/user_ldap.po
|
||||
source_file = translationfiles/templates/user_ldap.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.comments]
|
||||
file_filter = translationfiles/<lang>/comments.po
|
||||
source_file = translationfiles/templates/comments.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.federatedfilesharing]
|
||||
file_filter = translationfiles/<lang>/federatedfilesharing.po
|
||||
source_file = translationfiles/templates/federatedfilesharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.federation]
|
||||
file_filter = translationfiles/<lang>/federation.po
|
||||
source_file = translationfiles/templates/federation.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.oauth2]
|
||||
file_filter = translationfiles/<lang>/oauth2.po
|
||||
source_file = translationfiles/templates/oauth2.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.sharebymail]
|
||||
file_filter = translationfiles/<lang>/sharebymail.po
|
||||
source_file = translationfiles/templates/sharebymail.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.systemtags]
|
||||
file_filter = translationfiles/<lang>/systemtags.po
|
||||
source_file = translationfiles/templates/systemtags.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.updatenotification]
|
||||
file_filter = translationfiles/<lang>/updatenotification.po
|
||||
source_file = translationfiles/templates/updatenotification.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.theming]
|
||||
file_filter = translationfiles/<lang>/theming.po
|
||||
source_file = translationfiles/templates/theming.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.twofactor_backupcodes]
|
||||
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
|
||||
source_file = translationfiles/templates/twofactor_backupcodes.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.workflowengine]
|
||||
file_filter = translationfiles/<lang>/workflowengine.po
|
||||
source_file = translationfiles/templates/workflowengine.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
@@ -1,5 +1,5 @@
|
||||
upload_max_filesize=511M
|
||||
post_max_size=511M
|
||||
upload_max_filesize=513M
|
||||
post_max_size=513M
|
||||
memory_limit=512M
|
||||
mbstring.func_overload=0
|
||||
always_populate_raw_post_data=-1
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: 361584bd13...7d01337b3e
@@ -1,219 +1,26 @@
|
||||
Nextcloud is written by:
|
||||
- AW-UC <git@a-wesemann.de>
|
||||
- Aaron Wood <aaronjwood@gmail.com>
|
||||
- Achim Königs <garfonso@tratschtante.de>
|
||||
- Adam Williamson <awilliam@redhat.com>
|
||||
- Administrator <Administrator@WINDOWS-2012>
|
||||
- Aldo "xoen" Giambelluca <xoen@xoen.org>
|
||||
- Alex Weirig <alex.weirig@technolink.lu>
|
||||
- Alexander Bergolth <leo@strike.wu.ac.at>
|
||||
- Andreas Fischer <bantu@owncloud.com>
|
||||
- Andrew Brown <andrew@casabrown.com>
|
||||
- André Gaul <gaul@web-yard.de>
|
||||
- Arthur Schiwon <blizzz@arthur-schiwon.de>
|
||||
- Bart Visscher <bartv@thisnet.nl>
|
||||
- Bartek Przybylski <bart.p.pl@gmail.com>
|
||||
- Bastien Ho <bastienho@urbancube.fr>
|
||||
- Benjamin Diele <benjamin@diele.be>
|
||||
- Benjamin Liles <benliles@arch.tamu.edu>
|
||||
- Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
- Bernhard Reiter <ockham@raz.or.at>
|
||||
- Birk Borkason <daniel.niccoli@gmail.com>
|
||||
- Bjoern Schiessle <bjoern@schiessle.org>
|
||||
- Björn Schießle <bjoern@schiessle.org>
|
||||
- Borjan Tchakaloff <borjan@tchakaloff.fr>
|
||||
- Brice Maron <brice@bmaron.net>
|
||||
- Byron Marohn <combustible@live.com>
|
||||
- Carla Schroder <carla@owncloud.com>
|
||||
- Carlos Cerrillo <ccerrillo@gmail.com>
|
||||
- Carlos Damken <carlos@damken.com>
|
||||
- Christian Berendt <berendt@b1-systems.de>
|
||||
- Christian Jürges <christian@eqipe.ch>
|
||||
- Christian Kampka <christian@kampka.net>
|
||||
- Christian Weiske <cweiske@cweiske.de>
|
||||
- Christoph Schaefer <christophł@wolkesicher.de>
|
||||
- Christoph Wurst <christoph@owncloud.com>
|
||||
- Christopher Schäpers <kondou@ts.unde.re>
|
||||
- Christopher T. Johnson <ctjctj@gmail.com>
|
||||
- Clark Tomlinson <fallen013@gmail.com>
|
||||
- Craig Morrissey <craig@owncloud.com>
|
||||
- Dan Bartram <daneybartram@gmail.com>
|
||||
- Daniel Hansson <enoch85@gmail.com>
|
||||
- Daniel Jagszent <daniel@jagszent.de>
|
||||
- Daniel Molkentin <daniel@molkentin.de>
|
||||
- Daniel Tosello <tosello.daniel@gmail.com>
|
||||
- David Prévot <taffit@debian.org>
|
||||
- David Toledo <dtoledo@solidgear.es>
|
||||
- Dominik Schmidt <dev@dominik-schmidt.de>
|
||||
- Fabian Henze <flyser42@gmx.de>
|
||||
- Faruk Uzun <farukuzun@collabora.com>
|
||||
- Felix Böhm <felixboehm@gmx.de>
|
||||
- Felix Moeller <mail@felixmoeller.de>
|
||||
- Florian Preinstorfer <nblock@archlinux.us>
|
||||
- Florian Pritz <bluewind@xinu.at>
|
||||
- Florin Peter <github@florin-peter.de>
|
||||
- Francesco Rovelli <francesco.rovelli@gmail.com>
|
||||
- Frank Karlitschek <frank@karlitschek.de>
|
||||
- François Kubler <francois@kubler.org>
|
||||
- Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
|
||||
- Gadzy <dev@gadzy.fr>
|
||||
- Georg Ehrke <georg@owncloud.com>
|
||||
- Guillaume AMAT <guillaume.amat@informatique-libre.com>
|
||||
- Hasso Tepper <hasso@zone.ee>
|
||||
- Hendrik Leppelsack <hendrik@leppelsack.de>
|
||||
- Hugo Gonzalez Labrador <hglavra@gmail.com>
|
||||
- Individual IT Services <info@individual-it.net>
|
||||
- Jakob Sack <mail@jakobsack.de>
|
||||
- Jan-Christoph Borchardt <hey@jancborchardt.net>
|
||||
- Jarrett <JetUni@users.noreply.github.com>
|
||||
- Jean-Louis Dupond <jean-louis@dupond.be>
|
||||
- Jens-Christian Fischer <jens-christian.fischer@switch.ch>
|
||||
- Jesús Macias <jmacias@solidgear.es>
|
||||
- Joachim Bauch <bauch@struktur.de>
|
||||
- Joachim Sokolowski <github@sokolowski.org>
|
||||
- Joas Schilling <coding@schilljs.com>
|
||||
- Johan Björk <johanimon@gmail.com>
|
||||
- Johannes Ernst <jernst@indiecomputing.com>
|
||||
- Johannes Willnecker <johannes@willnecker.com>
|
||||
- Jonny007-MKD <1-23-4-5@web.de>
|
||||
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
|
||||
- Julius Haertl <jus@bitgrid.net>
|
||||
- Jörn Friedrich Dreyer <jfd@butonic.de>
|
||||
- Kamil Domanski <kdomanski@kdemail.net>
|
||||
- Klaas Freitag <freitag@owncloud.com>
|
||||
- Lars <winnetou+github@catolic.de>
|
||||
- Laurens Post <Crote@users.noreply.github.com>
|
||||
- Laurens Post <lkpost@scept.re>
|
||||
- Lennart Rosam <hello@takuto.de>
|
||||
- Lennart Rosam <lennart.rosam@medien-systempartner.de>
|
||||
- Leonardo Diez <leio10@users.noreply.github.com>
|
||||
- Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
|
||||
- Lukas Reschke <lukas@statuscode.ch>
|
||||
- Luke Policinski <lpolicinski@gmail.com>
|
||||
- Lyonel Vincent <lyonel@ezix.org>
|
||||
- Manish Bisht <manish.bisht490@gmail.com>
|
||||
- Mario Kolling <mario.kolling@serpro.gov.br>
|
||||
- Markus Goetz <markus@woboq.com>
|
||||
- Martin Konrad <info@martin-konrad.net>
|
||||
- Martin Konrad <konrad@frib.msu.edu>
|
||||
- Martin Mattel <martin.mattel@diemattels.at>
|
||||
- Marvin Thomas Rabe <mrabe@marvinrabe.de>
|
||||
- Masaki Kawabata Neto <masaki.kawabata@gmail.com>
|
||||
- Michael Gapczynski <GapczynskiM@gmail.com>
|
||||
- Michael Göhler <somebody.here@gmx.de>
|
||||
- Michael Kuhn <suraia@ikkoku.de>
|
||||
- Michael Roitzsch <reactorcontrol@icloud.com>
|
||||
- Michael Roth <michael.roth@rz.uni-augsburg.de>
|
||||
- Michael U <mdusher@users.noreply.github.com>
|
||||
- Miguel Prokop <miguel.prokop@vtu.com>
|
||||
- Mitar <mitar.git@tnode.com>
|
||||
- Morris Jobke <hey@morrisjobke.de>
|
||||
- Nicolai Ehemann <en@enlightened.de>
|
||||
- Nicolas Grekas <nicolas.grekas@gmail.com>
|
||||
- Nmz <nemesiz@nmz.lt>
|
||||
- Normal Ra <normalraw@gmail.com>
|
||||
- Oliver Gasser <oliver.gasser@gmail.com>
|
||||
- Oliver Kohl D.Sc. <oliver@kohl.bz>
|
||||
- Olivier Paroz <github@oparoz.com>
|
||||
- Otto Sabart <ottosabart@seberm.com>
|
||||
- Owen Winkler <a_github@midnightcircus.com>
|
||||
- Pascal de Bruijn <pmjdebruijn@pcode.nl>
|
||||
- Patrick Paysant <ppaysant@linagora.com>
|
||||
- Pellaeon Lin <nfsmwlin@gmail.com>
|
||||
- Petr Svoboda <weits666@gmail.com>
|
||||
- Phiber2000 <phiber2000@gmx.de>
|
||||
- Phil Davis <phil.davis@inf.org>
|
||||
- Philipp Kapfer <philipp.kapfer@gmx.at>
|
||||
- Philippe Jung <phil.jung@free.fr>
|
||||
- Pierre Jochem <pierrejochem@msn.com>
|
||||
- Pierre Ozoux <pierre@ozoux.net>
|
||||
- Piotr Filiciak <piotr@filiciak.pl>
|
||||
- Qingping Hou <dave2008713@gmail.com>
|
||||
- Raghu Nayyar <hey@raghunayyar.com>
|
||||
- Raghu Nayyar <me@iraghu.com>
|
||||
- Ralph Krimmel <rkrimme1@gwdg.de>
|
||||
- Ramiro Aparicio <rapariciog@gmail.com>
|
||||
- Randolph Carter <RandolphCarter@fantasymail.de>
|
||||
- RealRancor <Fisch.666@gmx.de>
|
||||
- Remco Brenninkmeijer <requist1@starmail.nl>
|
||||
- Renaud Fortier <Renaud.Fortier@fsaa.ulaval.ca>
|
||||
- Robin Appelman <robin@icewind.nl>
|
||||
- Robin McCorkell <robin@mccorkell.me.uk>
|
||||
- Roeland Jago Douma <roeland@famdouma.nl>
|
||||
- Roman Geber <rgeber@owncloudapps.com>
|
||||
- Roman Kreisel <mail@romankreisel.de>
|
||||
- Ross Nicoll <jrn@jrn.me.uk>
|
||||
- SA <stephen@mthosting.net>
|
||||
- Sam Tuke <mail@samtuke.com>
|
||||
- Sander <brantje@gmail.com>
|
||||
- Sean Comeau <sean@ftlnetworks.ca>
|
||||
- Sebastian Döll <sebastian.doell@libasys.de>
|
||||
- Senorsen <senorsen.zhang@gmail.com>
|
||||
- Serge Martin <edb@sigluy.net>
|
||||
- Sergio Bertolin <sbertolin@solidgear.es>
|
||||
- Sergio Bertolín <sbertolin@solidgear.es>
|
||||
- Simon Könnecke <simonkoennecke@gmail.com>
|
||||
- Sjors van der Pluijm <sjors@desjors.nl>
|
||||
- Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
|
||||
- Stefan Rado <owncloud@sradonia.net>
|
||||
- Stefan Weil <sw@weilnetz.de>
|
||||
- Steffen Lindner <mail@steffen-lindner.de>
|
||||
- Stephan Peijnik <speijnik@anexia-it.com>
|
||||
- TheSFReader <TheSFReader@gmail.com>
|
||||
- Thibaut GRIDEL <tgridel@free.fr>
|
||||
- Thomas Citharel <tcit@tcit.fr>
|
||||
- Thomas Müller <thomas.mueller@tmit.eu>
|
||||
- Thomas Pulzer <t.pulzer@kniel.de>
|
||||
- Thomas Tanghus <thomas@tanghus.net>
|
||||
- Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
|
||||
- Tim Dettrick <t.dettrick@uq.edu.au>
|
||||
- Tobia De Koninck <tobia@ledfan.be>
|
||||
- Tobias Kaminsky <tobias@kaminsky.me>
|
||||
- Tom Needham <tom@owncloud.com>
|
||||
- Torben Dannhauer <torben@dannhauer.de>
|
||||
- Victor Dubiniuk <dubiniuk@owncloud.com>
|
||||
- Viktor Szépe <viktor@szepe.net>
|
||||
- Vincent Chan <plus.vincchan@gmail.com>
|
||||
- Vincent Cloutier <vincent1cloutier@gmail.com>
|
||||
- Vincent Petry <pvince81@owncloud.com>
|
||||
- Volkan Gezer <volkangezer@gmail.com>
|
||||
- adrien <adrien.waksberg@believedigital.com>
|
||||
- alexweirig <alex.weirig@technolink.lu>
|
||||
- brumsel <brumsel@losecatcher.de>
|
||||
- cetra3 <peter@parashift.com.au>
|
||||
- cmeh <cmeh@users.noreply.github.com>
|
||||
- dampfklon <me@dampfklon.de>
|
||||
- davidgumberg <davidnoizgumberg@gmail.com>
|
||||
- davitol <dtoledo@solidgear.es>
|
||||
- derkostka <sebastian.kostka@gmail.com>
|
||||
- eduardo <eduardo@vnexu.net>
|
||||
- fabian <fabian@web2.0-apps.de>
|
||||
- felixboehm <felix@webhippie.de>
|
||||
- goodkiller <markopraakli@gmail.com>
|
||||
- helix84 <helix84@centrum.sk>
|
||||
- hkjolhede <hkjolhede@gmail.com>
|
||||
- ideaship <ideaship@users.noreply.github.com>
|
||||
- j-ed <juergen@eisfair.org>
|
||||
- jknockaert <jasper@knockaert.nl>
|
||||
- josh4trunks <joshruehlig@gmail.com>
|
||||
- karakayasemi <karakayasemi@itu.edu.tr>
|
||||
- macjohnny <estebanmarin@gmx.ch>
|
||||
- martin-rueegg <martin.rueegg@metaworx.ch>
|
||||
- martin.mattel@diemattels.at <martin.mattel@diemattels.at>
|
||||
- michag86 <micha_g@arcor.de>
|
||||
- mmccarn <mmccarn-github@mmsionline.us>
|
||||
- nishiki <nishiki@yaegashi.fr>
|
||||
- oparoz <owncloud@interfasys.ch>
|
||||
- root <root@oc.(none)>
|
||||
- scambra <sergio@entrecables.com>
|
||||
- scolebrook <scolebrook@mac.com>
|
||||
- shkdee <louis.traynard@m4x.org>
|
||||
- sualko <klaus@jsxc.org>
|
||||
- tbartenstein <tbartenstein@users.noreply.github.com>
|
||||
- tbelau666 <thomas.belau@gmx.de>
|
||||
- unclejamal3000 <andreas.pramhaas@posteo.de>
|
||||
- v1r0x <vinzenz.rosenkranz@gmail.com>
|
||||
- voxsim <Simon Vocella>
|
||||
ownCloud is written by:
|
||||
Frank Karlitschek
|
||||
Robin Appelman
|
||||
Jakob Sack
|
||||
Jan-Christoph Borchardt
|
||||
Michael Gapczynski
|
||||
Arthur Schiwon
|
||||
Bart Visscher
|
||||
Georg Ehrke
|
||||
Brice Maron
|
||||
Tom Needham
|
||||
Marvin Thomas Rabe
|
||||
Florian Pritz
|
||||
Bartek Przybylski
|
||||
Thomas Müller
|
||||
Klaas Freitag
|
||||
Sam Tuke
|
||||
Simon Birnbach
|
||||
Lukas Reschke
|
||||
Christian Reiner
|
||||
Daniel Molkentin
|
||||
Vincent Petry
|
||||
…
|
||||
|
||||
With help from many libraries and frameworks including:
|
||||
Open Collaboration Services
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
ChangeLog
|
||||
=========
|
||||
|
||||
NC 11 (2016-12-13)
|
||||
------------------
|
||||
* PHP 5.4 and 5.5 no longer supported
|
||||
* PHP 7.1 support
|
||||
* OC_L10N removed use \OCP\IL10N (#1948)
|
||||
* Preview handling is improved by sharing previews:
|
||||
* Preview sharing (shared files/external storages)
|
||||
* Previews are stored in the AppData
|
||||
* Previews are served faster by not first converting them to image objects
|
||||
* Core preview route changed:
|
||||
* Route for the urlgenerator changed from 'core_ajax_preview' to 'core.Preview.getPreview'
|
||||
* $urlGenerator->linkToRoute('core_ajax_preview', ...) => $urlGenerator->linkToRoute('core.Preview.getPreview', ...)
|
||||
* Avatars are cached
|
||||
* Avatars are moved to AppData
|
||||
* For existing avatars this happens automatically in a background job which means that on upgrade you might
|
||||
not see your avatar right away. However after the job has run it should show up again automatically.
|
||||
|
||||
+32
-38
@@ -1,6 +1,6 @@
|
||||
## Submitting issues
|
||||
|
||||
If you have questions about how to install or use Nextcloud, please direct these to our [forum][forum]. We are also available on [IRC][irc].
|
||||
If you have questions about how to install or use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
|
||||
|
||||
### Short version
|
||||
|
||||
@@ -11,58 +11,52 @@ If you have questions about how to install or use Nextcloud, please direct these
|
||||
- Go to one of the repositories, click "issues" and type any word in the top search/command bar.
|
||||
- You can also filter by appending e. g. "state:open" to the search string.
|
||||
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
|
||||
* This repository ([server](https://github.com/nextcloud/server/issues)) is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/nextcloud) or security@nextcloud.com following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
|
||||
* The issues in other components should be reported in their respective repositories: You will find them in our [GitHub Organization](https://github.com/nextcloud/)
|
||||
|
||||
* This repository ([core](https://github.com/owncloud/core/issues)) is *only* for issues within the ownCloud core code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
* __SECURITY__: Report any potential security bug to security@owncloud.com following our [security policy](https://owncloud.org/security/) instead of filing an issue in our bug tracker
|
||||
* The issues in other components should be reported in their respective repositories:
|
||||
- [Android client](https://github.com/owncloud/android/issues)
|
||||
- [iOS client](https://github.com/owncloud/ios-issues/issues)
|
||||
- [Desktop client](https://github.com/owncloud/mirall/issues)
|
||||
- [Documentation](https://github.com/owncloud/documentation/issues)
|
||||
- Apps:
|
||||
- [Activity](https://github.com/owncloud/activity/issues)
|
||||
- [Bookmarks](https://github.com/owncloud/bookmarks/issues)
|
||||
- [Calendar](https://github.com/owncloud/calendar/issues)
|
||||
- [Contacts](https://github.com/owncloud/contacts/issues)
|
||||
- [Documents](https://github.com/owncloud/documents/issues)
|
||||
- [Gallery](https://github.com/owncloud/gallery/issues)
|
||||
- [Mail](https://github.com/owncloud/mail/issues)
|
||||
- [Music](https://github.com/owncloud/music/issues)
|
||||
- [News](https://github.com/owncloud/news/issues)
|
||||
- [Notes](https://github.com/owncloud/notes/issues)
|
||||
- [Shorty](https://github.com/owncloud/shorty/issues)
|
||||
- [Tasks](https://github.com/owncloud/tasks/issues)
|
||||
- [All other apps](https://github.com/owncloud/apps/issues)
|
||||
* Report the issue using our [template][template], it includes all the information we need to track down the issue.
|
||||
|
||||
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
|
||||
|
||||
[template]: https://raw.githubusercontent.com/nextcloud/server/master/issue_template.md
|
||||
[forum]: https://help.nextcloud.com/
|
||||
[irc]: https://webchat.freenode.net/?channels=nextcloud
|
||||
[template]: https://raw.github.com/owncloud/core/master/issue_template.md
|
||||
[mailinglist]: https://mailman.owncloud.org/mailman/listinfo/owncloud
|
||||
[forum]: https://central.owncloud.org/
|
||||
[irc]: https://webchat.freenode.net/?channels=owncloud&uio=d4
|
||||
|
||||
## Contributing to Source Code
|
||||
|
||||
Thanks for wanting to contribute source code to Nextcloud. That's great!
|
||||
Thanks for wanting to contribute source code to ownCloud. That's great!
|
||||
|
||||
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the Nextcloud code with PHPUnit.
|
||||
Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement].
|
||||
|
||||
### Tests
|
||||
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the ownCloud code with PHPUnit.
|
||||
|
||||
In order to constantly increase the quality of our software we can no longer accept pull request which submit un-tested code.
|
||||
It is a must have that changed and added code segments are unit tested.
|
||||
In some areas unit testing is hard (aka almost impossible) as of today - in these areas refactoring WHILE fixing a bug is encouraged to enable unit testing.
|
||||
|
||||
### Sign your work
|
||||
|
||||
We use the Developer Certificate of Origin (DCO) as a additional safeguard
|
||||
for the Nextcloud project. This is a well established and widely used
|
||||
mechanism to assure contributors have confirmed their right to license
|
||||
their contribution under the project's license.
|
||||
Please read [contribute/developer-certificate-of-origin][dcofile].
|
||||
If you can certify it, then just add a line to every git commit message:
|
||||
|
||||
````
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
````
|
||||
|
||||
Use your real name (sorry, no pseudonyms or anonymous contributions).
|
||||
If you set your `user.name` and `user.email` git configs, you can sign your
|
||||
commit automatically with `git commit -s`. You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases)
|
||||
like `git config --global alias.ci 'commit -s'`. Now you can commit with
|
||||
`git ci` and the commit will be signed.
|
||||
|
||||
### Apply a license
|
||||
|
||||
In case you are not sure how to add or update the license header correctly please have a look at [contribute/HowToApplyALicense.md][applyalicense]
|
||||
|
||||
[devmanual]: https://docs.nextcloud.org/server/12/developer_manual/
|
||||
[dcofile]: https://github.com/nextcloud/server/blob/master/contribute/developer-certificate-of-origin
|
||||
[applyalicense]: https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md
|
||||
[agreement]: https://owncloud.org/about/contributor-agreement/
|
||||
[devmanual]: https://owncloud.org/dev
|
||||
|
||||
## Translations
|
||||
Please submit translations via [Transifex][transifex].
|
||||
|
||||
[transifex]: https://www.transifex.com/nextcloud
|
||||
[transifex]: https://www.transifex.com/projects/p/owncloud/
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
Files in Nextcloud are licensed under the Affero General Public License version 3,
|
||||
the text of which can be found in COPYING, or any later version of the AGPL,
|
||||
Files in ownCloud are licensed under the Affero General Public License version 3,
|
||||
the text of which can be found in COPYING-AGPL, or any later version of the AGPL,
|
||||
unless otherwise noted.
|
||||
|
||||
Licensing of components:
|
||||
@@ -12,4 +12,4 @@ Licensing of components:
|
||||
All unmodified files from these and other sources retain their original copyright
|
||||
and license notices: see the relevant individual files.
|
||||
|
||||
Attribution information for Nextcloud is contained in the AUTHORS file.
|
||||
Attribution information for ownCloud is contained in the AUTHORS file.
|
||||
|
||||
Vendored
+123
@@ -0,0 +1,123 @@
|
||||
#!groovy
|
||||
/*
|
||||
* This Jenkinsfile is intended to run on https://ci.owncloud.org and may fail anywhere else.
|
||||
* It makes assumptions about plugins being installed, labels mapping to nodes that can build what is needed, etc.
|
||||
*/
|
||||
|
||||
timestampedNode('SLAVE') {
|
||||
stage 'Checkout'
|
||||
checkout scm
|
||||
sh '''git submodule update --init'''
|
||||
|
||||
stage 'JavaScript Testing'
|
||||
executeAndReport('tests/autotest-results-js.xml') {
|
||||
sh '''./autotest-js.sh'''
|
||||
}
|
||||
|
||||
stage 'PHPUnit'
|
||||
executeAndReport('tests/autotest-results-sqlite.xml') {
|
||||
sh '''
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
phpenv local 5.6
|
||||
./autotest.sh sqlite
|
||||
'''
|
||||
}
|
||||
executeAndReport('tests/autotest-results-mysql.xml') {
|
||||
sh '''
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
phpenv local 5.4
|
||||
./autotest.sh mysql
|
||||
'''
|
||||
}
|
||||
executeAndReport('tests/autotest-results-pgsql.xml') {
|
||||
sh '''
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
phpenv local 5.6
|
||||
./autotest.sh pgsql
|
||||
'''
|
||||
}
|
||||
executeAndReport('tests/autotest-results-oci.xml') {
|
||||
sh '''
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
phpenv local 5.5
|
||||
./autotest.sh oci
|
||||
'''
|
||||
}
|
||||
|
||||
stage 'Files External Testing'
|
||||
executeAndReport('tests/autotest-external-results-sqlite-webdav-ownCloud.xml') {
|
||||
sh '''phpenv local 5.6
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
./autotest-external.sh sqlite webdav-ownCloud
|
||||
'''
|
||||
}
|
||||
executeAndReport('tests/autotest-external-results-sqlite-smb-silvershell.xml') {
|
||||
sh '''phpenv local 5.6
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
./autotest-external.sh sqlite smb-silvershell
|
||||
'''
|
||||
}
|
||||
executeAndReport('tests/autotest-external-results-sqlite-smb-windows.xml') {
|
||||
sh '''phpenv local 5.6
|
||||
export NOCOVERAGE=1
|
||||
unset USEDOCKER
|
||||
./autotest-external.sh sqlite smb-windows
|
||||
'''
|
||||
}
|
||||
|
||||
step([$class: 'JUnitResultArchiver', testResults: 'tests/autotest-external-results-sqlite.xml'])
|
||||
|
||||
stage 'Integration Testing'
|
||||
executeAndReport('build/integration/output/*.xml') {
|
||||
sh '''phpenv local 5.6
|
||||
rm -rf config/config.php
|
||||
./occ maintenance:install --admin-pass=admin
|
||||
rm -rf build/integration/output
|
||||
rm -rf build/integration/vendor
|
||||
rm -rf build/integration/composer.lock
|
||||
cd build/integration
|
||||
./run.sh
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
void executeAndReport(String testResultLocation, def body) {
|
||||
def failed = false
|
||||
// We're wrapping this in a timeout - if it takes longer, kill it.
|
||||
try {
|
||||
timeout(time: 120, unit: 'MINUTES') {
|
||||
body.call()
|
||||
}
|
||||
} catch (Exception e) {
|
||||
failed = true
|
||||
echo "Test execution failed: ${e}"
|
||||
} finally {
|
||||
step([$class: 'JUnitResultArchiver', testResults: testResultLocation])
|
||||
}
|
||||
|
||||
if (failed) {
|
||||
|
||||
if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'stable9.1' || env.BRANCH_NAME == 'stable9' || env.BRANCH_NAME == 'stable8.2') {
|
||||
mail body: "project build error is here: ${env.BUILD_URL}" ,
|
||||
subject: "Build on release branch failed: ${env.BRANCH_NAME}",
|
||||
to: 'jenkins@owncloud.com'
|
||||
}
|
||||
|
||||
error "Test execution failed. Terminating the build"
|
||||
}
|
||||
}
|
||||
|
||||
// Runs the given body within a Timestamper wrapper on the given label.
|
||||
def timestampedNode(String label, Closure body) {
|
||||
node(label) {
|
||||
wrap([$class: 'TimestamperBuildWrapper']) {
|
||||
body.call()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,66 +1,42 @@
|
||||
# Nextcloud Server
|
||||
[](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/209)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud-dev)
|
||||
# ownCloud
|
||||
|
||||
**A safe home for all your data.**
|
||||
[ownCloud](http://ownCloud.org) gives you freedom and control over your own data.
|
||||
A personal cloud which runs on your own server.
|
||||
|
||||

|
||||
### Build Status on [Jenkins CI](https://ci.owncloud.org/)
|
||||
Git master: [](https://ci.owncloud.org/job/server-master-linux/)
|
||||
|
||||
## Why is this so awesome?
|
||||
Quality:
|
||||
- Scrutinizer: [](https://scrutinizer-ci.com/g/owncloud/core/)
|
||||
- CodeClimate: [](https://codeclimate.com/github/owncloud/core)
|
||||
|
||||
* :file_folder: **Access your Data** You can store your files, contacts, calendars and more on a server of your choosing.
|
||||
* :package: **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices.
|
||||
* :arrows_counterclockwise: **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
|
||||
* :rocket: **Expandable with dozens of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail) and all those you can discover in our [App Store](https://apps.nextcloud.com)
|
||||
* :lock: **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentification.
|
||||
Dependencies:
|
||||
|
||||
*You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your Enterprise?* [**Learn about all our Features**](https://nextcloud.com/features).
|
||||
[](https://www.versioneye.com/user/projects/54f4a2384f3108959a000a16)
|
||||
|
||||
## Get your Nextcloud
|
||||
[](https://www.versioneye.com/user/projects/54d1f76f3ca0840b190000c0)
|
||||
|
||||
- [**Install** a server by yourself on your own hardware or by using one of our ready to use **Appliances**](https://nextcloud.com/install/#instructions-server)
|
||||
- [Buy one of the awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
|
||||
- [Find a service **provider** who is hosting Nextcloud for you or your company](https://nextcloud.com/providers/)
|
||||
### Installation instructions
|
||||
https://doc.owncloud.org/server/8.2/developer_manual/app/index.html
|
||||
|
||||
*Enterprise? Public Sector or Education user? You may want to have a look into the [**Enterprise Support Subscription**](https://nextcloud.com/enterprise/) provided by the Nextcloud GmbH*
|
||||
### Contribution Guidelines
|
||||
https://owncloud.org/contribute/
|
||||
|
||||
## Support
|
||||
Learn about the different ways you can get support for ownCloud: https://owncloud.org/support/
|
||||
|
||||
## Get in touch
|
||||
* :clipboard: [Forum](https://central.owncloud.org)
|
||||
* :envelope: [Mailing list](https://mailman.owncloud.org/mailman/listinfo)
|
||||
* :hash: [IRC channel](https://webchat.freenode.net/?channels=owncloud)
|
||||
* :busts_in_silhouette: [Facebook] (https://facebook.com/ownclouders)
|
||||
* :hatching_chick: [Twitter](https://twitter.com/ownClouders)
|
||||
|
||||
* :clipboard: [Forum](https://help.nextcloud.com)
|
||||
* :busts_in_silhouette: [Facebook](https://facebook.com/nextclouders)
|
||||
* :hatching_chick: [Twitter](https://twitter.com/Nextclouders)
|
||||
### Important notice on translations
|
||||
Please submit translations via Transifex:
|
||||
https://www.transifex.com/projects/p/owncloud/
|
||||
|
||||
[…learn more about how to get support for Nextcloud here!](https://nextcloud.com/support)
|
||||
[](https://www.transifex.com/projects/p/owncloud/)
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
All contributions to this repository from June, 16 2016 on are considered to be
|
||||
licensed under the AGPLv3 or any later version.
|
||||
|
||||
Nextcloud doesn't require a CLA (Contributor License Agreement).
|
||||
The copyright belongs to all the individual contributors. Therefore we recommend
|
||||
that every contributor adds following line to the header of a file, if they
|
||||
changed it substantially:
|
||||
|
||||
```
|
||||
@copyright Copyright (c) <year>, <your name> (<your email address>)
|
||||
```
|
||||
|
||||
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
|
||||
|
||||
Please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md) to this repository.
|
||||
|
||||
More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)
|
||||
|
||||
## Running master checkouts
|
||||
|
||||
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
|
||||
|
||||
Several apps by default included in regular releases like [firstrunwizard](https://github.com/nextcloud/firstrunwizard) or [gallery](https://github.com/nextcloud/gallery) are missing in `master` and have to be installed manually as required.
|
||||
|
||||
That aside Git checkouts can be handled the same as release archives.
|
||||
|
||||
Note they should never be used on production systems.
|
||||
For more detailed information about translations:
|
||||
http://doc.owncloud.org/server/8.2/developer_manual/core/translation.html
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
$logger = \OC::$server->getLogger();
|
||||
$userSession = \OC::$server->getUserSession();
|
||||
$groupManager = \OC::$server->getGroupManager();
|
||||
$eventDispatcher = \OC::$server->getEventDispatcher();
|
||||
|
||||
$auditLogger = new \OCA\Admin_Audit\AuditLogger(
|
||||
$logger,
|
||||
$userSession,
|
||||
$groupManager,
|
||||
$eventDispatcher
|
||||
);
|
||||
$auditLogger->registerHooks();
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<info>
|
||||
<id>admin_audit</id>
|
||||
<name>Auditing / Logging</name>
|
||||
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
|
||||
<licence>AGPL</licence>
|
||||
<author>Nextcloud</author>
|
||||
<version>1.2.0</version>
|
||||
<dependencies>
|
||||
<nextcloud min-version="12" max-version="12" />
|
||||
</dependencies>
|
||||
<types>
|
||||
<logging/>
|
||||
</types>
|
||||
</info>
|
||||
@@ -1,88 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
use OCP\ILogger;
|
||||
|
||||
class Action {
|
||||
/** @var ILogger */
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
*/
|
||||
public function __construct(ILogger $logger) {
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log a single action with a log level of info
|
||||
*
|
||||
* @param string $text
|
||||
* @param array $params
|
||||
* @param array $elements
|
||||
* @param bool $obfuscateParameters
|
||||
*/
|
||||
public function log($text,
|
||||
array $params,
|
||||
array $elements,
|
||||
$obfuscateParameters = false) {
|
||||
foreach($elements as $element) {
|
||||
if(!isset($params[$element])) {
|
||||
if ($obfuscateParameters) {
|
||||
$this->logger->critical(
|
||||
'$params["'.$element.'"] was missing.',
|
||||
['app' => 'admin_audit']
|
||||
);
|
||||
} else {
|
||||
$this->logger->critical(
|
||||
sprintf(
|
||||
'$params["'.$element.'"] was missing. Transferred value: %s',
|
||||
print_r($params, true)
|
||||
),
|
||||
['app' => 'admin_audit']
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$replaceArray = [];
|
||||
foreach($elements as $element) {
|
||||
if($params[$element] instanceof \DateTime) {
|
||||
$params[$element] = $params[$element]->format('Y-m-d H:i:s');
|
||||
}
|
||||
$replaceArray[] = $params[$element];
|
||||
}
|
||||
|
||||
$this->logger->info(
|
||||
vsprintf(
|
||||
$text,
|
||||
$replaceArray
|
||||
),
|
||||
[
|
||||
'app' => 'admin_audit'
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
/**
|
||||
* Class Auth logs all auth related actions
|
||||
*
|
||||
* @package OCA\Admin_Audit\Actions
|
||||
*/
|
||||
class Auth extends Action {
|
||||
public function loginAttempt(array $params) {
|
||||
$this->log(
|
||||
'Login attempt: "%s"',
|
||||
$params,
|
||||
[
|
||||
'uid',
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
public function loginSuccessful(array $params) {
|
||||
$this->log(
|
||||
'Login successful: "%s"',
|
||||
$params,
|
||||
[
|
||||
'uid',
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
public function logout(array $params) {
|
||||
$this->log(
|
||||
'Logout occurred',
|
||||
[],
|
||||
[]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
/**
|
||||
* Class Files logs the actions to files
|
||||
*
|
||||
* @package OCA\Admin_Audit\Actions
|
||||
*/
|
||||
class Files extends Action {
|
||||
/**
|
||||
* Logs file read actions
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function read(array $params) {
|
||||
$this->log(
|
||||
'File accessed: "%s"',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs rename actions of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function rename(array $params) {
|
||||
$this->log(
|
||||
'File renamed: "%s" to "%s"',
|
||||
$params,
|
||||
[
|
||||
'oldpath',
|
||||
'newpath',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs creation of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function create(array $params) {
|
||||
if ($params['path'] === '/' || $params['path'] === '' || $params['path'] === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->log(
|
||||
'File created: "%s"',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs copying of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function copy(array $params) {
|
||||
$this->log(
|
||||
'File copied: "%s" to "%s"',
|
||||
$params,
|
||||
[
|
||||
'oldpath',
|
||||
'newpath',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs writing of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function write(array $params) {
|
||||
if ($params['path'] === '/' || $params['path'] === '' || $params['path'] === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->log(
|
||||
'File written to: "%s"',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs update of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function update(array $params) {
|
||||
$this->log(
|
||||
'File updated: "%s"',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs deletions of files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function delete(array $params) {
|
||||
$this->log(
|
||||
'File deleted: "%s"',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs preview access to a file
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function preview(array $params) {
|
||||
$this->log(
|
||||
'Preview accessed: "%s" (width: "%s", height: "%s" crop: "%s", mode: "%s")',
|
||||
$params,
|
||||
[
|
||||
'path',
|
||||
'width',
|
||||
'height',
|
||||
'crop',
|
||||
'mode'
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
* @author Roger Szabo <roger.szabo@web.de>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
|
||||
use OCA\Admin_Audit\Actions\Action;
|
||||
use OCP\IGroup;
|
||||
use OCP\IUser;
|
||||
|
||||
/**
|
||||
* Class GroupManagement logs all group manager related events
|
||||
*
|
||||
* @package OCA\Admin_Audit
|
||||
*/
|
||||
class GroupManagement extends Action {
|
||||
|
||||
/**
|
||||
* log add user to group event
|
||||
*
|
||||
* @param IGroup $group
|
||||
* @param IUser $user
|
||||
*/
|
||||
public function addUser(IGroup $group, IUser $user) {
|
||||
$this->log('User "%s" added to group "%s"',
|
||||
[
|
||||
'group' => $group->getGID(),
|
||||
'user' => $user->getUID()
|
||||
],
|
||||
[
|
||||
'user', 'group'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* log remove user from group event
|
||||
*
|
||||
* @param IGroup $group
|
||||
* @param IUser $user
|
||||
*/
|
||||
public function removeUser(IGroup $group, IUser $user) {
|
||||
$this->log('User "%s" removed from group "%s"',
|
||||
[
|
||||
'group' => $group->getGID(),
|
||||
'user' => $user->getUID()
|
||||
],
|
||||
[
|
||||
'user', 'group'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* log create group to group event
|
||||
*
|
||||
* @param IGroup $group
|
||||
*/
|
||||
public function createGroup(IGroup $group) {
|
||||
$this->log('Group created: "%s"',
|
||||
[
|
||||
'group' => $group->getGID()
|
||||
],
|
||||
[
|
||||
'group'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* log delete group to group event
|
||||
*
|
||||
* @param IGroup $group
|
||||
*/
|
||||
public function deleteGroup(IGroup $group) {
|
||||
$this->log('Group deleted: "%s"',
|
||||
[
|
||||
'group' => $group->getGID()
|
||||
],
|
||||
[
|
||||
'group'
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,191 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
use OCP\Share;
|
||||
|
||||
/**
|
||||
* Class Sharing logs the sharing actions
|
||||
*
|
||||
* @package OCA\Admin_Audit\Actions
|
||||
*/
|
||||
class Sharing extends Action {
|
||||
/**
|
||||
* Logs sharing of data
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function shared(array $params) {
|
||||
if($params['shareType'] === Share::SHARE_TYPE_LINK) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'itemTarget',
|
||||
'itemSource',
|
||||
'permissions',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
} elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'itemTarget',
|
||||
'itemSource',
|
||||
'shareWith',
|
||||
'permissions',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
} elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'itemTarget',
|
||||
'itemSource',
|
||||
'shareWith',
|
||||
'permissions',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs unsharing of data
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function unshare(array $params) {
|
||||
if($params['shareType'] === Share::SHARE_TYPE_LINK) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'fileTarget',
|
||||
'itemSource',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
} elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'fileTarget',
|
||||
'itemSource',
|
||||
'shareWith',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
} elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
|
||||
$this->log(
|
||||
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'fileTarget',
|
||||
'itemSource',
|
||||
'shareWith',
|
||||
'id',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs the updating of permission changes for shares
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function updatePermissions(array $params) {
|
||||
$this->log(
|
||||
'The permissions of the shared %s "%s" with ID "%s" have been changed to "%s"',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'path',
|
||||
'itemSource',
|
||||
'permissions',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs the password changes for a share
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function updatePassword(array $params) {
|
||||
$this->log(
|
||||
'The password of the publicly shared %s "%s" with ID "%s" has been changed',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'token',
|
||||
'itemSource',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs the expiration date changes for a share
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function updateExpirationDate(array $params) {
|
||||
$this->log(
|
||||
'The expiration date of the publicly shared %s with ID "%s" has been changed to "%s"',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'itemSource',
|
||||
'date',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs access of shared files
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function shareAccessed(array $params) {
|
||||
$this->log(
|
||||
'The shared %s with the token "%s" by "%s" has been accessed.',
|
||||
$params,
|
||||
[
|
||||
'itemType',
|
||||
'token',
|
||||
'uidOwner',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
|
||||
class Trashbin extends Action {
|
||||
|
||||
public function delete($params) {
|
||||
$this->log('File "%s" deleted from trash bin.',
|
||||
['path' => $params['path']], ['path']
|
||||
);
|
||||
}
|
||||
|
||||
public function restore($params) {
|
||||
$this->log('File "%s" restored from trash bin.',
|
||||
['path' => $params['filePath']], ['path']
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
use OCP\IUser;
|
||||
|
||||
/**
|
||||
* Class UserManagement logs all user management related actions.
|
||||
*
|
||||
* @package OCA\Admin_Audit\Actions
|
||||
*/
|
||||
class UserManagement extends Action {
|
||||
/**
|
||||
* Log creation of users
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function create(array $params) {
|
||||
$this->log(
|
||||
'User created: "%s"',
|
||||
$params,
|
||||
[
|
||||
'uid',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log deletion of users
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function delete(array $params) {
|
||||
$this->log(
|
||||
'User deleted: "%s"',
|
||||
$params,
|
||||
[
|
||||
'uid',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log enabling of users
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function change(array $params) {
|
||||
if ($params['feature'] === 'enabled') {
|
||||
$this->log(
|
||||
$params['value'] === 'true' ? 'User enabled: "%s"' : 'User disabled: "%s"',
|
||||
['user' => $params['user']->getUID()],
|
||||
[
|
||||
'user',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs changing of the user scope
|
||||
*
|
||||
* @param IUser $user
|
||||
*/
|
||||
public function setPassword(IUser $user) {
|
||||
if($user->getBackendClassName() === 'Database') {
|
||||
$this->log(
|
||||
'Password of user "%s" has been changed',
|
||||
[
|
||||
'user' => $user->getUID(),
|
||||
],
|
||||
[
|
||||
'user',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Admin_Audit\Actions;
|
||||
|
||||
|
||||
class Versions extends Action {
|
||||
|
||||
public function rollback($params) {
|
||||
$this->log('Version "%s" of "%s" was restored.',
|
||||
[
|
||||
'version' => $params['revision'],
|
||||
'path' => $params['path']
|
||||
],
|
||||
['version', 'path']
|
||||
);
|
||||
}
|
||||
|
||||
public function delete($params) {
|
||||
$this->log('Version "%s" was deleted.',
|
||||
['path' => $params['path']],
|
||||
['path']
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,209 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
|
||||
*
|
||||
* @author Bjoern Schiessle <bjoern@schiessle.org>
|
||||
* @author Lukas Reschke <lukas@statuscode.ch>
|
||||
* @author Roger Szabo <roger.szabo@web.de>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Admin_Audit;
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\Node\File;
|
||||
use OCA\Admin_Audit\Actions\Auth;
|
||||
use OCA\Admin_Audit\Actions\Files;
|
||||
use OCA\Admin_Audit\Actions\GroupManagement;
|
||||
use OCA\Admin_Audit\Actions\Sharing;
|
||||
use OCA\Admin_Audit\Actions\Trashbin;
|
||||
use OCA\Admin_Audit\Actions\UserManagement;
|
||||
use OCA\Admin_Audit\Actions\Versions;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\ILogger;
|
||||
use OCP\IPreview;
|
||||
use OCP\IUserSession;
|
||||
use OCP\Util;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class AuditLogger {
|
||||
/** @var ILogger */
|
||||
private $logger;
|
||||
/** @var IUserSession */
|
||||
private $userSession;
|
||||
/** @var IGroupManager */
|
||||
private $groupManager;
|
||||
|
||||
/**
|
||||
* AuditLogger constructor.
|
||||
*
|
||||
* @param ILogger $logger
|
||||
* @param IUserSession $userSession
|
||||
* @param IGroupManager $groupManager
|
||||
* @param EventDispatcherInterface $eventDispatcher
|
||||
*/
|
||||
public function __construct(ILogger $logger,
|
||||
IUserSession $userSession,
|
||||
IGroupManager $groupManager,
|
||||
EventDispatcherInterface $eventDispatcher) {
|
||||
$this->logger = $logger;
|
||||
$this->userSession = $userSession;
|
||||
$this->groupManager = $groupManager;
|
||||
$this->eventDispatcher = $eventDispatcher;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register hooks in order to log them
|
||||
*/
|
||||
public function registerHooks() {
|
||||
$this->userManagementHooks();
|
||||
$this->groupHooks();
|
||||
$this->sharingHooks();
|
||||
$this->authHooks();
|
||||
$this->fileHooks();
|
||||
$this->trashbinHooks();
|
||||
$this->versionsHooks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to user management hooks
|
||||
*/
|
||||
private function userManagementHooks() {
|
||||
$userActions = new UserManagement($this->logger);
|
||||
|
||||
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
|
||||
Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
|
||||
Util::connectHook('OC_User', 'changeUser', $userActions, 'change');
|
||||
$this->userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
|
||||
}
|
||||
|
||||
private function groupHooks() {
|
||||
$groupActions = new GroupManagement($this->logger);
|
||||
$this->groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
|
||||
$this->groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
|
||||
$this->groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']);
|
||||
$this->groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']);
|
||||
}
|
||||
|
||||
/**
|
||||
* connect to sharing events
|
||||
*/
|
||||
private function sharingHooks() {
|
||||
$shareActions = new Sharing($this->logger);
|
||||
|
||||
Util::connectHook('OCP\Share', 'post_shared', $shareActions, 'shared');
|
||||
Util::connectHook('OCP\Share', 'post_unshare', $shareActions, 'unshare');
|
||||
Util::connectHook('OCP\Share', 'post_update_permissions', $shareActions, 'updatePermissions');
|
||||
Util::connectHook('OCP\Share', 'post_update_password', $shareActions, 'updatePassword');
|
||||
Util::connectHook('OCP\Share', 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
|
||||
Util::connectHook('OCP\Share', 'share_link_access', $shareActions, 'shareAccessed');
|
||||
}
|
||||
|
||||
/**
|
||||
* connect to authentication event and related actions
|
||||
*/
|
||||
private function authHooks() {
|
||||
$authActions = new Auth($this->logger);
|
||||
|
||||
Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
|
||||
Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
|
||||
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to file hooks
|
||||
*/
|
||||
private function fileHooks() {
|
||||
$fileActions = new Files($this->logger);
|
||||
$this->eventDispatcher->addListener(
|
||||
IPreview::EVENT,
|
||||
function(GenericEvent $event) use ($fileActions) {
|
||||
/** @var File $file */
|
||||
$file = $event->getSubject();
|
||||
$fileActions->preview([
|
||||
'path' => substr($file->getInternalPath(), 5),
|
||||
'width' => $event->getArguments()['width'],
|
||||
'height' => $event->getArguments()['height'],
|
||||
'crop' => $event->getArguments()['crop'],
|
||||
'mode' => $event->getArguments()['mode']
|
||||
]);
|
||||
}
|
||||
);
|
||||
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_post_rename,
|
||||
$fileActions,
|
||||
'rename'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_post_create,
|
||||
$fileActions,
|
||||
'create'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_post_copy,
|
||||
$fileActions,
|
||||
'copy'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_post_write,
|
||||
$fileActions,
|
||||
'write'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_post_update,
|
||||
$fileActions,
|
||||
'update'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_read,
|
||||
$fileActions,
|
||||
'read'
|
||||
);
|
||||
Util::connectHook(
|
||||
Filesystem::CLASSNAME,
|
||||
Filesystem::signal_delete,
|
||||
$fileActions,
|
||||
'delete'
|
||||
);
|
||||
}
|
||||
|
||||
public function versionsHooks() {
|
||||
$versionsActions = new Versions($this->logger);
|
||||
Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
|
||||
Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete');
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to trash bin hooks
|
||||
*/
|
||||
private function trashbinHooks() {
|
||||
$trashActions = new Trashbin($this->logger);
|
||||
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
|
||||
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
*
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* @author Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
$eventDispatcher = \OC::$server->getEventDispatcher();
|
||||
$eventDispatcher->addListener(
|
||||
'OCA\Files::loadAdditionalScripts',
|
||||
function() {
|
||||
\OCP\Util::addScript('oc-backbone-webdav');
|
||||
\OCP\Util::addScript('comments', 'merged');
|
||||
\OCP\Util::addStyle('comments', 'comments');
|
||||
}
|
||||
);
|
||||
|
||||
$eventDispatcher->addListener(\OCP\Comments\CommentsEntityEvent::EVENT_ENTITY, function(\OCP\Comments\CommentsEntityEvent $event) {
|
||||
$event->addEntityCollection('files', function($name) {
|
||||
$nodes = \OC::$server->getUserFolder()->getById(intval($name));
|
||||
return !empty($nodes);
|
||||
});
|
||||
});
|
||||
|
||||
$notificationManager = \OC::$server->getNotificationManager();
|
||||
$notificationManager->registerNotifier(
|
||||
function() {
|
||||
$application = new \OCP\AppFramework\App('comments');
|
||||
return $application->getContainer()->query(\OCA\Comments\Notification\Notifier::class);
|
||||
},
|
||||
function () {
|
||||
$l = \OC::$server->getL10N('comments');
|
||||
return ['id' => 'comments', 'name' => $l->t('Comments')];
|
||||
}
|
||||
);
|
||||
|
||||
$commentsManager = \OC::$server->getCommentsManager();
|
||||
$commentsManager->registerEventHandler(function () {
|
||||
$application = new \OCP\AppFramework\App('comments');
|
||||
/** @var \OCA\Comments\EventHandler $handler */
|
||||
$handler = $application->getContainer()->query(\OCA\Comments\EventHandler::class);
|
||||
return $handler;
|
||||
});
|
||||
$commentsManager->registerDisplayNameResolver('user', function($id) {
|
||||
$manager = \OC::$server->getUserManager();
|
||||
$user = $manager->get($id);
|
||||
if(is_null($user)) {
|
||||
$l = \OC::$server->getL10N('comments');
|
||||
$displayName = $l->t('Unknown user');
|
||||
} else {
|
||||
$displayName = $user->getDisplayName();
|
||||
}
|
||||
return $displayName;
|
||||
});
|
||||
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<info>
|
||||
<id>comments</id>
|
||||
<name>Comments</name>
|
||||
<description>Files app plugin to add comments to files</description>
|
||||
<licence>AGPL</licence>
|
||||
<author>Arthur Schiwon, Vincent Petry</author>
|
||||
<default_enable/>
|
||||
<version>1.2.0</version>
|
||||
<dependencies>
|
||||
<nextcloud min-version="12" max-version="12" />
|
||||
</dependencies>
|
||||
<types>
|
||||
<logging/>
|
||||
</types>
|
||||
|
||||
<activity>
|
||||
<settings>
|
||||
<setting>OCA\Comments\Activity\Setting</setting>
|
||||
</settings>
|
||||
|
||||
<filters>
|
||||
<filter>OCA\Comments\Activity\Filter</filter>
|
||||
</filters>
|
||||
|
||||
<providers>
|
||||
<provider>OCA\Comments\Activity\Provider</provider>
|
||||
</providers>
|
||||
</activity>
|
||||
</info>
|
||||
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
|
||||
*
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
use \OCA\Comments\AppInfo\Application;
|
||||
|
||||
$application = new Application();
|
||||
$application->registerRoutes($this, ['routes' => [
|
||||
['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'],
|
||||
]]);
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
#commentsTabView .emptycontent {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm {
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm .message {
|
||||
width: calc(100% - 81px); /* 36 (left margin) + 30 (right padding) + 15 (right padding of surrounding box) */
|
||||
margin-left: 36px;
|
||||
padding-right: 30px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm .submit {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 8px;
|
||||
width: 30px;
|
||||
margin: 0;
|
||||
padding: 7px 9px;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
opacity: .3;
|
||||
}
|
||||
#commentsTabView .newCommentForm .submit:hover,
|
||||
#commentsTabView .newCommentForm .submit:focus {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm .submitLoading {
|
||||
background-position: left;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm .cancel {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#commentsTabView .newCommentForm textarea {
|
||||
resize: none;
|
||||
}
|
||||
|
||||
#commentsTabView .comment {
|
||||
position: relative;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .avatar {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .message .avatar {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#activityTabView li.comment.collapsed .activitymessage,
|
||||
#commentsTabView .comment.collapsed .message {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
#activityTabView li.comment.collapsed .activitymessage,
|
||||
#commentsTabView .comment.collapsed .message {
|
||||
max-height: 70px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#activityTabView li.comment .message-overlay,
|
||||
#commentsTabView .comment .message-overlay {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#activityTabView li.comment.collapsed .message-overlay,
|
||||
#commentsTabView .comment.collapsed .message-overlay {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
height: 50px;
|
||||
pointer-events: none;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: -moz-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
|
||||
background: -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
|
||||
background: -o-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
|
||||
background: -ms-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
|
||||
background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
#commentsTabView .authorRow>div {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#commentsTabView .authorRow>div.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#commentsTabView .comments li .message .avatar-name-wrapper,
|
||||
#commentsTabView .comment .authorRow {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .author,
|
||||
#commentsTabView .comment .date {
|
||||
opacity: .5;
|
||||
}
|
||||
#commentsTabView .comment .author {
|
||||
margin-left: 5px;
|
||||
}
|
||||
#commentsTabView .comment .date {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
#commentsTabView .comments li .message {
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .action {
|
||||
opacity: 0;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#commentsTabView .comment:hover .action {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .action:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#commentsTabView .comment .action.delete {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#commentsTabView .comment.disabled {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
#commentsTabView .comment.disabled .action {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#commentsTabView .message.error {
|
||||
color: #e9322d;
|
||||
border-color: #e9322d;
|
||||
-webkit-box-shadow: 0 0 6px #f8b9b7;
|
||||
-moz-box-shadow: 0 0 6px #f8b9b7;
|
||||
box-shadow: 0 0 6px #f8b9b7;
|
||||
}
|
||||
|
||||
.app-files .action-comment {
|
||||
padding: 16px 14px;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#000" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg>
|
||||
|
Before Width: | Height: | Size: 243 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#fff" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg>
|
||||
|
Before Width: | Height: | Size: 242 B |
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
(function() {
|
||||
OCA.Comments.ActivityTabViewPlugin = {
|
||||
|
||||
/**
|
||||
* Prepare activity for display
|
||||
*
|
||||
* @param {OCA.Activity.ActivityModel} model for this activity
|
||||
* @param {jQuery} $el jQuery handle for this activity
|
||||
* @param {string} view The view that displayes this activity
|
||||
*/
|
||||
prepareModelForDisplay: function (model, $el, view) {
|
||||
if (model.get('app') !== 'comments' || model.get('type') !== 'comments') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (view === 'ActivityTabView') {
|
||||
$el.addClass('comment');
|
||||
if (model.get('message') && this._isLong(model.get('message'))) {
|
||||
$el.addClass('collapsed');
|
||||
var $overlay = $('<div>').addClass('message-overlay');
|
||||
$el.find('.activitymessage').after($overlay);
|
||||
$el.on('click', this._onClickCollapsedComment);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* Copy of CommentsTabView._onClickComment()
|
||||
*/
|
||||
_onClickCollapsedComment: function(ev) {
|
||||
var $row = $(ev.target);
|
||||
if (!$row.is('.comment')) {
|
||||
$row = $row.closest('.comment');
|
||||
}
|
||||
$row.removeClass('collapsed');
|
||||
},
|
||||
|
||||
/*
|
||||
* Copy of CommentsTabView._isLong()
|
||||
*/
|
||||
_isLong: function(message) {
|
||||
return message.length > 250 || (message.match(/\n/g) || []).length > 1;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
})();
|
||||
|
||||
OC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin);
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function() {
|
||||
if (!OCA.Comments) {
|
||||
/**
|
||||
* @namespace
|
||||
*/
|
||||
OCA.Comments = {};
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function(OC, OCA) {
|
||||
|
||||
/**
|
||||
* @class OCA.Comments.CommentCollection
|
||||
* @classdesc
|
||||
*
|
||||
* Collection of comments assigned to a file
|
||||
*
|
||||
*/
|
||||
var CommentCollection = OC.Backbone.Collection.extend(
|
||||
/** @lends OCA.Comments.CommentCollection.prototype */ {
|
||||
|
||||
sync: OC.Backbone.davSync,
|
||||
|
||||
model: OCA.Comments.CommentModel,
|
||||
|
||||
/**
|
||||
* Object type
|
||||
*
|
||||
* @type string
|
||||
*/
|
||||
_objectType: 'files',
|
||||
|
||||
/**
|
||||
* Object id
|
||||
*
|
||||
* @type string
|
||||
*/
|
||||
_objectId: null,
|
||||
|
||||
/**
|
||||
* True if there are no more page results left to fetch
|
||||
*
|
||||
* @type bool
|
||||
*/
|
||||
_endReached: false,
|
||||
|
||||
/**
|
||||
* Number of comments to fetch per page
|
||||
*
|
||||
* @type int
|
||||
*/
|
||||
_limit : 20,
|
||||
|
||||
/**
|
||||
* Initializes the collection
|
||||
*
|
||||
* @param {string} [options.objectType] object type
|
||||
* @param {string} [options.objectId] object id
|
||||
*/
|
||||
initialize: function(models, options) {
|
||||
options = options || {};
|
||||
if (options.objectType) {
|
||||
this._objectType = options.objectType;
|
||||
}
|
||||
if (options.objectId) {
|
||||
this._objectId = options.objectId;
|
||||
}
|
||||
},
|
||||
|
||||
url: function() {
|
||||
return OC.linkToRemote('dav') + '/comments/' +
|
||||
encodeURIComponent(this._objectType) + '/' +
|
||||
encodeURIComponent(this._objectId) + '/';
|
||||
},
|
||||
|
||||
setObjectId: function(objectId) {
|
||||
this._objectId = objectId;
|
||||
},
|
||||
|
||||
hasMoreResults: function() {
|
||||
return !this._endReached;
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
this._endReached = false;
|
||||
this._summaryModel = null;
|
||||
return OC.Backbone.Collection.prototype.reset.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* Fetch the next set of results
|
||||
*/
|
||||
fetchNext: function(options) {
|
||||
var self = this;
|
||||
if (!this.hasMoreResults()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var body = '<?xml version="1.0" encoding="utf-8" ?>\n' +
|
||||
'<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n' +
|
||||
// load one more so we know there is more
|
||||
' <oc:limit>' + (this._limit + 1) + '</oc:limit>\n' +
|
||||
' <oc:offset>' + this.length + '</oc:offset>\n' +
|
||||
'</oc:filter-comments>\n';
|
||||
|
||||
options = options || {};
|
||||
var success = options.success;
|
||||
options = _.extend({
|
||||
remove: false,
|
||||
parse: true,
|
||||
data: body,
|
||||
davProperties: CommentCollection.prototype.model.prototype.davProperties,
|
||||
success: function(resp) {
|
||||
if (resp.length <= self._limit) {
|
||||
// no new entries, end reached
|
||||
self._endReached = true;
|
||||
} else {
|
||||
// remove last entry, for next page load
|
||||
resp = _.initial(resp);
|
||||
}
|
||||
if (!self.set(resp, options)) {
|
||||
return false;
|
||||
}
|
||||
if (success) {
|
||||
success.apply(null, arguments);
|
||||
}
|
||||
self.trigger('sync', 'REPORT', self, options);
|
||||
}
|
||||
}, options);
|
||||
|
||||
return this.sync('REPORT', this, options);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the matching summary model
|
||||
*
|
||||
* @return {OCA.Comments.CommentSummaryModel} summary model
|
||||
*/
|
||||
getSummaryModel: function() {
|
||||
if (!this._summaryModel) {
|
||||
this._summaryModel = new OCA.Comments.CommentSummaryModel({
|
||||
id: this._objectId,
|
||||
objectType: this._objectType
|
||||
});
|
||||
}
|
||||
return this._summaryModel;
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates the read marker for this comment thread
|
||||
*
|
||||
* @param {Date} [date] optional date, defaults to now
|
||||
* @param {Object} [options] backbone options
|
||||
*/
|
||||
updateReadMarker: function(date, options) {
|
||||
options = options || {};
|
||||
|
||||
return this.getSummaryModel().save({
|
||||
readMarker: (date || new Date()).toUTCString()
|
||||
}, options);
|
||||
}
|
||||
});
|
||||
|
||||
OCA.Comments.CommentCollection = CommentCollection;
|
||||
})(OC, OCA);
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function(OC, OCA) {
|
||||
|
||||
_.extend(OC.Files.Client, {
|
||||
PROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id',
|
||||
PROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message',
|
||||
PROPERTY_ACTORTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',
|
||||
PROPERTY_ACTORID: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',
|
||||
PROPERTY_ISUNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',
|
||||
PROPERTY_OBJECTID: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',
|
||||
PROPERTY_OBJECTTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',
|
||||
PROPERTY_ACTORDISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',
|
||||
PROPERTY_CREATIONDATETIME: '{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',
|
||||
PROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'
|
||||
});
|
||||
|
||||
/**
|
||||
* @class OCA.Comments.CommentModel
|
||||
* @classdesc
|
||||
*
|
||||
* Comment
|
||||
*
|
||||
*/
|
||||
var CommentModel = OC.Backbone.Model.extend(
|
||||
/** @lends OCA.Comments.CommentModel.prototype */ {
|
||||
sync: OC.Backbone.davSync,
|
||||
|
||||
defaults: {
|
||||
actorType: 'users',
|
||||
objectType: 'files'
|
||||
},
|
||||
|
||||
davProperties: {
|
||||
'id': OC.Files.Client.PROPERTY_FILEID,
|
||||
'message': OC.Files.Client.PROPERTY_MESSAGE,
|
||||
'actorType': OC.Files.Client.PROPERTY_ACTORTYPE,
|
||||
'actorId': OC.Files.Client.PROPERTY_ACTORID,
|
||||
'actorDisplayName': OC.Files.Client.PROPERTY_ACTORDISPLAYNAME,
|
||||
'creationDateTime': OC.Files.Client.PROPERTY_CREATIONDATETIME,
|
||||
'objectType': OC.Files.Client.PROPERTY_OBJECTTYPE,
|
||||
'objectId': OC.Files.Client.PROPERTY_OBJECTID,
|
||||
'isUnread': OC.Files.Client.PROPERTY_ISUNREAD,
|
||||
'mentions': OC.Files.Client.PROPERTY_MENTIONS
|
||||
},
|
||||
|
||||
parse: function(data) {
|
||||
return {
|
||||
id: data.id,
|
||||
message: data.message,
|
||||
actorType: data.actorType,
|
||||
actorId: data.actorId,
|
||||
actorDisplayName: data.actorDisplayName,
|
||||
creationDateTime: data.creationDateTime,
|
||||
objectType: data.objectType,
|
||||
objectId: data.objectId,
|
||||
isUnread: (data.isUnread === 'true'),
|
||||
mentions: this._parseMentions(data.mentions)
|
||||
};
|
||||
},
|
||||
|
||||
_parseMentions: function(mentions) {
|
||||
if(_.isUndefined(mentions)) {
|
||||
return {};
|
||||
}
|
||||
var result = {};
|
||||
for(var i in mentions) {
|
||||
var mention = mentions[i];
|
||||
if(_.isUndefined(mention.localName) || mention.localName !== 'mention') {
|
||||
continue;
|
||||
}
|
||||
result[i] = {};
|
||||
for (var child = mention.firstChild; child; child = child.nextSibling) {
|
||||
if(_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {
|
||||
continue;
|
||||
}
|
||||
result[i][child.localName] = child.textContent;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
||||
OCA.Comments.CommentModel = CommentModel;
|
||||
})(OC, OCA);
|
||||
@@ -1,526 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global Handlebars, escapeHTML */
|
||||
|
||||
(function(OC, OCA) {
|
||||
var TEMPLATE =
|
||||
'<ul class="comments">' +
|
||||
'</ul>' +
|
||||
'<div class="emptycontent hidden"><div class="icon-comment"></div>' +
|
||||
'<p>{{emptyResultLabel}}</p></div>' +
|
||||
'<input type="button" class="showMore hidden" value="{{moreLabel}}"' +
|
||||
' name="show-more" id="show-more" />' +
|
||||
'<div class="loading hidden" style="height: 50px"></div>';
|
||||
|
||||
var EDIT_COMMENT_TEMPLATE =
|
||||
'<div class="newCommentRow comment" data-id="{{id}}">' +
|
||||
' <div class="authorRow">' +
|
||||
' <div class="avatar" data-username="{{actorId}}"></div>' +
|
||||
' <div class="author">{{actorDisplayName}}</div>' +
|
||||
'{{#if isEditMode}}' +
|
||||
' <a href="#" class="action delete icon icon-delete has-tooltip" title="{{deleteTooltip}}"></a>' +
|
||||
'{{/if}}' +
|
||||
' </div>' +
|
||||
' <form class="newCommentForm">' +
|
||||
' <textarea rows="1" class="message" placeholder="{{newMessagePlaceholder}}">{{message}}</textarea>' +
|
||||
' <input class="submit icon-confirm" type="submit" value="" />' +
|
||||
'{{#if isEditMode}}' +
|
||||
' <input class="cancel pull-right" type="button" value="{{cancelText}}" />' +
|
||||
'{{/if}}' +
|
||||
' <div class="submitLoading icon-loading-small hidden"></div>'+
|
||||
' </form>' +
|
||||
'</div>';
|
||||
|
||||
var COMMENT_TEMPLATE =
|
||||
'<li class="comment{{#if isUnread}} unread{{/if}}{{#if isLong}} collapsed{{/if}}" data-id="{{id}}">' +
|
||||
' <div class="authorRow">' +
|
||||
' <div class="avatar" {{#if actorId}}data-username="{{actorId}}"{{/if}}> </div>' +
|
||||
' <div class="author">{{actorDisplayName}}</div>' +
|
||||
'{{#if isUserAuthor}}' +
|
||||
' <a href="#" class="action edit icon icon-rename has-tooltip" title="{{editTooltip}}"></a>' +
|
||||
'{{/if}}' +
|
||||
' <div class="date has-tooltip live-relative-timestamp" data-timestamp="{{timestamp}}" title="{{altDate}}">{{date}}</div>' +
|
||||
' </div>' +
|
||||
' <div class="message">{{{formattedMessage}}}</div>' +
|
||||
'{{#if isLong}}' +
|
||||
' <div class="message-overlay"></div>' +
|
||||
'{{/if}}' +
|
||||
'</li>';
|
||||
|
||||
/**
|
||||
* @memberof OCA.Comments
|
||||
*/
|
||||
var CommentsTabView = OCA.Files.DetailTabView.extend(
|
||||
/** @lends OCA.Comments.CommentsTabView.prototype */ {
|
||||
id: 'commentsTabView',
|
||||
className: 'tab commentsTabView',
|
||||
|
||||
events: {
|
||||
'submit .newCommentForm': '_onSubmitComment',
|
||||
'click .showMore': '_onClickShowMore',
|
||||
'click .action.edit': '_onClickEditComment',
|
||||
'click .action.delete': '_onClickDeleteComment',
|
||||
'click .cancel': '_onClickCloseComment',
|
||||
'click .comment': '_onClickComment'
|
||||
},
|
||||
|
||||
_commentMaxLength: 1000,
|
||||
|
||||
initialize: function() {
|
||||
OCA.Files.DetailTabView.prototype.initialize.apply(this, arguments);
|
||||
this.collection = new OCA.Comments.CommentCollection();
|
||||
this.collection.on('request', this._onRequest, this);
|
||||
this.collection.on('sync', this._onEndRequest, this);
|
||||
this.collection.on('add', this._onAddModel, this);
|
||||
|
||||
this._commentMaxThreshold = this._commentMaxLength * 0.9;
|
||||
|
||||
// TODO: error handling
|
||||
_.bindAll(this, '_onTypeComment');
|
||||
},
|
||||
|
||||
template: function(params) {
|
||||
if (!this._template) {
|
||||
this._template = Handlebars.compile(TEMPLATE);
|
||||
}
|
||||
var currentUser = OC.getCurrentUser();
|
||||
return this._template(_.extend({
|
||||
actorId: currentUser.uid,
|
||||
actorDisplayName: currentUser.displayName
|
||||
}, params));
|
||||
},
|
||||
|
||||
editCommentTemplate: function(params) {
|
||||
if (!this._editCommentTemplate) {
|
||||
this._editCommentTemplate = Handlebars.compile(EDIT_COMMENT_TEMPLATE);
|
||||
}
|
||||
var currentUser = OC.getCurrentUser();
|
||||
return this._editCommentTemplate(_.extend({
|
||||
actorId: currentUser.uid,
|
||||
actorDisplayName: currentUser.displayName,
|
||||
newMessagePlaceholder: t('comments', 'New comment …'),
|
||||
deleteTooltip: t('comments', 'Delete comment'),
|
||||
submitText: t('comments', 'Post'),
|
||||
cancelText: t('comments', 'Cancel')
|
||||
}, params));
|
||||
},
|
||||
|
||||
commentTemplate: function(params) {
|
||||
if (!this._commentTemplate) {
|
||||
this._commentTemplate = Handlebars.compile(COMMENT_TEMPLATE);
|
||||
}
|
||||
|
||||
params = _.extend({
|
||||
editTooltip: t('comments', 'Edit comment'),
|
||||
isUserAuthor: OC.getCurrentUser().uid === params.actorId,
|
||||
isLong: this._isLong(params.message)
|
||||
}, params);
|
||||
|
||||
if (params.actorType === 'deleted_users') {
|
||||
// makes the avatar a X
|
||||
params.actorId = null;
|
||||
params.actorDisplayName = t('comments', '[Deleted user]');
|
||||
}
|
||||
|
||||
return this._commentTemplate(params);
|
||||
},
|
||||
|
||||
getLabel: function() {
|
||||
return t('comments', 'Comments');
|
||||
},
|
||||
|
||||
setFileInfo: function(fileInfo) {
|
||||
if (fileInfo) {
|
||||
this.model = fileInfo;
|
||||
this.render();
|
||||
this.collection.setObjectId(fileInfo.id);
|
||||
// reset to first page
|
||||
this.collection.reset([], {silent: true});
|
||||
this.nextPage();
|
||||
} else {
|
||||
this.model = null;
|
||||
this.render();
|
||||
this.collection.reset();
|
||||
}
|
||||
},
|
||||
|
||||
render: function() {
|
||||
this.$el.html(this.template({
|
||||
emptyResultLabel: t('comments', 'No comments yet, start the conversation!'),
|
||||
moreLabel: t('comments', 'More comments …')
|
||||
}));
|
||||
this.$el.find('.comments').before(this.editCommentTemplate({}));
|
||||
this.$el.find('.has-tooltip').tooltip();
|
||||
this.$container = this.$el.find('ul.comments');
|
||||
this.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32);
|
||||
this.delegateEvents();
|
||||
this.$el.find('.message').on('keydown input change', this._onTypeComment);
|
||||
|
||||
autosize(this.$el.find('.newCommentRow textarea'))
|
||||
},
|
||||
|
||||
_formatItem: function(commentModel) {
|
||||
var timestamp = new Date(commentModel.get('creationDateTime')).getTime();
|
||||
var data = _.extend({
|
||||
timestamp: timestamp,
|
||||
date: OC.Util.relativeModifiedDate(timestamp),
|
||||
altDate: OC.Util.formatDate(timestamp),
|
||||
formattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions'))
|
||||
}, commentModel.attributes);
|
||||
return data;
|
||||
},
|
||||
|
||||
_toggleLoading: function(state) {
|
||||
this._loading = state;
|
||||
this.$el.find('.loading').toggleClass('hidden', !state);
|
||||
},
|
||||
|
||||
_onRequest: function(type) {
|
||||
if (type === 'REPORT') {
|
||||
this._toggleLoading(true);
|
||||
this.$el.find('.showMore').addClass('hidden');
|
||||
}
|
||||
},
|
||||
|
||||
_onEndRequest: function(type) {
|
||||
var fileInfoModel = this.model;
|
||||
this._toggleLoading(false);
|
||||
this.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length);
|
||||
this.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults());
|
||||
|
||||
if (type !== 'REPORT') {
|
||||
return;
|
||||
}
|
||||
|
||||
// find first unread comment
|
||||
var firstUnreadComment = this.collection.findWhere({isUnread: true});
|
||||
if (firstUnreadComment) {
|
||||
// update read marker
|
||||
this.collection.updateReadMarker(
|
||||
null,
|
||||
{
|
||||
success: function() {
|
||||
fileInfoModel.set('commentsUnread', 0);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
_onAddModel: function(model, collection, options) {
|
||||
var $el = $(this.commentTemplate(this._formatItem(model)));
|
||||
if (!_.isUndefined(options.at) && collection.length > 1) {
|
||||
this.$container.find('li').eq(options.at).before($el);
|
||||
} else {
|
||||
this.$container.append($el);
|
||||
}
|
||||
|
||||
this._postRenderItem($el);
|
||||
},
|
||||
|
||||
_postRenderItem: function($el) {
|
||||
$el.find('.has-tooltip').tooltip();
|
||||
$el.find('.avatar').each(function() {
|
||||
var $this = $(this);
|
||||
$this.avatar($this.attr('data-username'), 32);
|
||||
});
|
||||
|
||||
var username = $el.find('.avatar').data('username');
|
||||
if (username !== oc_current_user) {
|
||||
$el.find('.authorRow .avatar, .authorRow .author').contactsMenu(
|
||||
username, 0, $el.find('.authorRow'));
|
||||
}
|
||||
|
||||
var $message = $el.find('.message');
|
||||
this._postRenderMessage($message);
|
||||
},
|
||||
|
||||
_postRenderMessage: function($el) {
|
||||
$el.find('.avatar').each(function() {
|
||||
var avatar = $(this);
|
||||
var strong = $(this).next();
|
||||
var appendTo = $(this).parent();
|
||||
|
||||
$.merge(avatar, strong).contactsMenu(avatar.data('user'), 0, appendTo);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Convert a message to be displayed in HTML,
|
||||
* converts newlines to <br> tags.
|
||||
*/
|
||||
_formatMessage: function(message, mentions) {
|
||||
message = escapeHTML(message).replace(/\n/g, '<br/>');
|
||||
|
||||
for(var i in mentions) {
|
||||
var mention = '@' + mentions[i].mentionId;
|
||||
|
||||
var avatar = '<div class="avatar" '
|
||||
+ 'data-user="' + _.escape(mentions[i].mentionId) + '"'
|
||||
+' data-user-display-name="'
|
||||
+ _.escape(mentions[i].mentionDisplayName) + '"></div>';
|
||||
|
||||
// escape possible regex characters in the name
|
||||
mention = mention.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
var displayName = ''
|
||||
+ '<span class="avatar-name-wrapper">'
|
||||
+ avatar + ' <strong>'+ _.escape(mentions[i].mentionDisplayName)+'</strong>'
|
||||
+ '</span>';
|
||||
|
||||
// replace every mention either at the start of the input or after a whitespace
|
||||
// followed by a non-word character.
|
||||
message = message.replace(new RegExp("(^|\\s)(" + mention + ")\\b", 'g'),
|
||||
function(match, p1) {
|
||||
// to get number of whitespaces (0 vs 1) right
|
||||
return p1+displayName;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return message;
|
||||
},
|
||||
|
||||
nextPage: function() {
|
||||
if (this._loading || !this.collection.hasMoreResults()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.collection.fetchNext();
|
||||
},
|
||||
|
||||
_onClickEditComment: function(ev) {
|
||||
ev.preventDefault();
|
||||
var $comment = $(ev.target).closest('.comment');
|
||||
var commentId = $comment.data('id');
|
||||
var commentToEdit = this.collection.get(commentId);
|
||||
var $formRow = $(this.editCommentTemplate(_.extend({
|
||||
isEditMode: true,
|
||||
submitText: t('comments', 'Save')
|
||||
}, commentToEdit.attributes)));
|
||||
|
||||
$comment.addClass('hidden').removeClass('collapsed');
|
||||
// spawn form
|
||||
$comment.after($formRow);
|
||||
$formRow.data('commentEl', $comment);
|
||||
$formRow.find('textarea').on('keydown input change', this._onTypeComment);
|
||||
|
||||
// copy avatar element from original to avoid flickering
|
||||
$formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone());
|
||||
$formRow.find('.has-tooltip').tooltip();
|
||||
|
||||
// Enable autosize
|
||||
autosize($formRow.find('textarea'));
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_onTypeComment: function(ev) {
|
||||
var $field = $(ev.target);
|
||||
var len = $field.val().length;
|
||||
var $submitButton = $field.data('submitButtonEl');
|
||||
if (!$submitButton) {
|
||||
$submitButton = $field.closest('form').find('.submit');
|
||||
$field.data('submitButtonEl', $submitButton);
|
||||
}
|
||||
$field.tooltip('hide');
|
||||
if (len > this._commentMaxThreshold) {
|
||||
$field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', {count: len, max: this._commentMaxLength}));
|
||||
$field.tooltip({trigger: 'manual'});
|
||||
$field.tooltip('show');
|
||||
$field.addClass('error');
|
||||
}
|
||||
|
||||
var limitExceeded = (len > this._commentMaxLength);
|
||||
$field.toggleClass('error', limitExceeded);
|
||||
$submitButton.prop('disabled', limitExceeded);
|
||||
|
||||
//submits form on ctrl+Enter or cmd+Enter
|
||||
if (ev.keyCode === 13 && (ev.ctrlKey || ev.metaKey)) {
|
||||
$submitButton.click();
|
||||
}
|
||||
},
|
||||
|
||||
_onClickComment: function(ev) {
|
||||
var $row = $(ev.target);
|
||||
if (!$row.is('.comment')) {
|
||||
$row = $row.closest('.comment');
|
||||
}
|
||||
$row.removeClass('collapsed');
|
||||
},
|
||||
|
||||
_onClickCloseComment: function(ev) {
|
||||
ev.preventDefault();
|
||||
var $row = $(ev.target).closest('.comment');
|
||||
$row.data('commentEl').removeClass('hidden');
|
||||
$row.remove();
|
||||
return false;
|
||||
},
|
||||
|
||||
_onClickDeleteComment: function(ev) {
|
||||
ev.preventDefault();
|
||||
var $comment = $(ev.target).closest('.comment');
|
||||
var commentId = $comment.data('id');
|
||||
var $loading = $comment.find('.submitLoading');
|
||||
|
||||
$comment.addClass('disabled');
|
||||
$loading.removeClass('hidden');
|
||||
this.collection.get(commentId).destroy({
|
||||
success: function() {
|
||||
$comment.data('commentEl').remove();
|
||||
$comment.remove();
|
||||
},
|
||||
error: function() {
|
||||
$loading.addClass('hidden');
|
||||
$comment.removeClass('disabled');
|
||||
OC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with ID {id}', {id: commentId}));
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_onClickShowMore: function(ev) {
|
||||
ev.preventDefault();
|
||||
this.nextPage();
|
||||
},
|
||||
|
||||
/**
|
||||
* takes care of updating comment elements after submit (either new
|
||||
* comment or edit).
|
||||
*
|
||||
* @param {OC.Backbone.Model} model
|
||||
* @param {jQuery} $form
|
||||
* @param {string|undefined} commentId
|
||||
* @private
|
||||
*/
|
||||
_onSubmitSuccess: function(model, $form, commentId) {
|
||||
var self = this;
|
||||
var $submit = $form.find('.submit');
|
||||
var $loading = $form.find('.submitLoading');
|
||||
var $textArea = $form.find('.message');
|
||||
|
||||
model.fetch({
|
||||
success: function(model) {
|
||||
$submit.removeClass('hidden');
|
||||
$loading.addClass('hidden');
|
||||
var $target;
|
||||
|
||||
if(!_.isUndefined(commentId)) {
|
||||
var $row = $form.closest('.comment');
|
||||
$target = $row.data('commentEl');
|
||||
$target.removeClass('hidden');
|
||||
$row.remove();
|
||||
} else {
|
||||
$target = $('.commentsTabView .comments').find('li:first');
|
||||
$textArea.val('').prop('disabled', false);
|
||||
}
|
||||
|
||||
var $message = $target.find('.message');
|
||||
$message
|
||||
.html(self._formatMessage(model.get('message'), model.get('mentions')))
|
||||
.find('.avatar')
|
||||
.each(function () { $(this).avatar(); });
|
||||
|
||||
self._postRenderMessage($message);
|
||||
},
|
||||
error: function () {
|
||||
self._onSubmitError($form, commentId);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_onSubmitComment: function(e) {
|
||||
var self = this;
|
||||
var $form = $(e.target);
|
||||
var commentId = $form.closest('.comment').data('id');
|
||||
var currentUser = OC.getCurrentUser();
|
||||
var $submit = $form.find('.submit');
|
||||
var $loading = $form.find('.submitLoading');
|
||||
var $textArea = $form.find('.message');
|
||||
var message = $textArea.val().trim();
|
||||
e.preventDefault();
|
||||
|
||||
if (!message.length || message.length > this._commentMaxLength) {
|
||||
return;
|
||||
}
|
||||
|
||||
$textArea.prop('disabled', true);
|
||||
$submit.addClass('hidden');
|
||||
$loading.removeClass('hidden');
|
||||
|
||||
if (commentId) {
|
||||
// edit mode
|
||||
var comment = this.collection.get(commentId);
|
||||
comment.save({
|
||||
message: $textArea.val()
|
||||
}, {
|
||||
success: function(model) {
|
||||
self._onSubmitSuccess(model, $form, commentId);
|
||||
},
|
||||
error: function() {
|
||||
self._onSubmitError($form, commentId);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.collection.create({
|
||||
actorId: currentUser.uid,
|
||||
actorDisplayName: currentUser.displayName,
|
||||
actorType: 'users',
|
||||
verb: 'comment',
|
||||
message: $textArea.val(),
|
||||
creationDateTime: (new Date()).toUTCString()
|
||||
}, {
|
||||
at: 0,
|
||||
// wait for real creation before adding
|
||||
wait: true,
|
||||
success: function(model) {
|
||||
self._onSubmitSuccess(model, $form);
|
||||
},
|
||||
error: function() {
|
||||
self._onSubmitError($form);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
/**
|
||||
* takes care of updating the UI after an error on submit (either new
|
||||
* comment or edit).
|
||||
*
|
||||
* @param {jQuery} $form
|
||||
* @param {string|undefined} commentId
|
||||
* @private
|
||||
*/
|
||||
_onSubmitError: function($form, commentId) {
|
||||
$form.find('.submit').removeClass('hidden');
|
||||
$form.find('.submitLoading').addClass('hidden');
|
||||
$form.find('.message').prop('disabled', false);
|
||||
|
||||
if(!_.isUndefined(commentId)) {
|
||||
OC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', {id: commentId}), {type: 'error'});
|
||||
} else {
|
||||
OC.Notification.show(t('comments', 'Error occurred while posting comment'), {type: 'error'});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns whether the given message is long and needs
|
||||
* collapsing
|
||||
*/
|
||||
_isLong: function(message) {
|
||||
return message.length > 250 || (message.match(/\n/g) || []).length > 1;
|
||||
}
|
||||
});
|
||||
|
||||
OCA.Comments.CommentsTabView = CommentsTabView;
|
||||
})(OC, OCA);
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function(OC, OCA) {
|
||||
|
||||
_.extend(OC.Files.Client, {
|
||||
PROPERTY_READMARKER: '{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'
|
||||
});
|
||||
|
||||
/**
|
||||
* @class OCA.Comments.CommentSummaryModel
|
||||
* @classdesc
|
||||
*
|
||||
* Model containing summary information related to comments
|
||||
* like the read marker.
|
||||
*
|
||||
*/
|
||||
var CommentSummaryModel = OC.Backbone.Model.extend(
|
||||
/** @lends OCA.Comments.CommentSummaryModel.prototype */ {
|
||||
sync: OC.Backbone.davSync,
|
||||
|
||||
/**
|
||||
* Object type
|
||||
*
|
||||
* @type string
|
||||
*/
|
||||
_objectType: 'files',
|
||||
|
||||
/**
|
||||
* Object id
|
||||
*
|
||||
* @type string
|
||||
*/
|
||||
_objectId: null,
|
||||
|
||||
davProperties: {
|
||||
'readMarker': OC.Files.Client.PROPERTY_READMARKER
|
||||
},
|
||||
|
||||
/**
|
||||
* Initializes the summary model
|
||||
*
|
||||
* @param {string} [options.objectType] object type
|
||||
* @param {string} [options.objectId] object id
|
||||
*/
|
||||
initialize: function(attrs, options) {
|
||||
options = options || {};
|
||||
if (options.objectType) {
|
||||
this._objectType = options.objectType;
|
||||
}
|
||||
},
|
||||
|
||||
url: function() {
|
||||
return OC.linkToRemote('dav') + '/comments/' +
|
||||
encodeURIComponent(this._objectType) + '/' +
|
||||
encodeURIComponent(this.id) + '/';
|
||||
}
|
||||
});
|
||||
|
||||
OCA.Comments.CommentSummaryModel = CommentSummaryModel;
|
||||
})(OC, OCA);
|
||||
@@ -1,126 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global Handlebars */
|
||||
|
||||
(function() {
|
||||
|
||||
_.extend(OC.Files.Client, {
|
||||
PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'
|
||||
});
|
||||
|
||||
var TEMPLATE_COMMENTS_UNREAD =
|
||||
'<a class="action action-comment permanent" title="{{countMessage}}" href="#">' +
|
||||
'<img class="svg" src="{{iconUrl}}"/>' +
|
||||
'</a>';
|
||||
|
||||
OCA.Comments = _.extend({}, OCA.Comments);
|
||||
if (!OCA.Comments) {
|
||||
/**
|
||||
* @namespace
|
||||
*/
|
||||
OCA.Comments = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* @namespace
|
||||
*/
|
||||
OCA.Comments.FilesPlugin = {
|
||||
ignoreLists: [
|
||||
'files_trashbin',
|
||||
'files.public'
|
||||
],
|
||||
|
||||
_formatCommentCount: function(count) {
|
||||
if (!this._commentsUnreadTemplate) {
|
||||
this._commentsUnreadTemplate = Handlebars.compile(TEMPLATE_COMMENTS_UNREAD);
|
||||
}
|
||||
return this._commentsUnreadTemplate({
|
||||
count: count,
|
||||
countMessage: n('comments', '%n unread comment', '%n unread comments', count),
|
||||
iconUrl: OC.imagePath('core', 'actions/comment')
|
||||
});
|
||||
},
|
||||
|
||||
attach: function(fileList) {
|
||||
var self = this;
|
||||
if (this.ignoreLists.indexOf(fileList.id) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
fileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'));
|
||||
|
||||
var oldGetWebdavProperties = fileList._getWebdavProperties;
|
||||
fileList._getWebdavProperties = function() {
|
||||
var props = oldGetWebdavProperties.apply(this, arguments);
|
||||
props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD);
|
||||
return props;
|
||||
};
|
||||
|
||||
fileList.filesClient.addFileInfoParser(function(response) {
|
||||
var data = {};
|
||||
var props = response.propStat[0].properties;
|
||||
var commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];
|
||||
if (!_.isUndefined(commentsUnread) && commentsUnread !== '') {
|
||||
data.commentsUnread = parseInt(commentsUnread, 10);
|
||||
}
|
||||
return data;
|
||||
});
|
||||
|
||||
fileList.$el.addClass('has-comments');
|
||||
var oldCreateRow = fileList._createRow;
|
||||
fileList._createRow = function(fileData) {
|
||||
var $tr = oldCreateRow.apply(this, arguments);
|
||||
if (fileData.commentsUnread) {
|
||||
$tr.attr('data-comments-unread', fileData.commentsUnread);
|
||||
}
|
||||
return $tr;
|
||||
};
|
||||
|
||||
// register "comment" action for reading comments
|
||||
fileList.fileActions.registerAction({
|
||||
name: 'Comment',
|
||||
displayName: t('comments', 'Comment'),
|
||||
mime: 'all',
|
||||
permissions: OC.PERMISSION_READ,
|
||||
type: OCA.Files.FileActions.TYPE_INLINE,
|
||||
render: function(actionSpec, isDefault, context) {
|
||||
var $file = context.$file;
|
||||
var unreadComments = $file.data('comments-unread');
|
||||
if (unreadComments) {
|
||||
var $actionLink = $(self._formatCommentCount(unreadComments));
|
||||
context.$file.find('a.name>span.fileactions').append($actionLink);
|
||||
return $actionLink;
|
||||
}
|
||||
return '';
|
||||
},
|
||||
actionHandler: function(fileName, context) {
|
||||
context.$file.find('.action-comment').tooltip('hide');
|
||||
// open sidebar in comments section
|
||||
context.fileList.showDetailsView(fileName, 'commentsTabView');
|
||||
}
|
||||
});
|
||||
|
||||
// add attribute to "elementToFile"
|
||||
var oldElementToFile = fileList.elementToFile;
|
||||
fileList.elementToFile = function($el) {
|
||||
var fileInfo = oldElementToFile.apply(this, arguments);
|
||||
var commentsUnread = $el.data('comments-unread');
|
||||
if (commentsUnread) {
|
||||
fileInfo.commentsUnread = commentsUnread;
|
||||
}
|
||||
return fileInfo;
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
OC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin);
|
||||
@@ -1,9 +0,0 @@
|
||||
[
|
||||
"app.js",
|
||||
"commentmodel.js",
|
||||
"commentcollection.js",
|
||||
"commentsummarymodel.js",
|
||||
"commentstabview.js",
|
||||
"filesplugin.js",
|
||||
"activitytabviewplugin.js"
|
||||
]
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Wysig kommentaar",
|
||||
"Delete comment" : "Skrap kommentaar",
|
||||
"New comment …" : "Nuwe kommentaar…",
|
||||
"Post" : "Plaas",
|
||||
"Cancel" : "Kanselleer",
|
||||
"[Deleted user]" : "[Geskrapte gebruiker]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
|
||||
"More comments …" : "Nog kommentare …",
|
||||
"Save" : "Bewaar",
|
||||
"Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is",
|
||||
"Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is",
|
||||
"Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"],
|
||||
"Comment" : "Kommentaar",
|
||||
"You commented" : "U het kommentaar gelewer",
|
||||
"%1$s commented" : "%1$s het kommentaar gelewer",
|
||||
"{author} commented" : "{outeur} het kommentaar gelewer",
|
||||
"You commented on %1$s" : "U het op %1$s kommentaar gelewer",
|
||||
"You commented on {file}" : "U het op {lêer} kommentaar gelewer",
|
||||
"%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer",
|
||||
"{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Jy was genoem op “{lêer}”, in die kommentaar van 'n gebruiker wat intussen geskrap is.",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
|
||||
"Unknown user" : "Onbekende gebruiker",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Jy was genoem op \"%s\", in die kommentaar van 'n gebruiker wat intussen geskrap is."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Wysig kommentaar",
|
||||
"Delete comment" : "Skrap kommentaar",
|
||||
"New comment …" : "Nuwe kommentaar…",
|
||||
"Post" : "Plaas",
|
||||
"Cancel" : "Kanselleer",
|
||||
"[Deleted user]" : "[Geskrapte gebruiker]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
|
||||
"More comments …" : "Nog kommentare …",
|
||||
"Save" : "Bewaar",
|
||||
"Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is",
|
||||
"Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is",
|
||||
"Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"],
|
||||
"Comment" : "Kommentaar",
|
||||
"You commented" : "U het kommentaar gelewer",
|
||||
"%1$s commented" : "%1$s het kommentaar gelewer",
|
||||
"{author} commented" : "{outeur} het kommentaar gelewer",
|
||||
"You commented on %1$s" : "U het op %1$s kommentaar gelewer",
|
||||
"You commented on {file}" : "U het op {lêer} kommentaar gelewer",
|
||||
"%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer",
|
||||
"{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Jy was genoem op “{lêer}”, in die kommentaar van 'n gebruiker wat intussen geskrap is.",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
|
||||
"Unknown user" : "Onbekende gebruiker",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Jy was genoem op \"%s\", in die kommentaar van 'n gebruiker wat intussen geskrap is."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "Kanselleer"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,4 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "Kanselleer"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "تعديل التعليق",
|
||||
"Delete comment" : "حذف التعليق",
|
||||
"New comment …" : "تعليق جديد",
|
||||
"Post" : "ارسال",
|
||||
"Cancel" : "إلغاء",
|
||||
"[Deleted user]" : "[مستخدم محذوف]",
|
||||
"Comments" : "تعليقات",
|
||||
"No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
|
||||
"More comments …" : "مزيد من التعليقات...",
|
||||
"Save" : "حفظ",
|
||||
"Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}",
|
||||
"Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}",
|
||||
"Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق",
|
||||
"Comment" : "تعليق",
|
||||
"You commented" : "قمت بكتابة تعليق",
|
||||
"%1$s commented" : "%1$s كتب تعليق",
|
||||
"You commented on {file}" : "علقت على {file}",
|
||||
"%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s",
|
||||
"{author} commented on {file}" : "{author} علّق على {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات",
|
||||
"Unknown user" : "مستخدم غير معروف"
|
||||
},
|
||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
||||
@@ -1,24 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "تعديل التعليق",
|
||||
"Delete comment" : "حذف التعليق",
|
||||
"New comment …" : "تعليق جديد",
|
||||
"Post" : "ارسال",
|
||||
"Cancel" : "إلغاء",
|
||||
"[Deleted user]" : "[مستخدم محذوف]",
|
||||
"Comments" : "تعليقات",
|
||||
"No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
|
||||
"More comments …" : "مزيد من التعليقات...",
|
||||
"Save" : "حفظ",
|
||||
"Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}",
|
||||
"Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}",
|
||||
"Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق",
|
||||
"Comment" : "تعليق",
|
||||
"You commented" : "قمت بكتابة تعليق",
|
||||
"%1$s commented" : "%1$s كتب تعليق",
|
||||
"You commented on {file}" : "علقت على {file}",
|
||||
"%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s",
|
||||
"{author} commented on {file}" : "{author} علّق على {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات",
|
||||
"Unknown user" : "مستخدم غير معروف"
|
||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentariu",
|
||||
"Delete comment" : "Desaniciar comentariu",
|
||||
"New comment …" : "Comentariu nuevu...",
|
||||
"Post" : "Espublizar",
|
||||
"Cancel" : "Encaboxar",
|
||||
"[Deleted user]" : "[Usuariu desaniciáu]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!",
|
||||
"More comments …" : "Más comentarios...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}",
|
||||
"Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"],
|
||||
"Comment" : "Comentariu",
|
||||
"You commented" : "Comentesti",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Comentesti en %1$s",
|
||||
"You commented on {file}" : "Comentesti en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{autor} comentó en {ficheru}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»",
|
||||
"Unknown user" : "Usuariu desconocíu",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,31 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentariu",
|
||||
"Delete comment" : "Desaniciar comentariu",
|
||||
"New comment …" : "Comentariu nuevu...",
|
||||
"Post" : "Espublizar",
|
||||
"Cancel" : "Encaboxar",
|
||||
"[Deleted user]" : "[Usuariu desaniciáu]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!",
|
||||
"More comments …" : "Más comentarios...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}",
|
||||
"Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"],
|
||||
"Comment" : "Comentariu",
|
||||
"You commented" : "Comentesti",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Comentesti en %1$s",
|
||||
"You commented on {file}" : "Comentesti en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{autor} comentó en {ficheru}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»",
|
||||
"Unknown user" : "Usuariu desconocíu",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "Dayandır",
|
||||
"Save" : "Saxla",
|
||||
"Comment" : "Komentariya"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,6 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "Dayandır",
|
||||
"Save" : "Saxla",
|
||||
"Comment" : "Komentariya"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Редактирай коментра",
|
||||
"Delete comment" : "Изтрий коментар",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
"[Deleted user]" : "[Изтрит потребител]",
|
||||
"Comments" : "Коментари",
|
||||
"No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
|
||||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
|
||||
"Comment" : "Коментар",
|
||||
"You commented" : "Вие коментирахте",
|
||||
"%1$s commented" : "%1$s коментира",
|
||||
"{author} commented" : "{author} коментира",
|
||||
"You commented on %1$s" : "Ти коментира за %1$s",
|
||||
"You commented on {file}" : "Ти коментира за {file}",
|
||||
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
|
||||
"{author} commented on {file}" : "{author} коментира за {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
|
||||
"Unknown user" : "Непознат потребител",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,33 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Редактирай коментра",
|
||||
"Delete comment" : "Изтрий коментар",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
"[Deleted user]" : "[Изтрит потребител]",
|
||||
"Comments" : "Коментари",
|
||||
"No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
|
||||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
|
||||
"Comment" : "Коментар",
|
||||
"You commented" : "Вие коментирахте",
|
||||
"%1$s commented" : "%1$s коментира",
|
||||
"{author} commented" : "{author} коментира",
|
||||
"You commented on %1$s" : "Ти коментира за %1$s",
|
||||
"You commented on {file}" : "Ти коментира за {file}",
|
||||
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
|
||||
"{author} commented on {file}" : "{author} коментира за {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{file}”, в коментар от потребител, който вече е изтрит",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
|
||||
"Unknown user" : "Непознат потребител",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Бяхте споменат/а на “%s”, в коментар от потребител, който вече е изтрит"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Comments" : "Коментари",
|
||||
"Unknown user" : "Непознат потребител",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Delete comment" : "Изтрий коментар",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
"Edit comment" : "Редактирай коментра",
|
||||
"[Deleted user]" : "[Изтрит потребител]",
|
||||
"No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
|
||||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
|
||||
"Comment" : "Коментар",
|
||||
"You commented" : "Вие коментирахте",
|
||||
"%1$s commented" : "%1$s коментира",
|
||||
"{author} commented" : "{author} коментира",
|
||||
"You commented on %1$s" : "Ти коментира за %1$s",
|
||||
"You commented on {file}" : "Ти коментира за {file}",
|
||||
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
|
||||
"{author} commented on {file}" : "{author} коментира за {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
|
||||
"Type in a new comment..." : "Напиши нов коментар...",
|
||||
"No other comments available" : "Няма други коментари",
|
||||
"More comments..." : "Още коментари...",
|
||||
"{count} unread comments" : "{count} непрочетени коментари",
|
||||
"You commented on %2$s" : "Ти коментира за %2$s"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,37 +0,0 @@
|
||||
{ "translations": {
|
||||
"Comments" : "Коментари",
|
||||
"Unknown user" : "Непознат потребител",
|
||||
"New comment …" : "Нов коментар...",
|
||||
"Delete comment" : "Изтрий коментар",
|
||||
"Post" : "Публикация",
|
||||
"Cancel" : "Отказ",
|
||||
"Edit comment" : "Редактирай коментра",
|
||||
"[Deleted user]" : "[Изтрит потребител]",
|
||||
"No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
|
||||
"More comments …" : "Още коментари...",
|
||||
"Save" : "Запазване",
|
||||
"Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
|
||||
"Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
|
||||
"Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
|
||||
"Comment" : "Коментар",
|
||||
"You commented" : "Вие коментирахте",
|
||||
"%1$s commented" : "%1$s коментира",
|
||||
"{author} commented" : "{author} коментира",
|
||||
"You commented on %1$s" : "Ти коментира за %1$s",
|
||||
"You commented on {file}" : "Ти коментира за {file}",
|
||||
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
|
||||
"{author} commented on {file}" : "{author} коментира за {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
|
||||
"Type in a new comment..." : "Напиши нов коментар...",
|
||||
"No other comments available" : "Няма други коментари",
|
||||
"More comments..." : "Още коментари...",
|
||||
"{count} unread comments" : "{count} непрочетени коментари",
|
||||
"You commented on %2$s" : "Ти коментира за %2$s"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "বাতিল",
|
||||
"Save" : "সংরক্ষণ",
|
||||
"Comment" : "মন্তব্য"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,6 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "বাতিল",
|
||||
"Save" : "সংরক্ষণ",
|
||||
"Comment" : "মন্তব্য"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "বাতিল করা",
|
||||
"Save" : "সেভ"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,5 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "বাতিল করা",
|
||||
"Save" : "সেভ"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "Odustani",
|
||||
"Save" : "Spremi",
|
||||
"Comment" : "Komentar"
|
||||
},
|
||||
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
|
||||
@@ -1,6 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "Odustani",
|
||||
"Save" : "Spremi",
|
||||
"Comment" : "Komentar"
|
||||
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentari",
|
||||
"Delete comment" : "Esborrar comentari",
|
||||
"New comment …" : "Nou comentari...",
|
||||
"Post" : "Publica",
|
||||
"Cancel" : "Cancel·la",
|
||||
"[Deleted user]" : "[usuari Esborrat]",
|
||||
"Comments" : "Comentaris",
|
||||
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
|
||||
"More comments …" : "Més comentaris...",
|
||||
"Save" : "Desa",
|
||||
"Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
|
||||
"Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
|
||||
"Comment" : "Comentari",
|
||||
"You commented" : "Heu comentat",
|
||||
"%1$s commented" : "%1$s ha comentat",
|
||||
"{author} commented" : "{author} ha comentat",
|
||||
"You commented on %1$s" : "Heu comentat a %1$s",
|
||||
"You commented on {file}" : "Heu comentat a {file}",
|
||||
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
|
||||
"{author} commented on {file}" : "{author} ha comentat a {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Has estat mencionat a \"{file}\" en un comentari d'un usuari que ja no existeix",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
|
||||
"Unknown user" : "Usuari desconegut",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Has estat mencionat a \"%s\" en un comentari d'un usuari que ja no existeix"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,33 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentari",
|
||||
"Delete comment" : "Esborrar comentari",
|
||||
"New comment …" : "Nou comentari...",
|
||||
"Post" : "Publica",
|
||||
"Cancel" : "Cancel·la",
|
||||
"[Deleted user]" : "[usuari Esborrat]",
|
||||
"Comments" : "Comentaris",
|
||||
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
|
||||
"More comments …" : "Més comentaris...",
|
||||
"Save" : "Desa",
|
||||
"Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
|
||||
"Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
|
||||
"Comment" : "Comentari",
|
||||
"You commented" : "Heu comentat",
|
||||
"%1$s commented" : "%1$s ha comentat",
|
||||
"{author} commented" : "{author} ha comentat",
|
||||
"You commented on %1$s" : "Heu comentat a %1$s",
|
||||
"You commented on {file}" : "Heu comentat a {file}",
|
||||
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
|
||||
"{author} commented on {file}" : "{author} ha comentat a {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Has estat mencionat a \"{file}\" en un comentari d'un usuari que ja no existeix",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
|
||||
"Unknown user" : "Usuari desconegut",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Has estat mencionat a \"%s\" en un comentari d'un usuari que ja no existeix"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"New comment …" : "Nový komentář…",
|
||||
"Post" : "Zveřejnit",
|
||||
"Cancel" : "Storno",
|
||||
"[Deleted user]" : "[Smazaný uživatel]",
|
||||
"Comments" : "Komentáře",
|
||||
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
|
||||
"More comments …" : "Více komentářů…",
|
||||
"Save" : "Uložit",
|
||||
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Došlo k chybě při načítání komentáře s ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
|
||||
"Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtených komentářů"],
|
||||
"Comment" : "Komentář",
|
||||
"You commented" : "Okomentovali jste",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentovali jste %1$s",
|
||||
"You commented on {file}" : "Okomentovali jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“",
|
||||
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
|
||||
"Unknown user" : "Neznámý uživatel",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Nyní) už smazaný uživatel vás zmínil v komentáři na „%s“.",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní už smazaný uživatel vás zmínil v komentáři u „{file}“",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v „%s“, v komentáři od uživatele, který byl později smazán"
|
||||
},
|
||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||
@@ -1,35 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"New comment …" : "Nový komentář…",
|
||||
"Post" : "Zveřejnit",
|
||||
"Cancel" : "Storno",
|
||||
"[Deleted user]" : "[Smazaný uživatel]",
|
||||
"Comments" : "Komentáře",
|
||||
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
|
||||
"More comments …" : "Více komentářů…",
|
||||
"Save" : "Uložit",
|
||||
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Došlo k chybě při načítání komentáře s ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
|
||||
"Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtených komentářů"],
|
||||
"Comment" : "Komentář",
|
||||
"You commented" : "Okomentovali jste",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentovali jste %1$s",
|
||||
"You commented on {file}" : "Okomentovali jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“",
|
||||
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
|
||||
"Unknown user" : "Neznámý uživatel",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "(Nyní) už smazaný uživatel vás zmínil v komentáři na „%s“.",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní už smazaný uživatel vás zmínil v komentáři u „{file}“",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v „%s“, v komentáři od uživatele, který byl později smazán"
|
||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Comments" : "Komentáře",
|
||||
"Unknown user" : "Neznámý uživatel",
|
||||
"New comment …" : "Nový komentář ...",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"Post" : "Zveřejnit",
|
||||
"Cancel" : "Zrušit",
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"[Deleted user]" : "[Smazaný uživatel]",
|
||||
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
|
||||
"More comments …" : "Více komentářů ...",
|
||||
"Save" : "Uložit",
|
||||
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
|
||||
"Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
|
||||
"Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
|
||||
"Comment" : "Komentář",
|
||||
"You commented" : "Okomentoval(a) jsi",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentoval(a) jste %1$s",
|
||||
"You commented on {file}" : "Okomentoval(a) jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
|
||||
"Type in a new comment..." : "Zadat nový komentář...",
|
||||
"No other comments available" : "Nejsou dostupné žádné další komentáře",
|
||||
"More comments..." : "Více komentářů...",
|
||||
"{count} unread comments" : "{count} nepřečtených komentářů",
|
||||
"You commented on %2$s" : "Okomentoval(a) jsi %2$s"
|
||||
},
|
||||
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
|
||||
@@ -1,37 +0,0 @@
|
||||
{ "translations": {
|
||||
"Comments" : "Komentáře",
|
||||
"Unknown user" : "Neznámý uživatel",
|
||||
"New comment …" : "Nový komentář ...",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"Post" : "Zveřejnit",
|
||||
"Cancel" : "Zrušit",
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"[Deleted user]" : "[Smazaný uživatel]",
|
||||
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
|
||||
"More comments …" : "Více komentářů ...",
|
||||
"Save" : "Uložit",
|
||||
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
|
||||
"Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
|
||||
"Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
|
||||
"Comment" : "Komentář",
|
||||
"You commented" : "Okomentoval(a) jsi",
|
||||
"%1$s commented" : "%1$s okomentován",
|
||||
"{author} commented" : "{author} okomentoval(a)",
|
||||
"You commented on %1$s" : "Okomentoval(a) jste %1$s",
|
||||
"You commented on {file}" : "Okomentoval(a) jste {file}",
|
||||
"%1$s commented on %2$s" : "%1$s okomentoval %2$s",
|
||||
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
|
||||
"Type in a new comment..." : "Zadat nový komentář...",
|
||||
"No other comments available" : "Nejsou dostupné žádné další komentáře",
|
||||
"More comments..." : "Více komentářů...",
|
||||
"{count} unread comments" : "{count} nepřečtených komentářů",
|
||||
"You commented on %2$s" : "Okomentoval(a) jsi %2$s"
|
||||
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "Diddymu",
|
||||
"Save" : "Cadw"
|
||||
},
|
||||
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
|
||||
@@ -1,5 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "Diddymu",
|
||||
"Save" : "Cadw"
|
||||
},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Rediger kommentar",
|
||||
"Delete comment" : "Slet kommentar",
|
||||
"New comment …" : "Ny kommentar ...",
|
||||
"Post" : "Indlæg",
|
||||
"Cancel" : "Annullér",
|
||||
"[Deleted user]" : "[Slettet user]",
|
||||
"Comments" : "Kommentarer",
|
||||
"No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
|
||||
"More comments …" : "Flere kommentarer...",
|
||||
"Save" : "Gem",
|
||||
"Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}",
|
||||
"Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"],
|
||||
"Comment" : "Kommentér",
|
||||
"You commented" : "Du kommenterede",
|
||||
"%1$s commented" : "%1$s kommenterede",
|
||||
"{author} commented" : "{author} kommenterede",
|
||||
"You commented on %1$s" : "Du kommenterede %1$s",
|
||||
"You commented on {file}" : "Du kommenterede {file}",
|
||||
"%1$s commented on %2$s" : "%1$s kommenterede %2$s",
|
||||
"{author} commented on {file}" : "{author} kommenterede {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"",
|
||||
"Unknown user" : "Ukendt bruger",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der er blevet slettet efterfølgende"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,33 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Rediger kommentar",
|
||||
"Delete comment" : "Slet kommentar",
|
||||
"New comment …" : "Ny kommentar ...",
|
||||
"Post" : "Indlæg",
|
||||
"Cancel" : "Annullér",
|
||||
"[Deleted user]" : "[Slettet user]",
|
||||
"Comments" : "Kommentarer",
|
||||
"No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
|
||||
"More comments …" : "Flere kommentarer...",
|
||||
"Save" : "Gem",
|
||||
"Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}",
|
||||
"Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"],
|
||||
"Comment" : "Kommentér",
|
||||
"You commented" : "Du kommenterede",
|
||||
"%1$s commented" : "%1$s kommenterede",
|
||||
"{author} commented" : "{author} kommenterede",
|
||||
"You commented on %1$s" : "Du kommenterede %1$s",
|
||||
"You commented on {file}" : "Du kommenterede {file}",
|
||||
"%1$s commented on %2$s" : "%1$s kommenterede %2$s",
|
||||
"{author} commented on {file}" : "{author} kommenterede {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"",
|
||||
"Unknown user" : "Ukendt bruger",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der er blevet slettet efterfølgende"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"New comment …" : "Neuer Kommentar …",
|
||||
"Post" : "Speichern",
|
||||
"Cancel" : "Abbrechen",
|
||||
"[Deleted user]" : "[Gelöschter Benutzer]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
|
||||
"More comments …" : "Weitere Kommentare…",
|
||||
"Save" : "Speichern",
|
||||
"Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
|
||||
"Comment" : "Kommentar",
|
||||
"You commented" : "Von Dir kommentiert",
|
||||
"%1$s commented" : "%1$s kommentierte",
|
||||
"{author} commented" : "{author} kommentierte",
|
||||
"You commented on %1$s" : "Du hast %1$s kommentiert",
|
||||
"You commented on {file}" : "Du hast {file} kommentiert",
|
||||
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
|
||||
"{author} commented on {file}" : "{author} hat {file} kommentiert",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ",
|
||||
"Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
|
||||
"Unknown user" : "Unbekannter Benutzer",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,35 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"New comment …" : "Neuer Kommentar …",
|
||||
"Post" : "Speichern",
|
||||
"Cancel" : "Abbrechen",
|
||||
"[Deleted user]" : "[Gelöschter Benutzer]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
|
||||
"More comments …" : "Weitere Kommentare…",
|
||||
"Save" : "Speichern",
|
||||
"Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
|
||||
"Comment" : "Kommentar",
|
||||
"You commented" : "Von Dir kommentiert",
|
||||
"%1$s commented" : "%1$s kommentierte",
|
||||
"{author} commented" : "{author} kommentierte",
|
||||
"You commented on %1$s" : "Du hast %1$s kommentiert",
|
||||
"You commented on {file}" : "Du hast {file} kommentiert",
|
||||
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
|
||||
"{author} commented on {file}" : "{author} hat {file} kommentiert",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ",
|
||||
"Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
|
||||
"Unknown user" : "Unbekannter Benutzer",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Cancel" : "Abbrechen",
|
||||
"Save" : "Speichern"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,5 +0,0 @@
|
||||
{ "translations": {
|
||||
"Cancel" : "Abbrechen",
|
||||
"Save" : "Speichern"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"New comment …" : "Neuer Kommentar …",
|
||||
"Post" : "Speichern",
|
||||
"Cancel" : "Abbrechen",
|
||||
"[Deleted user]" : "[gelöschter Benutzer]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
|
||||
"More comments …" : "Weitere Kommentare …",
|
||||
"Save" : "Speichern",
|
||||
"Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
|
||||
"Comment" : "Kommentar",
|
||||
"You commented" : "Sie haben kommentiert",
|
||||
"%1$s commented" : "%1$s kommentierte",
|
||||
"{author} commented" : "{author} kommentierte",
|
||||
"You commented on %1$s" : "Sie haben %1$s kommentiert",
|
||||
"You commented on {file}" : "Sie haben {file} kommentiert",
|
||||
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
|
||||
"{author} commented on {file}" : "{author} hat {file} kommentiert",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
|
||||
"Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
|
||||
"Unknown user" : "Unbekannter Benutzer",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,35 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"New comment …" : "Neuer Kommentar …",
|
||||
"Post" : "Speichern",
|
||||
"Cancel" : "Abbrechen",
|
||||
"[Deleted user]" : "[gelöschter Benutzer]",
|
||||
"Comments" : "Kommentare",
|
||||
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
|
||||
"More comments …" : "Weitere Kommentare …",
|
||||
"Save" : "Speichern",
|
||||
"Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
|
||||
"Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
|
||||
"Comment" : "Kommentar",
|
||||
"You commented" : "Sie haben kommentiert",
|
||||
"%1$s commented" : "%1$s kommentierte",
|
||||
"{author} commented" : "{author} kommentierte",
|
||||
"You commented on %1$s" : "Sie haben %1$s kommentiert",
|
||||
"You commented on {file}" : "Sie haben {file} kommentiert",
|
||||
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
|
||||
"{author} commented on {file}" : "{author} hat {file} kommentiert",
|
||||
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
|
||||
"Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
|
||||
"Unknown user" : "Unbekannter Benutzer",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Επεξεργασία σχολίου",
|
||||
"Delete comment" : "Διαγραφή σχολίου",
|
||||
"New comment …" : "Νέο σχόλιο ...",
|
||||
"Post" : "Δημοσίευση",
|
||||
"Cancel" : "Ακύρωση",
|
||||
"[Deleted user]" : "[Διαγραμμένος χρήστης]",
|
||||
"Comments" : "Σχόλια",
|
||||
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
|
||||
"More comments …" : "Περισσότερα σχόλια ...",
|
||||
"Save" : "Αποθήκευση",
|
||||
"Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}",
|
||||
"Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"],
|
||||
"Comment" : "Σχόλιο",
|
||||
"You commented" : "Σχολιάσατε",
|
||||
"%1$s commented" : "%1$s σχολίασε",
|
||||
"{author} commented" : "Ο {author} σχολίασε",
|
||||
"You commented on %1$s" : "Σχολιάσατε στο %1$s",
|
||||
"You commented on {file}" : "Σχολιάσατε στο {file}",
|
||||
"%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s",
|
||||
"{author} commented on {file}" : "Ο {author} σχολίασε στο {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία",
|
||||
"{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”",
|
||||
"Unknown user" : "Άγνωστος χρήστης",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,31 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Επεξεργασία σχολίου",
|
||||
"Delete comment" : "Διαγραφή σχολίου",
|
||||
"New comment …" : "Νέο σχόλιο ...",
|
||||
"Post" : "Δημοσίευση",
|
||||
"Cancel" : "Ακύρωση",
|
||||
"[Deleted user]" : "[Διαγραμμένος χρήστης]",
|
||||
"Comments" : "Σχόλια",
|
||||
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
|
||||
"More comments …" : "Περισσότερα σχόλια ...",
|
||||
"Save" : "Αποθήκευση",
|
||||
"Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}",
|
||||
"Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"],
|
||||
"Comment" : "Σχόλιο",
|
||||
"You commented" : "Σχολιάσατε",
|
||||
"%1$s commented" : "%1$s σχολίασε",
|
||||
"{author} commented" : "Ο {author} σχολίασε",
|
||||
"You commented on %1$s" : "Σχολιάσατε στο %1$s",
|
||||
"You commented on {file}" : "Σχολιάσατε στο {file}",
|
||||
"%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s",
|
||||
"{author} commented on {file}" : "Ο {author} σχολίασε στο {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία",
|
||||
"{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”",
|
||||
"Unknown user" : "Άγνωστος χρήστης",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"New comment …" : "New comment …",
|
||||
"Post" : "Post",
|
||||
"Cancel" : "Cancel",
|
||||
"[Deleted user]" : "[Deleted user]",
|
||||
"Comments" : "Comments",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"More comments …" : "More comments …",
|
||||
"Save" : "Save",
|
||||
"Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Error occurred while retrieving comment with ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
|
||||
"Error occurred while posting comment" : "Error occurred while posting comment",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
|
||||
"Comment" : "Comment",
|
||||
"You commented" : "You commented",
|
||||
"%1$s commented" : "%1$s commented",
|
||||
"{author} commented" : "{author} commented",
|
||||
"You commented on %1$s" : "You commented on %1$s",
|
||||
"You commented on {file}" : "You commented on {file}",
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”",
|
||||
"Unknown user" : "Unknown user",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"New comment …" : "New comment …",
|
||||
"Post" : "Post",
|
||||
"Cancel" : "Cancel",
|
||||
"[Deleted user]" : "[Deleted user]",
|
||||
"Comments" : "Comments",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"More comments …" : "More comments …",
|
||||
"Save" : "Save",
|
||||
"Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Error occurred while retrieving comment with ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
|
||||
"Error occurred while posting comment" : "Error occurred while posting comment",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
|
||||
"Comment" : "Comment",
|
||||
"You commented" : "You commented",
|
||||
"%1$s commented" : "%1$s commented",
|
||||
"{author} commented" : "{author} commented",
|
||||
"You commented on %1$s" : "You commented on %1$s",
|
||||
"You commented on {file}" : "You commented on {file}",
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”",
|
||||
"Unknown user" : "Unknown user",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Type in a new comment..." : "Tajpu novan komenton...",
|
||||
"Delete comment" : "Forigi komenton",
|
||||
"Post" : "Afiŝi",
|
||||
"Cancel" : "Nuligi",
|
||||
"Edit comment" : "Redakti komenton",
|
||||
"[Deleted user]" : "[Forigita uzanto]",
|
||||
"Comments" : "Komentoj",
|
||||
"No other comments available" : "Neniu alia komento disponeblas",
|
||||
"More comments..." : "Pli da komentoj...",
|
||||
"Save" : "Konservi",
|
||||
"Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
|
||||
"{count} unread comments" : "{count} nelegitaj komentoj",
|
||||
"Comment" : "Komento",
|
||||
"%1$s commented" : "%1$s komentis",
|
||||
"%1$s commented on %2$s" : "%1$s komentis %2$s"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,18 +0,0 @@
|
||||
{ "translations": {
|
||||
"Type in a new comment..." : "Tajpu novan komenton...",
|
||||
"Delete comment" : "Forigi komenton",
|
||||
"Post" : "Afiŝi",
|
||||
"Cancel" : "Nuligi",
|
||||
"Edit comment" : "Redakti komenton",
|
||||
"[Deleted user]" : "[Forigita uzanto]",
|
||||
"Comments" : "Komentoj",
|
||||
"No other comments available" : "Neniu alia komento disponeblas",
|
||||
"More comments..." : "Pli da komentoj...",
|
||||
"Save" : "Konservi",
|
||||
"Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
|
||||
"{count} unread comments" : "{count} nelegitaj komentoj",
|
||||
"Comment" : "Komento",
|
||||
"%1$s commented" : "%1$s komentis",
|
||||
"%1$s commented on %2$s" : "%1$s komentis %2$s"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Nuevo comentario",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario eliminado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se ha producido un error al obtener el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}",
|
||||
"Error occurred while posting comment" : "Se ha producido un error al enviar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"],
|
||||
"Comment" : "Comentar",
|
||||
"You commented" : "Has comentado",
|
||||
"%1$s commented" : "%1$s comentados",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Has comentado en %1$s",
|
||||
"You commented on {file}" : "Has comentado en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,35 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Nuevo comentario",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario eliminado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se ha producido un error al obtener el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}",
|
||||
"Error occurred while posting comment" : "Se ha producido un error al enviar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"],
|
||||
"Comment" : "Comentar",
|
||||
"You commented" : "Has comentado",
|
||||
"%1$s commented" : "%1$s comentados",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Has comentado en %1$s",
|
||||
"You commented on {file}" : "Has comentado en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,33 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Nuevo comentario ...",
|
||||
"Post" : "Post",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}",
|
||||
"Error occurred while posting comment" : "Se ha producido un error al publicar un comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentar",
|
||||
"You commented" : "Ud. ha comentado",
|
||||
"%1$s commented" : "%1$s comentados",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Ud. ah comentado en %1$s",
|
||||
"You commented on {file}" : "Ud. ha comentado en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,31 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Nuevo comentario ...",
|
||||
"Post" : "Post",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}",
|
||||
"Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}",
|
||||
"Error occurred while posting comment" : "Se ha producido un error al publicar un comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentar",
|
||||
"You commented" : "Ud. ha comentado",
|
||||
"%1$s commented" : "%1$s comentados",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Ud. ah comentado en %1$s",
|
||||
"You commented on {file}" : "Ud. ha comentado en {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,34 +0,0 @@
|
||||
{ "translations": {
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"New comment …" : "Comentario nuevo ...",
|
||||
"Post" : "Publicar",
|
||||
"Cancel" : "Cancelar",
|
||||
"[Deleted user]" : "[Usuario borrado]",
|
||||
"Comments" : "Comentarios",
|
||||
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
|
||||
"More comments …" : "Más comentarios ...",
|
||||
"Save" : "Guardar",
|
||||
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
|
||||
"Error occurred while retrieving comment with ID {id}" : "Se presentó un error al recuperar el comentario con ID {id}",
|
||||
"Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
|
||||
"Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
|
||||
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
|
||||
"Comment" : "Comentario",
|
||||
"You commented" : "Comentaste",
|
||||
"%1$s commented" : "%1$s comentó",
|
||||
"{author} commented" : "{author} comentó",
|
||||
"You commented on %1$s" : "Usted comentó en %1$s",
|
||||
"You commented on {file}" : "Hiciste un comentario de {file}",
|
||||
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
|
||||
"{author} commented on {file}" : "{author} comentó en {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
|
||||
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
|
||||
"{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
|
||||
"Unknown user" : "Usuario desconocido",
|
||||
"A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
|
||||
"A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”",
|
||||
"%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
|
||||
"You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user