Compare commits
853 commits
20220508.1
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e1515c1b84 | ||
![]() |
e99a16c489 | ||
![]() |
5c81c0d144 | ||
![]() |
2b6abc25d4 | ||
![]() |
c86fa13cd3 | ||
![]() |
eb9d9a00a0 | ||
![]() |
26222f0efc | ||
![]() |
11744f257e | ||
![]() |
fbdc08d133 | ||
![]() |
5e2f007ed5 | ||
![]() |
fafdf876f8 | ||
![]() |
e2499bb981 | ||
![]() |
b5d9b7cc15 | ||
![]() |
bd0d5d3cda | ||
![]() |
96bac06cf6 | ||
![]() |
ccfcfc4232 | ||
![]() |
5159c8b8e0 | ||
![]() |
3010ed8c42 | ||
![]() |
59967e28e0 | ||
![]() |
b64c634090 | ||
![]() |
a333233418 | ||
![]() |
065435d1dd | ||
![]() |
82b57f2f40 | ||
![]() |
9f798aae51 | ||
![]() |
db08605c3e | ||
![]() |
0b51685ac2 | ||
![]() |
a8a313170b | ||
![]() |
9c04c5f971 | ||
![]() |
d6525285a2 | ||
![]() |
feec4b7160 | ||
![]() |
87eadebd85 | ||
![]() |
e8c48891ad | ||
![]() |
6541b2bf5b | ||
![]() |
b98c007113 | ||
![]() |
3442d08140 | ||
![]() |
5f35c9d8b5 | ||
![]() |
a30c0df76c | ||
![]() |
dbfc617615 | ||
![]() |
bcf3781022 | ||
![]() |
a2d0ee16a9 | ||
![]() |
a942b95763 | ||
![]() |
4b9692666e | ||
![]() |
7dd2b3af0a | ||
![]() |
783658994b | ||
![]() |
1b30324722 | ||
![]() |
5c1366668f | ||
![]() |
d6ca049f5e | ||
![]() |
1b295cf13b | ||
![]() |
1b47cb6af4 | ||
![]() |
b9de68d59c | ||
![]() |
8e1f1a13b6 | ||
![]() |
75560da8e6 | ||
![]() |
b671e25f0c | ||
![]() |
4f0d3c2fd0 | ||
![]() |
cb903ec37f | ||
![]() |
a3149deb8d | ||
![]() |
b4f623ae44 | ||
![]() |
cc72db8d29 | ||
![]() |
d786396836 | ||
![]() |
e2108444aa | ||
![]() |
ecc1e640e9 | ||
![]() |
4eee73dfc3 | ||
![]() |
5e3b26bcb1 | ||
![]() |
2e9f149c82 | ||
![]() |
247c414eb5 | ||
![]() |
9dc11cfa84 | ||
![]() |
805ca07d46 | ||
![]() |
22cf1f6c7c | ||
![]() |
e71f90ddd4 | ||
![]() |
574e09bc62 | ||
![]() |
94b492c968 | ||
![]() |
b40bac6ada | ||
![]() |
f957b60365 | ||
![]() |
15b89b3ece | ||
![]() |
e6df1416a4 | ||
![]() |
5230c55f9c | ||
![]() |
a62336c381 | ||
![]() |
26d0db86dc | ||
![]() |
a8e22e937c | ||
![]() |
e305782f72 | ||
![]() |
05bedc1c25 | ||
![]() |
d17f2542b9 | ||
![]() |
1b6f4f7892 | ||
![]() |
56a1be1287 | ||
![]() |
00a2a07198 | ||
![]() |
875577a7e3 | ||
![]() |
d158bf8fca | ||
![]() |
51ffcb6410 | ||
![]() |
625b2d0cf8 | ||
![]() |
f45d811f02 | ||
![]() |
a4d33000ce | ||
![]() |
97d81f95ce | ||
![]() |
4cd51a114c | ||
![]() |
e38de7753c | ||
![]() |
b2b508d08c | ||
![]() |
f35a60fed5 | ||
![]() |
5626becae7 | ||
![]() |
9916a2729c | ||
![]() |
24f8b677cf | ||
![]() |
9452c2fe0f | ||
![]() |
762f3acad3 | ||
![]() |
7221027151 | ||
![]() |
e85d0147d6 | ||
![]() |
8a23bea227 | ||
![]() |
a247742b84 | ||
![]() |
a7877adace | ||
![]() |
4c9cd99a95 | ||
![]() |
01e834eaed | ||
![]() |
f290498d47 | ||
![]() |
1253769da2 | ||
![]() |
77927ea6e9 | ||
![]() |
a2ce83f8f4 | ||
![]() |
f29d015dd1 | ||
![]() |
75a97d9499 | ||
![]() |
7e9371323c | ||
![]() |
a5704d99b9 | ||
![]() |
ec0ea66e2c | ||
![]() |
4e07a27020 | ||
![]() |
7f21bc79ff | ||
![]() |
47e146061c | ||
![]() |
8263af3bf2 | ||
![]() |
b8640b3615 | ||
![]() |
794a8470a3 | ||
![]() |
3151626297 | ||
![]() |
54cfd3ae3e | ||
![]() |
94eb3d8db8 | ||
![]() |
c238f822bb | ||
![]() |
0d988fb66c | ||
![]() |
570d6b7650 | ||
![]() |
3fb9541b87 | ||
![]() |
7b369f1708 | ||
![]() |
7ed5491bfb | ||
![]() |
5fd65373fc | ||
![]() |
3bcc4ab511 | ||
![]() |
06b9ab308e | ||
![]() |
af4f3d7848 | ||
![]() |
d2903cb71e | ||
![]() |
b218f96bce | ||
![]() |
3968216730 | ||
![]() |
d1f3f21089 | ||
![]() |
3affd55e55 | ||
![]() |
00fe9979dc | ||
![]() |
a0da7ed990 | ||
![]() |
4df17d0a30 | ||
![]() |
38d1f24ffb | ||
![]() |
49588649cf | ||
![]() |
785c95d98d | ||
![]() |
e2b33f6b1c | ||
![]() |
315b7f1a2a | ||
![]() |
b0e1f4acb7 | ||
![]() |
80f3317dbc | ||
![]() |
0686c7280d | ||
![]() |
2903f0309a | ||
![]() |
50f376f72d | ||
![]() |
45e1d8a427 | ||
![]() |
9bb8e12316 | ||
![]() |
ad9e67f5d7 | ||
![]() |
f48068a975 | ||
![]() |
cfd56463a6 | ||
![]() |
6dad642fa7 | ||
![]() |
cec62006a3 | ||
![]() |
24817297dc | ||
![]() |
80c4bb0d2e | ||
![]() |
73d2033acf | ||
![]() |
be43c2f1d5 | ||
![]() |
d211dde44b | ||
![]() |
6c09ebf7c8 | ||
![]() |
c705139cae | ||
![]() |
4b749ffd09 | ||
![]() |
bfc48ae4bb | ||
![]() |
f328c30466 | ||
![]() |
535d06b6f5 | ||
![]() |
32e7b2482b | ||
![]() |
c9ee28e9a7 | ||
![]() |
c205022b7b | ||
![]() |
e6468df376 | ||
![]() |
8a239c6795 | ||
![]() |
515e1d3c66 | ||
![]() |
fbc0ece19e | ||
![]() |
4d47314177 | ||
![]() |
e3ef91d4f2 | ||
![]() |
59ae06121f | ||
![]() |
b3993b723f | ||
![]() |
090214af03 | ||
![]() |
2a97654a34 | ||
![]() |
86cb084a76 | ||
![]() |
13759ed784 | ||
![]() |
1bc42f6c9d | ||
![]() |
7dd0876009 | ||
![]() |
c426105c52 | ||
![]() |
4bacdf1dc3 | ||
![]() |
74489dda22 | ||
![]() |
f59caf585a | ||
![]() |
97a75fb03e | ||
![]() |
3afcf7e368 | ||
![]() |
7f4543f0dc | ||
![]() |
5c1b529076 | ||
![]() |
4391964824 | ||
![]() |
3146ca0452 | ||
![]() |
ed4373f95a | ||
![]() |
6ffd766094 | ||
![]() |
5b93a3ca3c | ||
![]() |
2c460eb5b0 | ||
![]() |
c1fc1b4a71 | ||
![]() |
3aa680981c | ||
![]() |
eefcbed5eb | ||
![]() |
85f5a58d3c | ||
![]() |
0210f1cec0 | ||
![]() |
9e4c2d9e00 | ||
![]() |
4f0bae3be4 | ||
![]() |
3cabe244b9 | ||
![]() |
3053a8f8c6 | ||
![]() |
2699f7b9e8 | ||
![]() |
b5f47f1cf1 | ||
![]() |
aa322fcb12 | ||
![]() |
9d4a57f6dd | ||
![]() |
c01ed5a4f7 | ||
![]() |
5d8a9ac52f | ||
![]() |
b8f03a249d | ||
![]() |
cb89119ef4 | ||
![]() |
7a0c228d4f | ||
![]() |
168e50ad69 | ||
![]() |
5f8e739bc8 | ||
![]() |
c4aa95a138 | ||
![]() |
1848a10237 | ||
![]() |
bf013f7f18 | ||
![]() |
1dd05148d1 | ||
![]() |
c6dab07b51 | ||
![]() |
8c1ae75f23 | ||
![]() |
8b4dfa83db | ||
![]() |
455f08a257 | ||
![]() |
6c71b95e0f | ||
![]() |
834bc48589 | ||
![]() |
7883477ab6 | ||
![]() |
a30281839a | ||
![]() |
3c5992e26d | ||
![]() |
7c578c3c7a | ||
![]() |
cfde25b39e | ||
![]() |
3b54474b2a | ||
![]() |
1fd5a0aec4 | ||
![]() |
ef576dba70 | ||
![]() |
a812ecca3e | ||
![]() |
f0063b73ea | ||
![]() |
49401587cc | ||
![]() |
736f0ad4a0 | ||
![]() |
5bc23c35bf | ||
![]() |
f14371ac36 | ||
![]() |
cfc8076b23 | ||
![]() |
eb73b75194 | ||
![]() |
0015525048 | ||
![]() |
18298d3131 | ||
![]() |
fa89d768f2 | ||
![]() |
6d9ab8d3f5 | ||
![]() |
9eb86358ae | ||
![]() |
eafa51b6e3 | ||
![]() |
5160e13e8f | ||
![]() |
003f3150a3 | ||
![]() |
43b2e87f1c | ||
![]() |
c9bef69929 | ||
![]() |
e6116134c7 | ||
![]() |
70c857c379 | ||
![]() |
e73b8b0d46 | ||
![]() |
d1457f2105 | ||
![]() |
06a7c1dec5 | ||
![]() |
187e1f6f24 | ||
![]() |
f7c370a653 | ||
![]() |
22f17d797c | ||
![]() |
a1c375a7f7 | ||
![]() |
c19e421ac7 | ||
![]() |
d5811d5b76 | ||
![]() |
5adcb0002b | ||
![]() |
56b8ccb8d1 | ||
![]() |
45a6512fc7 | ||
![]() |
e3eebaf41e | ||
![]() |
ca60c3c740 | ||
![]() |
dabc7f84e4 | ||
![]() |
927859a476 | ||
![]() |
2d5f33812d | ||
![]() |
37c5d14438 | ||
![]() |
2927fc931d | ||
![]() |
9a74cb8a35 | ||
![]() |
cfcfe75fcf | ||
![]() |
d4787abb71 | ||
![]() |
b82979798d | ||
![]() |
dca2018056 | ||
![]() |
42774f9183 | ||
![]() |
ced3fec8e5 | ||
![]() |
aa2003c748 | ||
![]() |
868a3a16b6 | ||
![]() |
4898b22769 | ||
![]() |
40bf39a2dd | ||
![]() |
60158bdb26 | ||
![]() |
81ed9ddc73 | ||
![]() |
2033f905ba | ||
![]() |
dbc01b85fa | ||
![]() |
4261dd0e42 | ||
![]() |
3c93022020 | ||
![]() |
3c61d31bc5 | ||
![]() |
7000bf6329 | ||
![]() |
d075a0a518 | ||
![]() |
5cf8e52fa3 | ||
![]() |
1f7ef6353d | ||
![]() |
ea1542dc6f | ||
![]() |
f093edcdb2 | ||
![]() |
f5b42822fa | ||
![]() |
3069b8baeb | ||
![]() |
02c46a2f23 | ||
![]() |
13a9d645a7 | ||
![]() |
155846563c | ||
![]() |
a7e8562fd1 | ||
![]() |
e47eb5d406 | ||
![]() |
88fa688743 | ||
![]() |
322609d1ae | ||
![]() |
e3948b34c6 | ||
![]() |
1ac8f1eef6 | ||
![]() |
4fd0696bb6 | ||
![]() |
8b419931cb | ||
![]() |
f64d8d7c93 | ||
![]() |
2fcbe466a1 | ||
![]() |
7d0a88e6f0 | ||
![]() |
e488fb4a57 | ||
![]() |
2305068128 | ||
![]() |
72daabbd12 | ||
![]() |
dc858a2788 | ||
![]() |
e61a92d3d8 | ||
![]() |
2211d7d8eb | ||
![]() |
5e763375c2 | ||
![]() |
73f4f53996 | ||
![]() |
c70532d177 | ||
![]() |
6b16cc2bc2 | ||
![]() |
e57b0cf05f | ||
![]() |
dc6de3a392 | ||
![]() |
c679782a73 | ||
![]() |
779919c595 | ||
![]() |
5e21e13251 | ||
![]() |
da86e8e9ab | ||
![]() |
87a3172f9e | ||
![]() |
a5e22b346f | ||
![]() |
3079ea9084 | ||
![]() |
55f70de068 | ||
![]() |
5785a0ba1f | ||
![]() |
469af94fe6 | ||
![]() |
fd0328a92f | ||
![]() |
049c131264 | ||
![]() |
a1af9b5215 | ||
![]() |
da6be2bb72 | ||
![]() |
704b2f3937 | ||
![]() |
33408247f2 | ||
![]() |
2ea363ce1c | ||
![]() |
696de3ed9d | ||
![]() |
93edd1d979 | ||
![]() |
94eca06a09 | ||
![]() |
8ea8d28afd | ||
![]() |
5613f33a9d | ||
![]() |
273eb53e7a | ||
![]() |
449569e77b | ||
![]() |
d9b657df6a | ||
![]() |
34c3e5d95c | ||
![]() |
e565b9fd3c | ||
![]() |
e62d30f6bd | ||
![]() |
16bd83a564 | ||
![]() |
d0515bc711 | ||
![]() |
06cd50b032 | ||
![]() |
3d9fb80ccb | ||
![]() |
d40c64a072 | ||
![]() |
8eb2048f63 | ||
![]() |
16a0c4cba1 | ||
![]() |
185d0daa7f | ||
![]() |
98c6e69c18 | ||
![]() |
40003159af | ||
![]() |
dd1cd3c304 | ||
![]() |
13022be5f7 | ||
![]() |
da414df161 | ||
![]() |
be26761955 | ||
![]() |
1addbb43ac | ||
![]() |
7208279d2b | ||
![]() |
fcd6a383cb | ||
![]() |
f9655fd45d | ||
![]() |
bbdf14d96e | ||
![]() |
9c1dbdf4e5 | ||
![]() |
0691ae36f6 | ||
![]() |
02525cf6f9 | ||
![]() |
40cfe4a6b6 | ||
![]() |
86761ef9eb | ||
![]() |
57fc230bc5 | ||
![]() |
9b3c75e741 | ||
![]() |
1b83a1d7dc | ||
![]() |
4a0c09cab4 | ||
![]() |
ca580bfe65 | ||
![]() |
85f17622f3 | ||
![]() |
5c7f255c86 | ||
![]() |
660572fc25 | ||
![]() |
6c53ba3461 | ||
![]() |
65089a8dea | ||
![]() |
7db8934046 | ||
![]() |
0bf486fab5 | ||
![]() |
81bee0f6d0 | ||
![]() |
c72909f108 | ||
![]() |
b131fef734 | ||
![]() |
431c125c7c | ||
![]() |
9dc7e88487 | ||
![]() |
1a7b26ae05 | ||
![]() |
ce1a82fab4 | ||
![]() |
3c953f3355 | ||
![]() |
67bf7ecc9b | ||
![]() |
36fa46a25c | ||
![]() |
f229c8140c | ||
![]() |
f52b59cdba | ||
![]() |
0ae0c2290d | ||
![]() |
0b177ccfc9 | ||
![]() |
bc2815aeb3 | ||
![]() |
65867aacca | ||
![]() |
90361ae67a | ||
![]() |
fa82d218e0 | ||
![]() |
d2778fdb9f | ||
![]() |
2559ba302c | ||
![]() |
0e170d286e | ||
![]() |
164f393aef | ||
![]() |
6dd1ba763d | ||
![]() |
ba661b88f9 | ||
![]() |
0f660efae9 | ||
![]() |
180781a3fc | ||
![]() |
75c6e433f8 | ||
![]() |
0a7d4cfcc1 | ||
![]() |
2210050365 | ||
![]() |
7b752a0f28 | ||
![]() |
1586130893 | ||
![]() |
6de2263173 | ||
![]() |
04299e4e37 | ||
![]() |
52dd204a0a | ||
![]() |
af957cb189 | ||
![]() |
54c93b0825 | ||
![]() |
4bf6c0eabe | ||
![]() |
a70baec4c5 | ||
![]() |
afe9ff93b2 | ||
![]() |
da77b8fa0f | ||
![]() |
08f5fb97a2 | ||
![]() |
bac761111a | ||
![]() |
a1e6cba1e3 | ||
![]() |
9e98003664 | ||
![]() |
4ce3c32caa | ||
![]() |
2f9665136f | ||
![]() |
b52add3a3e | ||
![]() |
31369e74a1 | ||
![]() |
f9e329dee1 | ||
![]() |
83f1dd116b | ||
![]() |
d59a3c155a | ||
![]() |
7f82886d09 | ||
![]() |
a5799db39b | ||
![]() |
d452156cd8 | ||
![]() |
d911685f07 | ||
![]() |
8490a1700e | ||
![]() |
11bac1bf22 | ||
![]() |
0c554b53ef | ||
![]() |
de65775de0 | ||
![]() |
dffc801e34 | ||
![]() |
a524bf2280 | ||
![]() |
6aa4224c58 | ||
![]() |
a33401fef1 | ||
![]() |
bb33c508fe | ||
![]() |
ee38b24a47 | ||
![]() |
8b2eec6897 | ||
![]() |
779d44cb35 | ||
![]() |
eb85d2b66f | ||
![]() |
7b38751024 | ||
![]() |
6edc80b0ed | ||
![]() |
7f7b6b71d5 | ||
![]() |
764de49b2f | ||
![]() |
8842bb8bae | ||
![]() |
bd660e669a | ||
![]() |
df3399c1a8 | ||
![]() |
4f2142ace3 | ||
![]() |
59b05f74fe | ||
![]() |
cf37feec94 | ||
![]() |
b941ebdab3 | ||
![]() |
79ae99278c | ||
![]() |
d60a5ebbc8 | ||
![]() |
0b002ef0e0 | ||
![]() |
6127884fb0 | ||
![]() |
18e0be2348 | ||
![]() |
ff3348076d | ||
![]() |
5e86e642c1 | ||
![]() |
f6f19934cd | ||
![]() |
a98630e9c6 | ||
![]() |
e2e1fba7ae | ||
![]() |
7dfed8930e | ||
![]() |
5ebdeeaa60 | ||
![]() |
45cffb033e | ||
![]() |
8e30344e5e | ||
![]() |
f20ac777dd | ||
![]() |
c1177a2254 | ||
![]() |
e45d04dc18 | ||
![]() |
3aa741204a | ||
![]() |
97854ff6bb | ||
![]() |
c1137cd61b | ||
![]() |
2d3f50019a | ||
![]() |
b26f8a3ddc | ||
![]() |
4fb4a24711 | ||
![]() |
80c1554dc3 | ||
![]() |
9cdeed3bb2 | ||
![]() |
521bb48036 | ||
![]() |
7d7d9bb47e | ||
![]() |
4825d22d7f | ||
![]() |
0a2033a4ec | ||
![]() |
13506a6637 | ||
![]() |
39c19096e2 | ||
![]() |
b3c5ffa86a | ||
![]() |
c38c754cf4 | ||
![]() |
9185cf2276 | ||
![]() |
73be6ae907 | ||
![]() |
065aa431ba | ||
![]() |
31d17a2ae5 | ||
![]() |
54931a3a26 | ||
![]() |
90e56ac349 | ||
![]() |
d7a7c3c45c | ||
![]() |
301e663097 | ||
![]() |
d0e070d838 | ||
![]() |
06b14c1e09 | ||
![]() |
c797f19d30 | ||
![]() |
9b687c81b1 | ||
![]() |
06bb7020f9 | ||
![]() |
a2f528bad9 | ||
![]() |
d360b39298 | ||
![]() |
1e8ea6d428 | ||
![]() |
0a00364beb | ||
![]() |
7f0eb9650a | ||
![]() |
9aaafbd71b | ||
![]() |
3c48f05982 | ||
![]() |
3328cca421 | ||
![]() |
6664187766 | ||
![]() |
7fe251e951 | ||
![]() |
571a5e2b5e | ||
![]() |
94c1eaab11 | ||
![]() |
89faaa54c2 | ||
![]() |
7910a45d52 | ||
![]() |
4eba711ad1 | ||
![]() |
7293af046a | ||
![]() |
aee5e2a9dd | ||
![]() |
4dd9a4b4dd | ||
![]() |
6723fca78a | ||
![]() |
76f407d1db | ||
![]() |
153abc3c4c | ||
![]() |
4c77637d32 | ||
![]() |
c303949847 | ||
![]() |
b135914737 | ||
![]() |
470893a15c | ||
![]() |
af1aef0ec1 | ||
![]() |
645165adab | ||
![]() |
6e53618816 | ||
![]() |
bc94ca4c66 | ||
![]() |
9f63a7c568 | ||
![]() |
dc562998b3 | ||
![]() |
249c81914b | ||
![]() |
e8553ee7bf | ||
![]() |
dbc2a73fb9 | ||
![]() |
f7a0ebdf2a | ||
![]() |
9b745142ac | ||
![]() |
228e802c78 | ||
![]() |
1ab386dffd | ||
![]() |
92af6b0360 | ||
![]() |
de94e8bacb | ||
![]() |
f0630ddc4c | ||
![]() |
f7e8726d8b | ||
![]() |
6080ed7d35 | ||
![]() |
683aa02a23 | ||
![]() |
33e169dcdc | ||
![]() |
ae9d6873a6 | ||
![]() |
1b9f8a66b7 | ||
![]() |
5de0bda145 | ||
![]() |
31fcda37fa | ||
![]() |
8ac9dbf608 | ||
![]() |
854c205ffc | ||
![]() |
c62c9cbc89 | ||
![]() |
68a20d61ea | ||
![]() |
5d30abf1c8 | ||
![]() |
afe23fedbf | ||
![]() |
89bfcd01f7 | ||
![]() |
c552bca3f9 | ||
![]() |
d02eedbe25 | ||
![]() |
19ff764fe8 | ||
![]() |
e938a69938 | ||
![]() |
fca5bdd70f | ||
![]() |
7e4ef773ec | ||
![]() |
af1d79486c | ||
![]() |
98b5e4c48d | ||
![]() |
0fd36e6e40 | ||
![]() |
ec5affd42e | ||
![]() |
29893a180d | ||
![]() |
dbe9fa30b7 | ||
![]() |
95b0dfe717 | ||
![]() |
d820ff413e | ||
![]() |
7190b58a37 | ||
![]() |
64ed71df6b | ||
![]() |
3db69d21ec | ||
![]() |
68c1b109d0 | ||
![]() |
467806b037 | ||
![]() |
8c0f245909 | ||
![]() |
dbffc35163 | ||
![]() |
6957cb61d6 | ||
![]() |
12ff5a224d | ||
![]() |
621da24b6f | ||
![]() |
87f5459c40 | ||
![]() |
c3a2ac6e59 | ||
![]() |
bc67558276 | ||
![]() |
3b3b153bfc | ||
![]() |
6e6c3a7d31 | ||
![]() |
cb809c9f0d | ||
![]() |
98321a912b | ||
![]() |
65bb31f330 | ||
![]() |
002b304461 | ||
![]() |
1a43219cf4 | ||
![]() |
eb0f3f9bb5 | ||
![]() |
ab13c0e323 | ||
![]() |
6c7cacccf6 | ||
![]() |
be29fc66b2 | ||
![]() |
44fef3f35d | ||
![]() |
85b38d2d60 | ||
![]() |
bf9e22d836 | ||
![]() |
b979e18971 | ||
![]() |
d584a71b14 | ||
![]() |
6eca946cba | ||
![]() |
e1ca5d40dd | ||
![]() |
608483f0b0 | ||
![]() |
d5f8a2ae8e | ||
![]() |
a82d340a16 | ||
![]() |
71c4b2c384 | ||
![]() |
3767524018 | ||
![]() |
80d6b449d6 | ||
![]() |
fb2659e70e | ||
![]() |
785d11f32c | ||
![]() |
a2fc79e3c4 | ||
![]() |
47605d44c7 | ||
![]() |
deba37269d | ||
![]() |
913484bac8 | ||
![]() |
24df928fea | ||
![]() |
56a6f5447b | ||
![]() |
2a227e7f43 | ||
![]() |
26fa69a945 | ||
![]() |
aa0b84786c | ||
![]() |
a8ca416948 | ||
![]() |
9470172f6a | ||
![]() |
b2988e44ab | ||
![]() |
f29e90ff7b | ||
![]() |
07ade7a701 | ||
![]() |
19bb31f3ff | ||
![]() |
fce456c283 | ||
![]() |
c4c8f8b93f | ||
![]() |
d648efbd1c | ||
![]() |
2ba0fafaba | ||
![]() |
32acfc0b9e | ||
![]() |
e3e8466c05 | ||
![]() |
b29c4d1aab | ||
![]() |
16c634aa5d | ||
![]() |
862927bc45 | ||
![]() |
722b7334a3 | ||
![]() |
45a8950e4c | ||
![]() |
d84e0b52a7 | ||
![]() |
05695ce4ba | ||
![]() |
4d08b4d83b | ||
![]() |
fb86713d03 | ||
![]() |
fb77d4b52a | ||
![]() |
baa7570d72 | ||
![]() |
d6c9c89a21 | ||
![]() |
9d54862439 | ||
![]() |
5724cac8df | ||
![]() |
22307a8a52 | ||
![]() |
0e3dd39c24 | ||
![]() |
ceeba6c696 | ||
![]() |
bf0cd08df3 | ||
![]() |
75166d9388 | ||
![]() |
7387cdf221 | ||
![]() |
d0e73e4996 | ||
![]() |
ddb37963cb | ||
![]() |
89939c52ff | ||
![]() |
36ede4b147 | ||
![]() |
1b56e3b3ca | ||
![]() |
9fe99c6e31 | ||
![]() |
9a9a09b54d | ||
![]() |
5824261262 | ||
![]() |
6dc4f7d96e | ||
![]() |
02b36249db | ||
![]() |
9122a2338a | ||
![]() |
a39605d7da | ||
![]() |
368c45bcb6 | ||
![]() |
6dff9dd748 | ||
![]() |
762c947780 | ||
![]() |
9795d8fd99 | ||
![]() |
c959cc6713 | ||
![]() |
4cc08384d5 | ||
![]() |
6a51aa5d1b | ||
![]() |
e9b8b54d5e | ||
![]() |
18e86e316a | ||
![]() |
675b99e45e | ||
![]() |
295c24f653 | ||
![]() |
e9a13bd6d4 | ||
![]() |
f275e7395d | ||
![]() |
43471266b3 | ||
![]() |
b327f6880c | ||
![]() |
d9580322ad | ||
![]() |
a98093b468 | ||
![]() |
0c2ab4fc6b | ||
![]() |
d8ceca5b31 | ||
![]() |
b5b9bb319e | ||
![]() |
b25c9d575d | ||
![]() |
0ec4279250 | ||
![]() |
bf4b7c1c7c | ||
![]() |
da2902b989 | ||
![]() |
fa4a204bf8 | ||
![]() |
c866f204c0 | ||
![]() |
a61d6e56bb | ||
![]() |
18ea68f461 | ||
![]() |
a6deafeaa2 | ||
![]() |
0cc329869b | ||
![]() |
c4931b1a06 | ||
![]() |
c8fb2f86d8 | ||
![]() |
d4d229006e | ||
![]() |
56262ac509 | ||
![]() |
606aa042bb | ||
![]() |
082b11b693 | ||
![]() |
b1c814c5cf | ||
![]() |
30341735a7 | ||
![]() |
4e1a594d64 | ||
![]() |
1a99f5dfb3 | ||
![]() |
d137c1a406 | ||
![]() |
dcc8df0543 | ||
![]() |
9b01dca510 | ||
![]() |
691c2b9dc7 | ||
![]() |
3cb62a3304 | ||
![]() |
5d147bed29 | ||
![]() |
93c346bc5f | ||
![]() |
8017b725cb | ||
![]() |
c46cd71c4a | ||
![]() |
3ebdd9d81c | ||
![]() |
e10260dc27 | ||
![]() |
e937401f69 | ||
![]() |
03aeedda70 | ||
![]() |
49bc9a6224 | ||
![]() |
d47bb484bc | ||
![]() |
561069aef7 | ||
![]() |
ea5e4186e6 | ||
![]() |
5531729308 | ||
![]() |
cb52600946 | ||
![]() |
5b0299c308 | ||
![]() |
425b165d31 | ||
![]() |
304c5cd9cb | ||
![]() |
0b35c866ae | ||
![]() |
4535fade9b | ||
![]() |
962aa1a23a | ||
![]() |
f8aa07c1a2 | ||
![]() |
8c055f84d1 | ||
![]() |
9dbbaeab6a | ||
![]() |
2fa3340770 | ||
![]() |
1d4a34351b | ||
![]() |
c1617a7aa0 | ||
![]() |
dda30f8d39 | ||
![]() |
91d9ae85be | ||
![]() |
498a28644f | ||
![]() |
dd030cc827 | ||
![]() |
069562f5b2 | ||
![]() |
8fe0b4ed02 | ||
![]() |
f0737b8566 | ||
![]() |
0abbf3fa51 | ||
![]() |
63582f50dc | ||
![]() |
6db3be4ede | ||
![]() |
2fba87601e | ||
![]() |
da689cb4ef | ||
![]() |
00c76d86ec | ||
![]() |
70228e81b4 | ||
![]() |
bb8d540135 | ||
![]() |
f13d39ddab | ||
![]() |
2769c82827 | ||
![]() |
50776a9a38 | ||
![]() |
8b71161057 | ||
![]() |
4440cc4405 | ||
![]() |
52d73af150 | ||
![]() |
bbb9b00cc2 | ||
![]() |
7205d2c58d | ||
![]() |
707fab47f8 | ||
![]() |
d0f70549b4 | ||
![]() |
8a16d51dca | ||
![]() |
ccc34fbe01 | ||
![]() |
9f4f6d9baa | ||
![]() |
c0b302ae9f | ||
![]() |
47df7fbb14 | ||
![]() |
7367c74562 | ||
![]() |
8b965a6ae8 | ||
![]() |
009be84331 | ||
![]() |
eb6159f933 | ||
![]() |
80e1f06141 | ||
![]() |
18bd913a85 | ||
![]() |
3fa12d1ad9 | ||
![]() |
7a01749112 | ||
![]() |
8e530aca66 | ||
![]() |
a9493490ea | ||
![]() |
f27c4b5d85 | ||
![]() |
3a94677d93 | ||
![]() |
904a59239f | ||
![]() |
e50e431ead | ||
![]() |
71ed04301f | ||
![]() |
a98043099e | ||
![]() |
9b1e5fafe6 | ||
![]() |
87b6308071 | ||
![]() |
69ace45be6 | ||
![]() |
e3c1d7be69 | ||
![]() |
8c4703e56c | ||
![]() |
ec55434336 | ||
![]() |
6ac3f668c2 | ||
![]() |
77b860f9ed | ||
![]() |
4b28070c3a | ||
![]() |
db858986a3 | ||
![]() |
8c5f57edd6 | ||
![]() |
0da3a34843 | ||
![]() |
b4be6085e6 | ||
![]() |
b6ba73297e | ||
![]() |
2ebce8cd2f | ||
![]() |
9d83285644 | ||
![]() |
f53d05a791 | ||
![]() |
17291852d4 | ||
![]() |
2fdbda26d0 | ||
![]() |
e7bc8ea3f5 | ||
![]() |
20eee1fe58 | ||
![]() |
ac29a3df01 | ||
![]() |
a5777451bc | ||
![]() |
3ddeb1f5cf | ||
![]() |
d0001160c5 | ||
![]() |
d0b151f97e | ||
![]() |
5e83b4480c | ||
![]() |
76f8dd42a5 | ||
![]() |
032b5a11be | ||
![]() |
74303711fe | ||
![]() |
77cb0c5109 | ||
![]() |
d679c4692f | ||
![]() |
722d64451a | ||
![]() |
5d0a600e70 | ||
![]() |
39f03939da | ||
![]() |
6de0bfcd14 | ||
![]() |
ab3274b57d | ||
![]() |
3e43de3ba5 | ||
![]() |
07713c11d1 | ||
![]() |
2766a3120f | ||
![]() |
fbbfd1fdf5 | ||
![]() |
001e441b12 | ||
![]() |
596be52ba1 | ||
![]() |
92bd54f9b3 | ||
![]() |
6e545a07bf | ||
![]() |
f072b25def | ||
![]() |
13fd3a6ceb | ||
![]() |
436dee45e1 | ||
![]() |
e718e5903b | ||
![]() |
c65f5718be | ||
![]() |
5764cc0788 | ||
![]() |
200bc0ad03 | ||
![]() |
75e1d87cad |
144
CHANGELOG
|
@ -1,6 +1,110 @@
|
|||
my little forum changelog
|
||||
-------------------------
|
||||
|
||||
20250323.1 (2025-03-23)
|
||||
-----------------------
|
||||
|
||||
- feature: add database entries for uploaded images that was uploaded before the upload management was introduced, add new icons for it as SVG
|
||||
- change: change the appearance of the sidebar toggle in its heading, add new icons for it as SVG
|
||||
- change: replace a few occurences of JS-based focus setting to form fields with the corresponding HTML attributes
|
||||
- change: all index columns and columns, that stores indexes as foreign keys are unsigned now, this doubles their value range
|
||||
- change: new appearance of the templates for login, registration and sending forgotten passwords
|
||||
- fix: added INTL time format strings to all language files according the languages own rules when known
|
||||
- fix: remove the emtying of a search field when setting the focus to the field
|
||||
- fix: display MySQL errors in the upgrade script, was broken before
|
||||
- fix: a user list, restricted to logged-in users, was still displayed after users logout
|
||||
- fix: several errors in the HTML structure in the posting form template
|
||||
|
||||
20241215.1 (2024-12-15)
|
||||
-----------------------
|
||||
|
||||
- change: use modern form elements and field types, where it is appropriate
|
||||
- change: set autofocus into the first input element of a form after loading the page, where it is appropriate
|
||||
- change: add attribute required for form fields, that must be completed, this might prevent unnecessarily sending form contents
|
||||
- change: rearrange the text input field and the formatting buttons in the posting form
|
||||
- change: make the posting form behaviour better on mobile devices and for screen-reader programs
|
||||
- change: rework of the popups for uploading images for use in postings and also the form for uploading avatar images
|
||||
- change: reformatting of the thread tree items with breaking points to behave better in narrow viewports
|
||||
- change: move the no-text icon from the end of the subject to the icon list after the metadata (author and date)
|
||||
- change: set the posting date into a time element, enhances the machine readability
|
||||
- fix: broken SQL query for selecting the postings of a specified category on a thread overview page
|
||||
- fix: make images of type WebP appear in the uploaded images gallery in the upload images popup
|
||||
- fix: restrict the sidebar in narrow viewports to its width
|
||||
- fix: prevent the use of unhidden passwords for the AI training of browser vendors
|
||||
- fix: added forgotten writing direction aware formatting for form elements
|
||||
- fix: take the time of a posting and the time of registration of a user into account, when checking for a username collision
|
||||
- fix: do not check for a username collision when an administrator or moderatior edits a posting of an unregistered forum user
|
||||
- fix: remove tabindex attributes from form elements which caused a weird tab order on the posting form page
|
||||
|
||||
20240827.1 (2024-08-27)
|
||||
-----------------------
|
||||
|
||||
- change: rewrite the styling (CSS) to support languages, written from right to left
|
||||
- change: far better support of displaying the forum on mobile devices
|
||||
- change: translate "Sidebar" to "Barre laterale" in italian language
|
||||
- fix: display hours in 24-hours-format in german language
|
||||
- fix: display date and time according to the syntax of the PHP DateTimeInterface in arabic language
|
||||
- fix: include the column mlf2_entries.last_reply into the select, which is used in the ORDER-BY-clause
|
||||
- fix: a few issues in the upgrade script
|
||||
|
||||
20240729.1 (2024-07-29)
|
||||
-----------------------
|
||||
|
||||
- feature: lazy loading of images in forum entries, that are not in the viewport when loading a page with entries
|
||||
- feature: add BB-codes [ins], [del] and [s], mainly intended to mark subsequent changes
|
||||
- change: new upgrade script, from now on it is possible to use also version 2.4.19 as starting point of an upgrade
|
||||
- change: apply database performance enhancements, this was provided by @joeiacoponi1 (thank you)
|
||||
- change: enhancements and corrections in a few translations (simplified chinese, traditional chinese, danish, english, french, spanish)
|
||||
- change: add new language arabic, this has been contributed by Abdul Salam in the project forum
|
||||
- change: unify the use of the pagination link lists (from now on they are shown above and below the page content, where in use)
|
||||
- change: set the new source URL for the MathJax CDN, that is recommended by the project
|
||||
- change: remove the spam prevention method Bad Behavior because the projects seems to be dead since a longer time
|
||||
- change: all tables use now the charset utf8mb4, the previously in some cases used utf8 (a.k.a. utf8mb3) will be deprecated by MySQL in one of the next server main versions
|
||||
- change: use the SameSite attribute in cookies
|
||||
- fix: resize the columns mlf2_useronline.ip and mlf2_logincontrol.ip to 128 bytes, mlf2_useronline.ip was 15 bytes long and caused HTTP-500-errors in case of visitors with IPv6
|
||||
- fix: the mouse cursor should show up as pointer when hovering buttons
|
||||
- fix: prevent passwords being sent for spell checking to Google when the content of a password field is shown as plain text
|
||||
- fix: a few occurences of dates and times, that did not follow the new time formatting
|
||||
- fix: add missing strings for the administration of the Bayes based spam prevention filter (B8)
|
||||
- fix: correct a few errors in the HTML-structure of several templates
|
||||
- fix: replace function imagerotate with imageflip in the captcha class because imagerotate failed to work in some cases
|
||||
- fix: check for existince of a given category before using it in the template
|
||||
|
||||
20220803.1 (2022-08-03)
|
||||
-----------------------
|
||||
|
||||
- feature: support the upload of WebP-images
|
||||
- change: semantic HTML-elements on several places and modern CSS-rules (flexboxes instead floating boxes here and there)
|
||||
- fix: remove outdated query partsthat tried to access column mlf2_entries.email_notifications
|
||||
- fix: ensure, that suígnatures are reliably positioned under all content of a forum entry
|
||||
- fix: putting the cursor into the empty search field in the page header and pressing [Enter] led to a PHP warning
|
||||
- fix: (partially) When classifying entries in locked threads the get unlocked sometimes, happens more seldom now but there is a remaining corner case to inspect
|
||||
- fix: wrong order of altering the column mlf2_userdata.user_email, defining the unique-key for this column before changing its charset to utf8 (without 'mb4') leads to the error of a to long index in some MySQL-versions
|
||||
- fix: remove multiple definitions of unique indexes for the columns mlf2_userdata.user_name and mlf2_userdata.user_email in the installation and update scripts, the indexes does not break the structure but they are superfluous
|
||||
|
||||
20220529.1 (2022-05-29)
|
||||
-----------------------
|
||||
|
||||
- feature: show an icon to admins and mods for entries that are not classified as ham or spam, if spam detection service B8 or Akismet is activated
|
||||
- change: first overhaul of the main section of forum pages, affects mainly the main views (thread listings) and the administration start page
|
||||
- fix: when deleting a user delete also the notification switch in the entries table, normally we use the subscriptions table for this but in forums with entries that was handled with the old subscription handling it may be possible, that there are old subscriptions for registered users left
|
||||
|
||||
20220517.1 (2022-05-17)
|
||||
-----------------------
|
||||
|
||||
- fixed: the feature inactivity notification sent an unlimited number of e-mails, what caused the project domain to get blacklisted; to prevent this for external forum operators, the number of e-mails is now limited to 5 per daily action
|
||||
- fixed: because of the fixed height of the page header the user menu was inaccessible on narrow viewports since the change from XHTML 1.0 to HTML (5)
|
||||
- the column `mlf2_userdata.user_email` was to large for using an index with charset utf8mb4 on MySQL 5.5 and 5.6, reset it to charset utf8 (3 byte chars only)
|
||||
|
||||
20220509.1 (2022-05-09)
|
||||
-----------------------
|
||||
|
||||
- feature: stick the page footer to the bottom of the viewport with the help of a CSS-flexbox
|
||||
- changed: removed CSS-fixes for Internet Explorers 6 and 7 (RIP)
|
||||
- changed: replaced main block elements (<div>) for the page with semantic HTML-elements
|
||||
- fixed: a syntax error that prevented the update script from working (PR #597)
|
||||
- fixed: a wrong used English word (a IMHO typical false friend for native German speakers)
|
||||
|
||||
20220508.1 (2022-05-08)
|
||||
-----------------------
|
||||
|
||||
|
@ -16,7 +120,33 @@ my little forum changelog
|
|||
- updated: upgrade of the external modules, where one was available
|
||||
- updated: overhaul of the swedish language file
|
||||
- added: language file for Traditional Chinese
|
||||
- fixed: database table columns for user anmes and e-mail-addresses are set to be unique to prevent the use of similar user names (in the meaning of the MySQL-database-system) or the double use of e-mail-addresses
|
||||
- fixed: database table columns for user names and e-mail-addresses are set to be unique to prevent the use of similar user names (in the meaning of the MySQL-database-system) or the double use of e-mail-addresses
|
||||
|
||||
2.4.24 (2020-10-12)
|
||||
-------------------
|
||||
- fixed: broken layout of the links to the RSS-feed of a single thread in thread.inc.tpl and thread_linear.inc.tpl
|
||||
- fixed: unintended text-transform: lowercase; for the link to top of the page in the options of an entry
|
||||
- added: add classes for the user type to the thread tree below the entry in the single-entry-view
|
||||
|
||||
2.4.23 (2020-09-30)
|
||||
-------------------
|
||||
- fixed: wrong formatting of the link for a threads own RSS-feed, got broken by the work on formatting the RSS-links in the page footer
|
||||
- fixed: the non-English and non-German strings for the to-top-of-page-links had a broken comment part
|
||||
|
||||
2.4.22 (2020-09-29)
|
||||
-------------------
|
||||
- fixed: broken backup restoring function for the entries table, rework of the backup function for better code readability
|
||||
- fixed: corrected file size computation for the list of backup files; very small file sizes (up to a few hundred bytes) was shown as "0.00 MB" instead i.e. "0.0006 MB"
|
||||
- fixed: remove of since PHP 7.2 deprecated function each(), replaced with foreach()
|
||||
- fixed: wrong key name for error message in admin area about an incorrect e-mail-address
|
||||
- added: link to top of the page in the page footer and in the options menu of every entry
|
||||
- added: backup function for subscriptions and tags
|
||||
- added: natural sorting of the tag list, makes sorting case insensitive
|
||||
|
||||
2.4.21 (2020-04-25)
|
||||
-------------------
|
||||
- fixed: regex for e-mail-validation followed a lazy syntax style, that invalidated with PRCE2. which was introduced with PHP 7.3; because of that one was unable to register a new account when running MLF 2.4.x under PHP 7.3 or newer
|
||||
- fixed: image URLs in the RSS-feed was specified with only the local, relative path on the domain, we do need a complete URl with protocol, domain and path because the feed reader requests the feed from outside the domain
|
||||
|
||||
2.4.99.3 (2019-09-24)
|
||||
---------------------
|
||||
|
@ -47,6 +177,12 @@ my little forum changelog
|
|||
- fixed: relative pathes in the src-attribute of images in the RSS feed made the images inaccessible in the feed
|
||||
- changed: the quote-message-link is now a button
|
||||
|
||||
2.4.20 (2019-05-15)
|
||||
-------------------
|
||||
- fixed: call for a removed function in the JS-code
|
||||
- fixed: inconsistend mail encoding, depended on an input string and could therefore result in wrong encoding, now fixed to the encoding, provided in the language file (normally UTF-8)
|
||||
- fixed: missing CSRF-token in case of deleting postings
|
||||
|
||||
2.4.99.0 (2019-02-11)
|
||||
---------------------
|
||||
|
||||
|
@ -58,12 +194,6 @@ my little forum changelog
|
|||
- removed: flash button and flash bb-code
|
||||
- fixed: replace while loops with deprecated PHP-function "each" with foreach loops
|
||||
|
||||
2.4.20 (2019-05-15)
|
||||
-------------------
|
||||
- fixed: call for a removed function in the JS-code
|
||||
- fixed: inconsistend mail encoding, depended on an input string and could therefore result in wrong encoding, now fixed to the encoding, provided in the language file (normally UTF-8)
|
||||
- fixed: missing CSRF-token in case of deleting postings
|
||||
|
||||
2.4.19.1 (2019-02-07)
|
||||
---------------------
|
||||
- fixed: reading the setting next_daily_action failed because of checking for a wrong structure, caused HTTP-status 500 every when and then
|
||||
|
|
158
README.md
|
@ -1,20 +1,160 @@
|
|||
my little forum
|
||||
===============
|
||||
# my little forum
|
||||
|
||||
<a href="https://mylittleforum.net/">my little forum</a> is a simple PHP and MySQL based internet forum that displays the messages in classical threaded view (tree structure). It is Open Source licensed under the GNU General Public License. The main claim of this web forum is simplicity. Furthermore it should be easy to install and run on a standard server configuration with PHP and MySQL.
|
||||
[my little forum](https://mylittleforum.net/) is a simple PHP and MySQL based internet forum that displays the messages in classical threaded view (tree structure). It is Open Source licensed under the GNU General Public License. The main claim of this web forum is simplicity. Furthermore it should be easy to install and run on a standard server configuration with PHP and MySQL.
|
||||
|
||||
* <a href="https://github.com/ilosuna/mylittleforum/wiki">More about my little forum</a>
|
||||
* [More about my little forum](https://github.com/My-Little-Forum/mylittleforum/wiki)
|
||||
* [Demo and project discussion forum](https://mylittleforum.net/forum/)
|
||||
|
||||
System requirements
|
||||
-------------------
|
||||
## System requirements
|
||||
|
||||
* Webserver with PHP >= 5.4 and MySQL >= 5.5.3
|
||||
- Webserver with PHP >= 7.3
|
||||
- MySQL >= 5.7.7 or MariaDB >= 10.2.2
|
||||
|
||||
Installation
|
||||
------------
|
||||
## Features
|
||||
|
||||
### General
|
||||
|
||||
- thread based forum script
|
||||
- optional restriction of access to writing and/or reading entries to registered users only
|
||||
- user management
|
||||
- categories
|
||||
- forum script is highly configurable
|
||||
- theming support, using [Smarty](https://www.smarty.net/) as template language
|
||||
- data storage in a MySQL or MariaDB database
|
||||
- currently 14 available languages (more or less complete) with the strings for the user interface
|
||||
- arabic (beta)
|
||||
- simplified chinese
|
||||
- traditional chinese
|
||||
- croatian
|
||||
- danish
|
||||
- english (default if not set otherwise during the installation)
|
||||
- french
|
||||
- german
|
||||
- italian
|
||||
- norwegian
|
||||
- russian
|
||||
- spanish
|
||||
- swedish
|
||||
- tamil
|
||||
- turkish
|
||||
- since version 20220508.1 (2.5.0) the forum can store the whole utf-8-range including emojis 🎉
|
||||
- formatting of entries with BB-codes, most BB-codes are accessible by buttons, the system is extendable
|
||||
- common text formatting (bold, italic, strike through and so on)
|
||||
- coloured text, text size
|
||||
- links
|
||||
- images
|
||||
- code exapmles
|
||||
- preformatted text
|
||||
- mathematical formulas, realised with LaTex (optional with including the MathJax library)
|
||||
|
||||
### Main views
|
||||
|
||||
- paginated main view with a configurable count of threads per page
|
||||
- general and user based configuration for a thread view or a table view, second looking more message board like
|
||||
- optional list of latest X entries
|
||||
- optional tag cloud
|
||||
- management functions for administrators and moderators
|
||||
|
||||
### Forum entries
|
||||
|
||||
- allowing or forbidding creation of forum posts by unregistered users (restricting it to registered users only)
|
||||
- allowing or forbidding time based editing of forum posts after their initial saving
|
||||
- displaying the time of the last editing and the editors user name of a posting, optionally hiding it in case of editing by a moderator or administrator
|
||||
|
||||
### Entry view
|
||||
|
||||
- three possible views of forum entries
|
||||
- single entry view with the thread structure shown like in the main views below the entry
|
||||
- nested entry view with all entries of the thread indented according to their thread nesting level
|
||||
- flat entry view ordered by their posting dates like in a message board
|
||||
|
||||
### Categories
|
||||
|
||||
- optional creation of categories
|
||||
- restricting access to certain categories to registered users or to administrators and moderators
|
||||
- management of categories
|
||||
- sorting of the existing categories for the selection in the user interface
|
||||
- renaming a category
|
||||
- deleting an category
|
||||
- changing the access restrictions
|
||||
|
||||
### Spam prevention
|
||||
|
||||
- optional Bayed based content categorisation as ham or spam for forum posts and/or e-mails, to be sent over the contact form (*local service*)
|
||||
- ~~optional spam prevention with Bad behavior (*local service*)~~ removed with version 20240729.1 because the project is dead
|
||||
- optional bad word list (*local service*)
|
||||
- optional blacklist for certain IPs and IP-ranges (*local service*)
|
||||
- optional blacklist for user agents (*local service*)
|
||||
- optional check of e-mail-addresses during the registration process with Stop Forum Spam (*external service*)
|
||||
- optional content check of forum posts and/or e-mails, to be sent over the contact form, with Akismet (*external service*)
|
||||
- perform the activated checks only for content of unregistered visitors or also for content of registered users (if check is applicable)
|
||||
|
||||
### User account management
|
||||
|
||||
- optional user registration
|
||||
- options to registering an account by one self or by restricting the registration to be done by an administrator
|
||||
- enforcement of a consent to the terms of use and/or the privacy policy, date of consent will be saved with the user data
|
||||
- enforcement of a renewed consent in case of changes in one of these documents
|
||||
- in general three possible user ranks (beside unregistered visitors) with different permissions and restrictions
|
||||
- registered user
|
||||
- moderator
|
||||
- administrator
|
||||
- user profile with optional …
|
||||
- … avatar
|
||||
- … signature
|
||||
- … profile information
|
||||
- … website
|
||||
- … location
|
||||
- … birthday
|
||||
- … sex/gender
|
||||
- technical user settings
|
||||
- password
|
||||
- e-mail-address
|
||||
- deleting the account
|
||||
- extent of e-mail-contact
|
||||
- user is contactable only by the forum team
|
||||
- user is contactable by all registered users
|
||||
- or the whole forum audience
|
||||
- user based category selection (if categories are defined)
|
||||
- user based choice of the user interface language
|
||||
- user based choice of the time zone
|
||||
- user based choice of how links are opened
|
||||
- open all links based on the forum setting (set by the forum administrator)
|
||||
- open all links in the currently active browser window/tab
|
||||
- open only links to external sites in a new browser window/tab
|
||||
- open all links in a new browser window/tab
|
||||
- for moderators and administrators: e-mail-notification about new forum posts and/or registration of new users
|
||||
- for administrators: separate user management list with the following functions
|
||||
- adding new users
|
||||
- editing the data of a single user
|
||||
- deleting single users
|
||||
- deleting uxsers according to definable criteria
|
||||
- reset previous consents to the terms of use and/or the privacy policy because of changes in one or the other document
|
||||
|
||||
### Additional pages
|
||||
|
||||
- creation of website pages as supplement to the forum, in example a help page, the terms of use or the privacy policy
|
||||
- formatting the pages content with HTML and the CSS rules of the applied forum theme
|
||||
- pages have a fix URL and a link can optionally be displayed in the user menu
|
||||
|
||||
## Installation
|
||||
|
||||
1. Unzip the script package.
|
||||
2. Upload the complete folder "forum" to your server.
|
||||
3. Depending on your server configuration the write permissions of the subdirectory templates_c (CHMOD 770, 775 or 777) and the file config/db_settings.php (CHMOD 666) might need to be changed in order that they are writable by the script.
|
||||
4. Run the installation script by accessing yourdomain.tld/forum/install/ in your web browser and follow the instructions.
|
||||
5. Remove the directory "install" from your installation of My Little Forum.
|
||||
6. Change the write permissions for config/db_settings.php to (CHMOD 440), what prevents reading the files content for unauthorised users
|
||||
|
||||
## Upgrade
|
||||
|
||||
1. Download the new package.
|
||||
2. Unzip the script package.
|
||||
3. Upload the folder "update" into the main folder of the forum installation.
|
||||
4. Upload the file "config/VERSION" to the folder "config" of the forum installation. An existing file VERSION will be overwritten.
|
||||
5. Login as forum administrator and go to the admin area
|
||||
6. Open the link "Update", you will see a list of available update script files below the instructions. It is possible, that there are more than one items listed, because old, outdated update files never got deleted from the server.
|
||||
7. Open the link to the currently valid update script.
|
||||
8. Insert the password of your administrator account to confirm the run of the update script.
|
||||
9. On the following page you'll get the success message for step one of the update (database operations) or an error message. In case of success you'll see a list of all script files that changed between your and the new version. You have to load up all the listed files and directories to your webspace (this is because not every file got altered with every version). After loading all changed files and directories of the new version to your webspace, you are done. If you encountered errors, please report it instantaneously [in the project forum](https://mylittleforum.net/forum/) or open an [issue on Github](https://github.com/My-Little-Forum/mylittleforum/issues).
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
20220508.1
|
||||
20250323.1
|
|
@ -948,19 +948,123 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
for ($x=0; $x<$selected_uploads_count; $x++) {
|
||||
$selected_uploads[$x]['name'] = htmlspecialchars($selected[$x]);
|
||||
}
|
||||
$action = 'delete_uploads';
|
||||
}
|
||||
else $action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_uploads_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
foreach ($_POST['selected_confirmed'] as $upload_rm) {
|
||||
$qDelUploadEntry = "DELETE FROM ". $db_settings['uploads_table'] ."
|
||||
WHERE pathname = '". mysqli_real_escape_string($connid, $upload_rm) ."'";
|
||||
$rDelUploadEntry = mysqli_query($connid, $qDelUploadEntry);
|
||||
if ($rDelUploadEntry !== false) {
|
||||
$path_rm = 'images/uploaded/'. $upload_rm;
|
||||
if (file_exists($path_rm)) {
|
||||
@chmod($path_rm, 0777);
|
||||
@unlink($path_rm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
header("location: index.php?mode=admin&action=list_uploads");
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['record_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['manage_uploads'])) {
|
||||
$selected = $_POST['manage_uploads'];
|
||||
$selected_uploads_count = count($selected);
|
||||
$rec_row = [];
|
||||
for ($x = 0; $x < $selected_uploads_count; $x++) {
|
||||
// search for the first occurence of the image in a posting,
|
||||
// determine the ID of the posting author,
|
||||
// assume that it's the uploader
|
||||
$qUploadName = "SELECT
|
||||
user_id
|
||||
FROM ". $db_settings['forum_table'] ."
|
||||
WHERE text LIKE '%". mysqli_real_escape_string($connid, $selected[$x]) ."%'
|
||||
ORDER BY time ASC
|
||||
LIMIT 1";
|
||||
$rUploadName = mysqli_query($connid, $qUploadName);
|
||||
if ($rUploadName !== false && mysqli_num_rows($rUploadName) == 1) {
|
||||
$row = mysqli_fetch_assoc($rUploadName);
|
||||
$uploadAuthor = intval($row['user_id']);
|
||||
if ($uploadAuthor <= 0)
|
||||
$uploadAuthor = "Null";
|
||||
} else {
|
||||
$uploadAuthor = "Null";
|
||||
}
|
||||
// generate a row insert block for use in a statement to inserting multiple rows at once
|
||||
$tstamp_temp = substr($selected[$x], 0, 14);
|
||||
$tstamp = substr($tstamp_temp, 0, 4) ."-". substr($tstamp_temp, 4, 2) ."-". substr($tstamp_temp, 6, 2) ." ". substr($tstamp_temp, 8, 2) .":". substr($tstamp_temp, 10, 2) .":" .substr($tstamp_temp, 12, 2);
|
||||
$rec_row[] = "(". $uploadAuthor .", '". mysqli_real_escape_string($connid, $selected[$x]) ."', '". mysqli_real_escape_string($connid, $tstamp) ."')";
|
||||
}
|
||||
$qInsertUploadData = "INSERT INTO `". $db_settings['uploads_table'] ."` (`uploader`, `pathname`, `tstamp`)
|
||||
VALUES ". join(",\n", $rec_row) ."
|
||||
ON DUPLICATE KEY UPDATE `pathname` = `pathname`";
|
||||
$rInsertUploadData = mysqli_query($connid, $qInsertUploadData);
|
||||
}
|
||||
$filterString = (isset($_POST['filter']) && in_array($_POST['filter'], ['not-managed-images', 'managed-images'])) ? '&filter='. urlencode($_POST['filter']) : '';
|
||||
header("location: index.php?mode=admin&action=list_uploads". $filterString);
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_GET['action']) and $_GET['action'] == 'list_uploads') {
|
||||
$images = [];
|
||||
$listed = [];
|
||||
$rUploadList = mysqli_query($connid, "SELECT pathname FROM ". $db_settings['uploads_table']);
|
||||
if ($rUploadList !== false && mysqli_num_rows($rUploadList) > 0) {
|
||||
while ($row = mysqli_fetch_assoc($rUploadList)) {
|
||||
$listed[] = $row['pathname'];
|
||||
}
|
||||
}
|
||||
|
||||
$uploaded_images_path = 'images/uploaded/';
|
||||
$images = array();
|
||||
$browse_images = (isset($_GET['browse_images']) && $_GET['browse_images'] > 0) ? intval($_GET['browse_images']) : 1;
|
||||
$i = 0;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.(gif|png|jpg|svg)$/i', $file)) {
|
||||
$images[] = $file;
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[$i]['number'] = $i;
|
||||
$images[$i]['pathname'] = $file;
|
||||
if (empty($listed) || (!empty($listed) && !in_array($file, $listed))) {
|
||||
$images[$i]['status'] = 0;
|
||||
} else {
|
||||
$images[$i]['status'] = 1;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
unset($i, $listed);
|
||||
|
||||
if ($images) {
|
||||
rsort($images);
|
||||
if (isset($_GET['filter']) && in_array($_GET['filter'], ['not-managed-images', 'managed-images'])) {
|
||||
if ($_GET['filter'] == 'not-managed-images') {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 0;
|
||||
} else {
|
||||
$liveFilter['criterium'] = 'status';
|
||||
$liveFilter['value'] = 1;
|
||||
}
|
||||
$filter = $_GET['filter'];
|
||||
$images = filter2DArrayWithKeyNValue($images, $liveFilter['criterium'], $liveFilter['value']);
|
||||
}
|
||||
$sort_array = [];
|
||||
foreach ($images as $image) {
|
||||
$sort_array[] = $image['pathname'];
|
||||
}
|
||||
array_multisort($sort_array, SORT_DESC, $images);
|
||||
unset($sort_array);
|
||||
$page_browse['total_items'] = count($images);
|
||||
$page_browse['items_per_page'] = $settings['uploads_per_page'];
|
||||
$total_pages = ceil($page_browse['total_items'] / $page_browse['items_per_page']);
|
||||
|
@ -980,32 +1084,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_selected_uploads']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['uploads_remove'])) {
|
||||
$selected = $_POST['uploads_remove'];
|
||||
$selected_uploads_count = count($selected);
|
||||
for ($x=0; $x<$selected_uploads_count; $x++) {
|
||||
$selected_uploads[$x]['name'] = htmlspecialchars($selected[$x]);
|
||||
}
|
||||
$action = 'delete_uploads';
|
||||
}
|
||||
else $action = 'list_uploads';
|
||||
}
|
||||
|
||||
if (isset($_POST['delete_uploads_confirmed']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if (isset($_POST['selected_confirmed'])) {
|
||||
foreach ($_POST['selected_confirmed'] as $upload_rm) {
|
||||
$path_rm = 'images/uploaded/'. $upload_rm;
|
||||
if (file_exists($path_rm)) {
|
||||
@chmod($path_rm, 0777);
|
||||
@unlink($path_rm);
|
||||
}
|
||||
}
|
||||
}
|
||||
header("location: index.php?mode=admin&action=list_uploads");
|
||||
die();
|
||||
}
|
||||
|
||||
if (empty($action)) $action='main';
|
||||
$smarty->assign('action', $action);
|
||||
|
||||
|
@ -1152,9 +1230,9 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
$userdata[$i]['user_email'] = htmlspecialchars($row['user_email']);
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['registered_time'] = htmlspecialchars($row['registered_time']);
|
||||
$userdata[$i]['registered_time'] = htmlspecialchars(format_time($lang['time_format'], $row['registered_time']));
|
||||
$userdata[$i]['logins'] = intval($row['logins']);
|
||||
$userdata[$i]['last_login_time'] = htmlspecialchars($row['last_login_time']);
|
||||
$userdata[$i]['last_login_time'] = htmlspecialchars(format_time($lang['time_format'], $row['last_login_time']));
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
if ($row['activate_code'] != '') $userdata[$i]['inactive'] = true;
|
||||
$i++;
|
||||
|
@ -1333,7 +1411,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('captcha_email', $settings['captcha_email']);
|
||||
$smarty->assign('captcha_register', $settings['captcha_register']);
|
||||
$smarty->assign('stop_forum_spam', $settings['stop_forum_spam']);
|
||||
$smarty->assign('bad_behavior', $settings['bad_behavior']);
|
||||
$smarty->assign('akismet_key', $settings['akismet_key']);
|
||||
$smarty->assign('akismet_entry_check', $settings['akismet_entry_check']);
|
||||
$smarty->assign('akismet_mail_check', $settings['akismet_mail_check']);
|
||||
|
@ -1449,7 +1526,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
case 'spam_protection_submit':
|
||||
$akismet_key = (!empty($_POST['akismet_key'])) ? trim($_POST['akismet_key']) : '';
|
||||
if (empty($_POST['stop_forum_spam'])) $stop_forum_spam = 0; else $stop_forum_spam = 1;
|
||||
if (empty($_POST['bad_behavior'])) $bad_behavior = 0; else $bad_behavior = 1;
|
||||
if (isset($_POST['captcha_posting'])) $captcha_posting = intval($_POST['captcha_posting']); else $captcha_posting = 0;
|
||||
if (isset($_POST['captcha_email'])) $captcha_email = intval($_POST['captcha_email']); else $captcha_email = 0;
|
||||
if (isset($_POST['captcha_register'])) $captcha_register = intval($_POST['captcha_register']); else $captcha_register = 0;
|
||||
|
@ -1486,6 +1562,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
foreach ($banned_ips_array as $banned_ip) {
|
||||
if (!empty($banned_ip) && trim($banned_ip) != '') $banned_ips_array_checked[] = trim($banned_ip);
|
||||
}
|
||||
$banned_ips_array_checked = array_unique($banned_ips_array_checked);
|
||||
natcasesort($banned_ips_array_checked);
|
||||
$banned_ips = implode("\n", $banned_ips_array_checked);
|
||||
if (is_ip_banned($_SERVER['REMOTE_ADDR'], $banned_ips_array_checked)) $errors[] = 'error_own_ip_banned';
|
||||
|
@ -1497,6 +1574,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
foreach ($banned_user_agents_array as $banned_user_agent) {
|
||||
if (!empty($banned_user_agent) && trim($banned_user_agent) != '') $banned_user_agents_array_checked[] = trim($banned_user_agent);
|
||||
}
|
||||
$banned_user_agents_array_checked = array_unique($banned_user_agents_array_checked);
|
||||
natcasesort($banned_user_agents_array_checked);
|
||||
$banned_user_agents = implode("\n", $banned_user_agents_array_checked);
|
||||
if (is_user_agent_banned($_SERVER['HTTP_USER_AGENT'], $banned_user_agents_array_checked)) $errors[] = 'error_own_user_agent_banned';
|
||||
|
@ -1508,6 +1586,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
foreach ($not_accepted_words_array as $not_accepted_word) {
|
||||
if (!empty($not_accepted_word) && trim($not_accepted_word) != '') $not_accepted_words_array_checked[] = trim($not_accepted_word);
|
||||
}
|
||||
$not_accepted_words_array_checked = array_unique($not_accepted_words_array_checked);
|
||||
natcasesort($not_accepted_words_array_checked);
|
||||
$not_accepted_words = implode("\n", $not_accepted_words_array_checked);
|
||||
}
|
||||
|
@ -1518,7 +1597,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $captcha_email) ."' WHERE name = 'captcha_email'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $captcha_register) ."' WHERE name = 'captcha_register'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $stop_forum_spam) ."' WHERE name = 'stop_forum_spam'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $bad_behavior) ."' WHERE name = 'bad_behavior'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='". mysqli_real_escape_string($connid, $akismet_key) ."' WHERE name = 'akismet_key'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($akismet_entry_check) ."' WHERE name = 'akismet_entry_check'");
|
||||
mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value = '". intval($akismet_mail_check) ."' WHERE name = 'akismet_mail_check'");
|
||||
|
@ -1545,7 +1623,6 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('captcha_email', $captcha_email);
|
||||
$smarty->assign('captcha_register', $captcha_register);
|
||||
$smarty->assign('stop_forum_spam', $stop_forum_spam);
|
||||
$smarty->assign('bad_behavior', $bad_behavior);
|
||||
$smarty->assign('akismet_key', htmlspecialchars($akismet_key));
|
||||
$smarty->assign('akismet_entry_check', $akismet_entry_check);
|
||||
$smarty->assign('akismet_mail_check', $akismet_mail_check);
|
||||
|
@ -1725,6 +1802,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
$smarty->assign('images_per_page', $page_browse['items_per_page']);
|
||||
$smarty->assign('images', $images);
|
||||
if (isset($start)) $smarty->assign('start', $start);
|
||||
if (isset($filter)) $smarty->assign('filter', $filter);
|
||||
}
|
||||
break;
|
||||
case 'delete_uploads':
|
||||
|
@ -1760,7 +1838,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
mysqli_free_result($lastVersionURI);
|
||||
|
||||
if ($lastVC !== NULL) {
|
||||
$smarty->assign('latest_release_uri', $lastVU == NULL ? "https://github.com/ilosuna/mylittleforum/releases/latest" : htmlspecialchars($lastVU['uri']));
|
||||
$smarty->assign('latest_release_uri', $lastVU == NULL ? "https://github.com/My-Little-Forum/mylittleforum/releases/latest" : htmlspecialchars($lastVU['uri']));
|
||||
$smarty->assign('latest_release_version', htmlspecialchars($lastVC['version']));
|
||||
}
|
||||
}
|
||||
|
@ -1770,4 +1848,4 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$
|
|||
header("location: index.php");
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -68,20 +68,20 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$s
|
|||
|
||||
@mysqli_query($connid, "UPDATE ". $db_settings['userdata_table'] ." SET logins=logins+1, last_login=NOW(), last_logout=NOW(), `inactivity_notification` = FALSE, user_ip='". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."', pwf_code='', language='". mysqli_real_escape_string($connid, $language_update) ."', time_zone='". mysqli_real_escape_string($connid, $time_zone_update) ."', theme='". mysqli_real_escape_string($connid, $theme_update) ."' WHERE user_id=". intval($user_id));
|
||||
|
||||
setcookie($settings['session_prefix'].'auto_login', $_COOKIE[$settings['session_prefix'].'auto_login'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $_COOKIE[$settings['session_prefix'].'auto_login'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
if ($db_settings['useronline_table'] != "") {
|
||||
@mysqli_query($connid, "DELETE FROM ". $db_settings['useronline_table'] ." WHERE ip = '". mysqli_real_escape_string($connid, $_SERVER['REMOTE_ADDR']) ."'");
|
||||
}
|
||||
} else {
|
||||
if ($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
} else {
|
||||
if ($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
} else {
|
||||
if($settings['temp_block_ip_after_repeated_failed_logins'] > 0) count_failed_logins();
|
||||
setcookie($settings['session_prefix'].'auto_login','',0);
|
||||
setcookie($settings['session_prefix'].'auto_login','', cookie_options(0));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ if ($settings['avatars'] > 0 && isset($_SESSION[$settings['session_prefix'].'use
|
|||
$filename = $avatarInfo === false ? false : $avatarInfo[1];
|
||||
|
||||
// remove existing avatar
|
||||
if (isset($_GET['delete'])) {
|
||||
if (isset($_POST['delete'])) {
|
||||
if ($filename !== false && file_exists($uploaded_images_path.$filename)) {
|
||||
@chmod($uploaded_images_path.$filename, 0777);
|
||||
@unlink($uploaded_images_path.$filename);
|
||||
|
|
|
@ -4,7 +4,7 @@ if (!defined('IN_INDEX')) {
|
|||
exit;
|
||||
}
|
||||
|
||||
setcookie($settings['session_prefix'].'userdata', '', 0);
|
||||
setcookie($settings['session_prefix'].'userdata', '', cookie_options(0));
|
||||
|
||||
if (isset($_POST['method']) && $_POST['method'] == 'ajax') exit;
|
||||
|
||||
|
|
|
@ -32,25 +32,27 @@
|
|||
|
||||
if (isset($id) && $id > 0) {
|
||||
$result = @mysqli_query($connid, "SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) as etime, UNIX_TIMESTAMP(edited + INTERVAL " . $time_difference . " MINUTE) AS edit_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, category, locked, views, edit_key,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id=ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id=ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id=" . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id = " . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
WHERE ft.id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
$entrydata = mysqli_fetch_array($result);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$entrydata['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['time']);
|
||||
$entrydata['edit_ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $entrydata['etime']);
|
||||
$entrydata['formated_time'] = format_time($lang['time_format_full'], $entrydata['disp_time']);
|
||||
$entrydata['tags'] = getEntryTags($id);
|
||||
|
||||
|
@ -134,20 +136,17 @@
|
|||
|
||||
// Select data for thread-tree
|
||||
$thread = $entrydata['tid'];
|
||||
// Override '$display_spam_query_and' variable, which was set in main.inc.php, to display current message in tree
|
||||
if ($entrydata['spam'] == 1 && isset($id))
|
||||
$display_spam_query_and .= " OR `ft`.`id` = " . intval($id);
|
||||
$result = mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, user_type, subject, category, marked, text, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE tid = " . $thread . $display_spam_query_and . " ORDER BY time ASC");
|
||||
|
||||
// Override spam variable, which was set in main.inc.php, to display current message in tree
|
||||
if ($entrydata['spam'] == 1 && isset($id)) {
|
||||
$spam_sql_and .= " OR ft.id = " . intval($id);
|
||||
}
|
||||
$entry_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL " . $time_difference . " MINUTE) AS disp_time, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, user_type, subject, category, marked, text, rst.user_id AS req_user, " . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, " . $db_settings['b8_rating_table'] . ".spam AS b8_spam, " . $db_settings['akismet_rating_table'] . ".spam_check_status AS akismet_checked, " . $db_settings['b8_rating_table'] . ".training_type AS b8_checked
|
||||
FROM " . $db_settings['forum_table'] . " AS ft LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE tid = " . $thread . $spam_sql_and . " ORDER BY time ASC";
|
||||
$result = mysqli_query($connid, $entry_sql);
|
||||
|
||||
if (!$result)
|
||||
raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
|
@ -159,8 +158,10 @@
|
|||
$data['name'] = htmlspecialchars($data['user_name']);
|
||||
} else
|
||||
$data['name'] = htmlspecialchars($data['name']);
|
||||
|
||||
$data['subject'] = htmlspecialchars($data['subject']);
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
// set read or new status of messages
|
||||
$data = getMessageStatus($data, $last_visit);
|
||||
|
@ -171,14 +172,21 @@
|
|||
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '')
|
||||
$data['category_name'] = $categories[$data["category"]];
|
||||
$data_array[$data['id']] = $data;
|
||||
$child_array[$data['pid']][] = $data['id'];
|
||||
if ($data['pid'] == $id)
|
||||
$direct_replies[] = $data['id'];
|
||||
$last = $data['id'];
|
||||
if ($data['pid'] > $last)
|
||||
$last = $data['id'];
|
||||
// set key 'not_classified_spam_ham' to decide, if an mod or admin should get notified about need of classification with an icon
|
||||
if ((isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] >= 1) && (($settings['akismet_entry_check'] == 1 && $data['akismet_checked'] == 0) || ($settings['b8_entry_check'] == 1 && $data['b8_checked'] == 0))) {
|
||||
$data['not_classified_spam_ham'] = 1;
|
||||
} else {
|
||||
$data['not_classified_spam_ham'] = 0;
|
||||
}
|
||||
// flag spam
|
||||
$data['spam'] = $data['akismet_spam'] || $data['b8_spam'] ? 1 : 0;
|
||||
$data_array[$data['id']] = $data;
|
||||
$child_array[$data['pid']][] = $data['id'];
|
||||
}
|
||||
if (isset($child_array)) {
|
||||
$smarty->assign('child_array', $child_array);
|
||||
|
@ -242,6 +250,7 @@
|
|||
|
||||
$smarty->assign('user_type', htmlspecialchars($entrydata['user_type']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($entrydata['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars($entrydata['ISO_time']));
|
||||
$smarty->assign('formated_time', htmlspecialchars($entrydata['formated_time']));
|
||||
$smarty->assign('locked', htmlspecialchars($entrydata['locked']));
|
||||
|
||||
|
@ -296,6 +305,7 @@
|
|||
if ($entrydata["edited_diff"] > 0 && $entrydata["edited_diff"] > $entrydata["time"] && $settings['show_if_edited'] == 1) {
|
||||
$smarty->assign('edited', true);
|
||||
$smarty->assign('edit_time', htmlspecialchars($entrydata['edit_time']));
|
||||
$smarty->assign('edit_ISO_time', htmlspecialchars($entrydata['edit_ISO_time']));
|
||||
$entrydata['formated_edit_time'] = format_time($lang['time_format_full'], $entrydata['edit_time']);
|
||||
$smarty->assign('formated_edit_time', htmlspecialchars($entrydata['formated_edit_time']));
|
||||
|
||||
|
@ -361,4 +371,5 @@
|
|||
$smarty->assign('options', $options);
|
||||
$smarty->assign('subtemplate', 'entry.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
|
||||
?>
|
|
@ -37,8 +37,8 @@ if (isset($_GET['page'])) {
|
|||
}
|
||||
if (empty($page)) $page = 1;
|
||||
|
||||
if ($thread_order == 0) $db_thread_order = 'time';
|
||||
else $db_thread_order = 'last_reply';
|
||||
if ($thread_order == 0) $db_thread_order = 'ft.time';
|
||||
else $db_thread_order = 'ft.last_reply';
|
||||
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['current_page'] = $page;
|
||||
|
||||
|
@ -48,46 +48,73 @@ $ul = ($page - 1) * $settings['threads_per_page'];
|
|||
// database request
|
||||
if ($categories == false) {
|
||||
// no categories defined
|
||||
$result = mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE pid = 0". $display_spam_query_and ." ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} elseif (is_array($categories) && $category <= 0) {
|
||||
// there are categories and all categories or category selection should be shown
|
||||
if (isset($category_selection_query) && $category == -1) {
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query;
|
||||
$pid_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE ((pid = 0 AND category IN (". $category_ids_query .")) OR (pid = 0 AND sticky = 2))". $display_spam_query_and);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
$result = mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE ((pid = 0 AND category IN (". $category_ids_query .")) OR (pid = 0 AND sticky = 2))". $display_spam_query_and ." ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} elseif (is_array($categories) && $category > 0) {
|
||||
// there are categories and only one category should be shown
|
||||
if (in_array($category, $category_ids)) {
|
||||
$result=mysqli_query($connid, "SELECT id, tid FROM ".$db_settings['forum_table']." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE ((category = '". mysqli_real_escape_string($connid, $category) ."' AND pid = 0) OR (pid = 0 AND sticky = 2))". $display_spam_query_and ." ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
// how many entries?
|
||||
$pid_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['forum_table']." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE ((pid = 0 AND category = '". mysqli_real_escape_string($connid, $category) ."') OR (pid = 0 AND sticky = 2))". $display_spam_query_and);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
} else {
|
||||
$page_threads_and = "";
|
||||
}
|
||||
elseif (is_array($categories)) {
|
||||
$page_threads_and = "";
|
||||
|
||||
if ($category > 0 && !in_array($category, $category_ids)) { // $category_ids defined in main.inc.php
|
||||
// invalid category
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
}
|
||||
// there are categories and only one category should be shown
|
||||
elseif ($category > 0 && in_array($category, $category_ids)) {
|
||||
// how many entries?
|
||||
$page_threads_and = " AND (sticky = 2 OR category = '". mysqli_real_escape_string($connid, $category) ."') ";
|
||||
}
|
||||
// there are categories and all categories or category selection should be shown
|
||||
elseif ($category == -1 && isset($category_selection_query)) { // $category_selection_query defined in main.inc.php
|
||||
// category selection
|
||||
$category_ids_query = $category_selection_query; // overwrite $category_ids_query, originally defined in main.inc.php
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
elseif ($category == 0 && isset($category_ids_query)) { // $category_ids_query defined in main.inc.php
|
||||
// show all categories (restricted to user type)
|
||||
$page_threads_and = " AND (sticky = 2 OR category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")) ";
|
||||
}
|
||||
|
||||
if (!empty($page_threads_and)) {
|
||||
$pid_result_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE pid = 0";
|
||||
$display_pid_result = $pid_result_sql . $spam_sql_and . $page_threads_and; // $spam_sql_and defined in main.inc.php
|
||||
|
||||
$pid_result = mysqli_query($connid, $display_pid_result);
|
||||
list($total_threads) = mysqli_fetch_row($pid_result);
|
||||
mysqli_free_result($pid_result);
|
||||
}
|
||||
}
|
||||
|
||||
$display_page_threads =
|
||||
"SELECT DISTINCT ft.tid, ft.sticky, ft.time, ft.last_reply FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN (SELECT id, tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT id, tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['b8_rating_table'] .".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) spam_list ON spam_list.tid = ft.id
|
||||
WHERE ft.pid = 0";
|
||||
|
||||
if ($show_spam) {
|
||||
$page_spam = " AND spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$page_spam = " AND IFNULL(spam_list.id, 0) <> ft.tid";
|
||||
}
|
||||
|
||||
$page_threads_SQL = $display_page_threads . $page_spam . $page_threads_and . " ORDER BY sticky DESC, ". $db_thread_order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['threads_per_page']);
|
||||
$result = mysqli_query($connid, $page_threads_SQL) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
$result_count = @mysqli_num_rows($result);
|
||||
if ($result_count > 0) {
|
||||
while ($zeile = mysqli_fetch_array($result)) {
|
||||
$thread_result = @mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, user_type, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply,
|
||||
name, user_name, subject, IF(text='',true,false) AS no_text, category, views, marked, locked, sticky, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE tid = ".$zeile['tid'].$display_spam_query_and."
|
||||
ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if ($show_spam) $thread_spam = "";
|
||||
else $thread_spam = " AND spam_list.id IS NULL";
|
||||
|
||||
$thread_result_sql =
|
||||
"SELECT DISTINCT ft.id, ft.pid, ft.tid, ft.user_id, user_type, ft.time AS rawtime, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, name, user_name, subject, IF(text='',true,false) AS no_text, category, views, marked, locked, sticky, rst.user_id AS req_user, " . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, " . $db_settings['b8_rating_table'] . ".spam AS b8_spam, " . $db_settings['akismet_rating_table'] . ".spam_check_status AS akismet_checked, " . $db_settings['b8_rating_table'] . ".training_type AS b8_checked
|
||||
FROM ".$db_settings['forum_table']." AS ft LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ." LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['akismet_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['b8_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id
|
||||
WHERE ft.tid = ".$zeile['tid'] . $thread_spam . "
|
||||
ORDER BY rawtime ASC";
|
||||
$thread_result = @mysqli_query($connid, $thread_result_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
// put result into arrays:
|
||||
while ($data = mysqli_fetch_array($thread_result)) {
|
||||
|
@ -116,6 +143,13 @@ if ($result_count > 0) {
|
|||
$data = getMessageStatus($data, $last_visit, $fold_threads);
|
||||
// convert formated time to a utf-8:
|
||||
$data['formated_time'] = format_time($lang['time_format'], $data['timestamp']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
// set key 'not_classified_spam_ham' to decide, if an mod or admin should get notified about need of classification with an icon
|
||||
if ((isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] >= 1) && (($settings['akismet_entry_check'] == 1 && $data['akismet_checked'] == 0) || ($settings['b8_entry_check'] == 1 && $data['b8_checked'] == 0))) {
|
||||
$data['not_classified_spam_ham'] = 1;
|
||||
} else {
|
||||
$data['not_classified_spam_ham'] = 0;
|
||||
}
|
||||
// flag spam
|
||||
$data['spam'] = $data['akismet_spam'] || $data['b8_spam'] ? 1 : 0;
|
||||
if ($data['pid'] == 0) $threads[] = $data['id'];
|
||||
|
@ -129,40 +163,22 @@ if ($result_count > 0) {
|
|||
|
||||
// latest postings:
|
||||
if ($settings['latest_postings'] > 0) {
|
||||
$latest_postings_body_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user, rst.time AS read_time
|
||||
FROM ".$db_settings['forum_table']." AS ft LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN (SELECT eid AS id FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid AS id FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
$latest_postings_order_by_sql = " ORDER BY ft.time DESC LIMIT " . $settings['latest_postings'];
|
||||
if ($categories == false) {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply,
|
||||
subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0)
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = "";
|
||||
} else {
|
||||
if ($category > 0) {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply,
|
||||
subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0)
|
||||
AND category = ". intval($category) ."
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = " AND category = " . intval($category);
|
||||
} else {
|
||||
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ft.user_id, UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(ft.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category, rst.user_id AS req_user
|
||||
FROM ".$db_settings['forum_table']." AS ft
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ft.user_id
|
||||
LEFT JOIN ".$db_settings['read_status_table']." AS rst ON rst.posting_id = ft.id AND rst.user_id = ". intval($tmp_user_id) ."
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0)
|
||||
AND category IN (". $category_ids_query .")
|
||||
ORDER BY ft.time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error', mysqli_error($connid));
|
||||
$latest_postings_category_sql = " AND category IN (". mysqli_real_escape_string($connid, $category_ids_query) .")";
|
||||
}
|
||||
}
|
||||
$latest_postings_sql = $latest_postings_body_sql . $latest_postings_category_sql . $latest_postings_order_by_sql;
|
||||
$latest_postings_result = @mysqli_query($connid, $latest_postings_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if (mysqli_num_rows($latest_postings_result) > 0) {
|
||||
$i = 0;
|
||||
|
|
|
@ -62,10 +62,10 @@ switch ($action) {
|
|||
$auto_login_code = $feld['auto_login_code'];
|
||||
}
|
||||
$auto_login_code_cookie = $auto_login_code . intval($feld['user_id']);
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
$save_auto_login = true;
|
||||
} else {
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
}
|
||||
$user_id = $feld["user_id"];
|
||||
$user_name = $feld["user_name"];
|
||||
|
|
|
@ -24,11 +24,6 @@ if (!isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_COOKIE[$
|
|||
include('includes/auto_login.inc.php');
|
||||
}
|
||||
|
||||
// Bad Behavior check:
|
||||
if ($settings['bad_behavior'] == 1 && !isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
require_once("modules/bad-behavior/bad-behavior-generic.php");
|
||||
}
|
||||
|
||||
// access permission checks for not registered users:
|
||||
if ($settings['access_permission_checks'] == 1 && !isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
// look if IP or user agent is banned:
|
||||
|
@ -113,13 +108,13 @@ if (empty($_SESSION[$settings['session_prefix'].'usersettings'])) {
|
|||
$usersettings['page'] = 1;
|
||||
$usersettings['category'] = 0;
|
||||
$_SESSION[$settings['session_prefix'].'usersettings'] = $usersettings;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
|
||||
if (isset($_REQUEST['toggle_sidebar'])) {
|
||||
if (empty($_SESSION[$settings['session_prefix'].'usersettings']['sidebar'])) $_SESSION[$settings['session_prefix'].'usersettings']['sidebar'] = 1;
|
||||
else $_SESSION[$settings['session_prefix'].'usersettings']['sidebar'] = 0;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, sidebar = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['sidebar']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']));
|
||||
|
@ -139,14 +134,13 @@ if (isset($_GET['thread_order']) && isset($_SESSION[$settings['session_prefix'].
|
|||
if ($thread_order != $_SESSION[$settings['session_prefix'].'usersettings']['thread_order']) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['page'] = 1;
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'] = $thread_order;
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$thread_order.'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$thread_order.'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) @mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, thread_order = ". intval($thread_order) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id']));
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['toggle_view']) && in_array($_GET['toggle_view'], array(0, 1))) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['user_view'] = intval($_GET['toggle_view']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'],TIMESTAMP+(3600*24*$settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP+(3600*24*$settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, user_view = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['user_view']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -157,7 +151,7 @@ if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET[
|
|||
}
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['toggle_thread_display']) && in_array($_GET['toggle_thread_display'], array(0, 1)) && isset($_GET['id'])) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'] = intval($_GET['toggle_thread_display']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, thread_display = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['thread_display']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -168,7 +162,7 @@ if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET[
|
|||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']) && isset($_GET['fold_threads']) && in_array($_GET['fold_threads'], array(0, 1))) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'] = intval($_GET['fold_threads']);
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'usersettings', $_SESSION[$settings['session_prefix'].'usersettings']['user_view'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_order'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['sidebar'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['fold_threads'].'.'.$_SESSION[$settings['session_prefix'].'usersettings']['thread_display'], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
// update database for registered users:
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, fold_threads = ". intval($_SESSION[$settings['session_prefix'].'usersettings']['fold_threads']) ." WHERE user_id = ". intval($_SESSION[$settings['session_prefix'].'user_id'])) or die(mysqli_error($connid));
|
||||
|
@ -183,8 +177,8 @@ if(isset($_GET['refresh'])) {
|
|||
if (isset($_SESSION[$settings['session_prefix'].'usersettings']['newtime'])) {
|
||||
$_SESSION[$settings['session_prefix'].'usersettings']['newtime'] = TIMESTAMP;
|
||||
}
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'read', '', 0);
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
setcookie($settings['session_prefix'].'read', '', cookie_options(0));
|
||||
header('location: index.php?mode=index');
|
||||
exit;
|
||||
}
|
||||
|
@ -205,10 +199,11 @@ if (empty($_SESSION[$settings['session_prefix'].'user_id']) && $settings['rememb
|
|||
if ($c_last_visit[1] < (TIMESTAMP - 600)) {
|
||||
$c_last_visit[0] = $c_last_visit[1];
|
||||
$c_last_visit[1] = TIMESTAMP;
|
||||
setcookie($settings['session_prefix'].'last_visit', $c_last_visit[0].".".$c_last_visit[1], TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'last_visit', $c_last_visit[0].".".$c_last_visit[1], cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
}
|
||||
else setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
else
|
||||
setcookie($settings['session_prefix'].'last_visit', TIMESTAMP.".".TIMESTAMP, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
|
||||
if (isset($c_last_visit)) $last_visit = intval($c_last_visit[0]); else $last_visit = TIMESTAMP;
|
||||
|
@ -225,36 +220,46 @@ if (isset($category_ids) && isset($_SESSION[$settings['session_prefix'].'userset
|
|||
}
|
||||
|
||||
// count spam:
|
||||
$count_spam_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 1 OR " . $db_settings['b8_rating_table'] . ".spam = 1)");
|
||||
$count_spam_sql =
|
||||
"SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " AS ft INNER JOIN (SELECT eid FROM " . $db_settings['akismet_rating_table'] . " WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT eid FROM " . $db_settings['b8_rating_table'] . " WHERE " . $db_settings['b8_rating_table'] . ".spam = 1) AS spam_list ON spam_list.eid = ft.id";
|
||||
|
||||
$count_spam_result = mysqli_query($connid, $count_spam_sql);
|
||||
list($total_spam) = mysqli_fetch_row($count_spam_result);
|
||||
mysqli_free_result($count_spam_result);
|
||||
|
||||
// show spam? NOTE: variables are used in several php files, i.e. index.inc.php, thread.inc.php, entry.inc.php
|
||||
$display_spam_query_and = " AND (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0) ";
|
||||
$display_spam_query_where = " WHERE (" . $db_settings['akismet_rating_table'] . ".spam = 0 AND " . $db_settings['b8_rating_table'] . ".spam = 0) ";
|
||||
$show_spam = false;
|
||||
$spam_sql_and = " AND spam_list.id IS NULL";
|
||||
|
||||
if ($total_spam > 0 && isset($_SESSION[$settings['session_prefix'].'usersettings']['show_spam'])) {
|
||||
$display_spam_query_and = " AND ( `tid` IN (SELECT DISTINCT `tid` FROM `" . $db_settings['forum_table'] ."` JOIN `" . $db_settings['akismet_rating_table'] . "` ON `id` = `" . $db_settings['akismet_rating_table'] . "`.`eid` JOIN `" . $db_settings['b8_rating_table'] . "` ON `id` = `" . $db_settings['b8_rating_table'] . "`.`eid` WHERE `" . $db_settings['akismet_rating_table'] . "`.`spam` = 1 OR `" . $db_settings['b8_rating_table'] . "`.`spam` = 1 ) ) ";
|
||||
$display_spam_query_where = " WHERE ( `tid` IN (SELECT DISTINCT `tid` FROM `" . $db_settings['forum_table'] ."` JOIN `" . $db_settings['akismet_rating_table'] . "` ON `id` = `" . $db_settings['akismet_rating_table'] . "`.`eid` JOIN `" . $db_settings['b8_rating_table'] . "` ON `id` = `" . $db_settings['b8_rating_table'] . "`.`eid` WHERE `" . $db_settings['akismet_rating_table'] . "`.`spam` = 1 OR `" . $db_settings['b8_rating_table'] . "`.`spam` = 1 ) ) ";
|
||||
$show_spam = true;
|
||||
$spam_sql_and = " AND spam_list.id IS NOT NULL";
|
||||
}
|
||||
|
||||
// count postings, threads, users and users online:
|
||||
$total_threads_postings_body =
|
||||
"SELECT COUNT(DISTINCT ft.id) FROM " . $db_settings['forum_table'] . " AS ft LEFT JOIN (SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['akismet_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT ".$db_settings['forum_table'].".id, ".$db_settings['forum_table'].".tid FROM ".$db_settings['forum_table']." INNER JOIN " . $db_settings['b8_rating_table'] . " ON ".$db_settings['forum_table'].".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1)";
|
||||
$threads_check_sql = " AND pid = 0";
|
||||
if ($show_spam) {
|
||||
$spam_totals = " AS spam_list ON spam_list.tid = ft.tid WHERE spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$spam_totals = " AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
}
|
||||
if ($categories == false) {
|
||||
// no categories defined
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE pid = 0 " . $display_spam_query_and);
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id " . $display_spam_query_where);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$total_postings_category = "";
|
||||
} else {
|
||||
// there are categories
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE pid = 0 " . $display_spam_query_and . " AND category IN (" . $category_ids_query . ")");
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['forum_table'] . " LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = " . $db_settings['forum_table'] . ".id WHERE category IN (" . $category_ids_query . ")" . $display_spam_query_and);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
$total_postings_category = " AND category IN (" . $category_ids_query . ")";
|
||||
}
|
||||
$total_threads_sql = $total_threads_postings_body . $spam_totals . $total_postings_category . $threads_check_sql;
|
||||
$count_result = mysqli_query($connid, $total_threads_sql);
|
||||
list($total_threads) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
|
||||
$total_postings_sql = $total_threads_postings_body . $spam_totals . $total_postings_category;
|
||||
$count_result = mysqli_query($connid, $total_postings_sql);
|
||||
list($total_postings) = mysqli_fetch_row($count_result);
|
||||
mysqli_free_result($count_result);
|
||||
|
||||
$count_result = mysqli_query($connid, "SELECT COUNT(*) FROM " . $db_settings['userdata_table'] . " WHERE activate_code = ''");
|
||||
list($registered_users) = mysqli_fetch_row($count_result);
|
||||
|
|
|
@ -780,18 +780,27 @@ switch ($action) {
|
|||
if ($id == 0 && $categories != false && empty($categories[$p_category]))
|
||||
$errors[] = 'error_invalid_category';
|
||||
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . " WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
if ($posting_mode == 1 && !empty($field['time'])) {
|
||||
$posting_time = intval($field['time']);
|
||||
} else {
|
||||
$posting_time = time();
|
||||
}
|
||||
if (!$isModOrAdmin) {
|
||||
// name reserved?
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name FROM " . $db_settings['userdata_table'] . "
|
||||
WHERE lower(user_name) = '" . mysqli_real_escape_string($connid, my_strtolower($name, $lang['charset'])) . "'
|
||||
AND registered < FROM_UNIXTIME(". $posting_time .")") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
if (empty($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$errors[] = 'error_name_reserved';
|
||||
} elseif (isset($_SESSION[$settings['session_prefix'] . 'user_id'])) {
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (isset($posting_user_id) && $data['user_id'] != $posting_user_id)
|
||||
$errors[] = 'error_name_reserved';
|
||||
}
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
// check for not accepted words:
|
||||
$joined_message = my_strtolower($name . ' ' . $email . ' ' . $hp . ' ' . $location . ' ' . $subject . ' ' . $text, $lang['charset']);
|
||||
|
@ -1089,7 +1098,7 @@ switch ($action) {
|
|||
// set userdata cookie:
|
||||
if ($settings['remember_userdata'] && isset($setcookie) && $setcookie == 1) {
|
||||
$cookie_data = urlencode($name) . '|' . urlencode($email) . '|' . urlencode($hp) . '|' . urlencode($location);
|
||||
setcookie($settings['session_prefix'] . 'userdata', $cookie_data, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'] . 'userdata', $cookie_data, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
}
|
||||
// If the posting is classified as SPAM, redirect the user to the single entry view, which contains the SPAM warning message
|
||||
if (isset($back) && $back == 'thread' && $spam == 0)
|
||||
|
@ -1201,7 +1210,9 @@ switch ($action) {
|
|||
// current time:
|
||||
list($preview_time) = mysqli_fetch_row(mysqli_query($connid, "SELECT UNIX_TIMESTAMP(NOW() + INTERVAL " . $time_difference . " MINUTE)"));
|
||||
$smarty->assign('preview_timestamp', $preview_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $preview_time);
|
||||
$preview_ISO_time = format_time('YYYY-MM-dd HH:mm:ss', $posting_time);
|
||||
$smarty->assign('preview_ISO_time', $preview_ISO_time);
|
||||
$preview_formated_time = format_time($lang['time_format_full'], $posting_time);
|
||||
$smarty->assign('preview_formated_time', $preview_formated_time);
|
||||
$smarty->assign('uniqid', htmlspecialchars($uniqid));
|
||||
$smarty->assign('posting_mode', intval($posting_mode));
|
||||
|
@ -1616,7 +1627,7 @@ switch ($action) {
|
|||
break;
|
||||
case 'report_spam':
|
||||
$id = intval($_GET['report_spam']);
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
|
@ -1640,7 +1651,8 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('b8_spam', intval($field['b8_spam']));
|
||||
|
@ -1743,7 +1755,7 @@ switch ($action) {
|
|||
break;
|
||||
case 'flag_ham':
|
||||
$id = intval($_GET['flag_ham']);
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
$result = mysqli_query($connid, "SELECT tid, pid, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL " . $time_difference . " MINUTE) AS disp_time,
|
||||
user_id, name, subject, category,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
|
@ -1768,7 +1780,8 @@ switch ($action) {
|
|||
$smarty->assign('pid', intval($field['pid']));
|
||||
$smarty->assign('name', htmlspecialchars($field['name']));
|
||||
$smarty->assign('subject', htmlspecialchars($field['subject']));
|
||||
$smarty->assign('disp_time', htmlspecialchars($field['disp_time']));
|
||||
$smarty->assign('ISO_time', htmlspecialchars(format_time('YYYY-MM-dd HH:mm:ss', $field['time'])));
|
||||
$smarty->assign('formated_time', htmlspecialchars(format_time($lang['time_format_full'], $field['disp_time'])));
|
||||
$smarty->assign('akismet_spam', intval($field['akismet_spam']));
|
||||
$smarty->assign('akismet_spam_check_status', intval($field['spam_check_status']));
|
||||
$smarty->assign('b8_spam', intval($field['b8_spam']));
|
||||
|
@ -1799,7 +1812,7 @@ switch ($action) {
|
|||
break;
|
||||
case 'flag_ham_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'] . 'user_type']) && $_SESSION[$settings['session_prefix'] . 'user_type'] > 0 && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$result = mysqli_query($connid, "SELECT tid, user_id, name, email, hp, subject, location, text,
|
||||
$result = mysqli_query($connid, "SELECT tid, user_id, name, email, hp, subject, location, text, locked,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . "
|
||||
|
@ -1808,7 +1821,11 @@ switch ($action) {
|
|||
WHERE id = " . intval($id) . " LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$data = mysqli_fetch_array($result);
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, locked = 0 WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
if ($data['locked'] == 1 && $data['spam_check_status'] == 0 && $data['training_type'] == 0) {
|
||||
// do nothing and leave the entry locked
|
||||
} else {
|
||||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time = time, last_reply = last_reply, edited = edited, locked = 0 WHERE id = " . intval($id)) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
// Flag HAM in rating tables
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['akismet_rating_table'] . " (`eid`, `spam`, `spam_check_status`) VALUES (" . intval($id) . ", 0, 1)") or raise_error('database_error', mysqli_error($connid));
|
||||
@mysqli_query($connid, "REPLACE INTO " . $db_settings['b8_rating_table'] . " (`eid`, `spam`, `training_type`) VALUES (" . intval($id) . ", 0, 1)") or raise_error('database_error', mysqli_error($connid));
|
||||
|
|
|
@ -49,6 +49,7 @@ if (isset($_GET['search'])) {
|
|||
}
|
||||
$search_array = $stripped_search_array;
|
||||
}
|
||||
$search_string_array = array();
|
||||
foreach ($search_array as $item) {
|
||||
if (my_strpos($item, ' ', 0, CHARSET)) {
|
||||
$item = '"' . $item . '"';
|
||||
|
@ -60,31 +61,30 @@ if (isset($_GET['search'])) {
|
|||
// search...
|
||||
$ham_filter = " (`" . $db_settings['akismet_rating_table'] . "`.`spam` = 0 AND `" . $db_settings['b8_rating_table'] . "`.`spam` = 0) ";
|
||||
if ($method == 'fulltext_or') {
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "category = " . $p_category . " AND " . $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR `category` = " . $p_category . " AND " . $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
else
|
||||
$search_string = $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR " . $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
// fulltext or
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' OR " . $ham_filter . " AND CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%'";
|
||||
} elseif ($method == 'tags') {
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') AND `category` = " . $p_category . " AND " . $ham_filter;
|
||||
else
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') AND " . $ham_filter;
|
||||
// tags
|
||||
$search_string = "(IFNULL(LOWER(`tag`), '') LIKE '%" . implode("%' OR IFNULL(LOWER(`tag`), '') LIKE '%", $search_array) . "%') ";
|
||||
} else {
|
||||
// fulltext
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' AND `category` = " . $p_category . " AND " . $ham_filter;
|
||||
else
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(`name`), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' AND " . $ham_filter;
|
||||
$search_string = "CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%" . implode("%' AND CONCAT(LOWER(`subject`), LOWER(IF(`ft`.`user_id` > 0, (SELECT `user_name` FROM `" . $db_settings['userdata_table'] . "` WHERE `user_id` = `ft`.`user_id`), `name`)), LOWER(`text`), IFNULL(LOWER(`tag`), '')) LIKE '%", $search_array) . "%' ";
|
||||
}
|
||||
|
||||
$search_string = $ham_filter . " AND " . $search_string;
|
||||
|
||||
// restrict to category
|
||||
if (isset($p_category) && $p_category != 0)
|
||||
$search_string = "category = " . $p_category . " AND " . $search_string;
|
||||
|
||||
// count results:
|
||||
if ($search != '') {
|
||||
$sql = "SELECT COUNT(DISTINCT `" . $db_settings['forum_table'] . "`.`id`)
|
||||
FROM `" . $db_settings['forum_table'] . "`
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `" . $db_settings['forum_table'] . "`.`id`
|
||||
$sql = "SELECT COUNT(DISTINCT `ft`.`id`)
|
||||
FROM `" . $db_settings['forum_table'] . "` AS `ft`
|
||||
LEFT JOIN `" . $db_settings['entry_tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`bid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['tags_table'] . "` ON `" . $db_settings['entry_tags_table'] . "`.`tid` = `" . $db_settings['tags_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['akismet_rating_table'] . "` ON `" . $db_settings['akismet_rating_table'] . "`.`eid` = `" . $db_settings['forum_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['b8_rating_table'] . "` ON `" . $db_settings['b8_rating_table'] . "`.`eid` = `" . $db_settings['forum_table'] . "`.`id`
|
||||
LEFT JOIN `" . $db_settings['akismet_rating_table'] . "` ON `" . $db_settings['akismet_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
LEFT JOIN `" . $db_settings['b8_rating_table'] . "` ON `" . $db_settings['b8_rating_table'] . "`.`eid` = `ft`.`id`
|
||||
WHERE ";
|
||||
|
||||
if ($categories != false)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?php
|
||||
|
||||
|
||||
if (!defined('IN_INDEX')) {
|
||||
header('Location: ../index.php');
|
||||
exit;
|
||||
|
@ -63,25 +65,35 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
@mysqli_query($connid, "UPDATE " . $db_settings['forum_table'] . " SET time=time, last_reply=last_reply, edited=edited, views=views+1 WHERE tid=" . $id);
|
||||
|
||||
$smarty->assign('page_title', htmlspecialchars($data['subject']));
|
||||
$smarty->assign('category_name', $categories[$data["category"]]);
|
||||
if (isset($categories[$data['category']]) && $categories[$data['category']] != '')
|
||||
$smarty->assign('category_name', $categories[$data["category"]]);
|
||||
|
||||
if ($show_spam) {
|
||||
$thread_spam = " AS spam_list ON spam_list.tid = ft.tid WHERE spam_list.id IS NOT NULL";
|
||||
} else {
|
||||
$thread_spam = " AS spam_list ON spam_list.id = ft.id WHERE spam_list.id IS NULL";
|
||||
}
|
||||
|
||||
// get all postings of thread:
|
||||
$result = mysqli_query($connid, "SELECT id, pid, tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . intval($time_difference) . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply + INTERVAL " . intval($time_difference) . " MINUTE) AS last_reply,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, views, category, locked, ip,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id=ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id=ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id=" . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".`eid` = `ft`.`id`
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".`eid` = `ft`.`id`
|
||||
WHERE tid = " . $tid . $display_spam_query_and . " ORDER BY ft.time ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
$thread_sql =
|
||||
"SELECT ft.id, ft.pid, ft.tid, ft.user_id, UNIX_TIMESTAMP(ft.time + INTERVAL " . intval($time_difference) . " MINUTE) AS disp_time,
|
||||
UNIX_TIMESTAMP(last_reply + INTERVAL " . intval($time_difference) . " MINUTE) AS last_reply,
|
||||
UNIX_TIMESTAMP(ft.time) AS time, UNIX_TIMESTAMP(edited) AS edited_time, UNIX_TIMESTAMP(edited + INTERVAL " . intval($time_difference) . " MINUTE) AS e_time,
|
||||
UNIX_TIMESTAMP(edited - INTERVAL " . $settings['edit_delay'] . " MINUTE) AS edited_diff, edited_by, name, email,
|
||||
subject, hp, location, ip, text, cache_text, show_signature, views, category, locked, ip,
|
||||
user_name, user_type, user_email, email_contact, user_hp, user_location, signature, cache_signature, edit_key, rst.user_id AS req_user,
|
||||
" . $db_settings['akismet_rating_table'] . ".spam AS akismet_spam, spam_check_status,
|
||||
" . $db_settings['b8_rating_table'] . ".spam AS b8_spam, training_type
|
||||
FROM " . $db_settings['forum_table'] . " AS ft
|
||||
LEFT JOIN " . $db_settings['entry_cache_table'] . " ON " . $db_settings['entry_cache_table'] . ".cache_id = ft.id
|
||||
LEFT JOIN " . $db_settings['userdata_table'] . " ON " . $db_settings['userdata_table'] . ".user_id = ft.user_id
|
||||
LEFT JOIN " . $db_settings['userdata_cache_table'] . " ON " . $db_settings['userdata_cache_table'] . ".cache_id = " . $db_settings['userdata_table'] . ".user_id
|
||||
LEFT JOIN " . $db_settings['read_status_table'] . " AS rst ON rst.posting_id = ft.id AND rst.user_id = " . intval($tmp_user_id) . "
|
||||
LEFT JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['akismet_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['b8_rating_table'] . ".eid = ft.id
|
||||
LEFT JOIN (SELECT " . $db_settings['forum_table'] . ".id, " . $db_settings['forum_table'] . ".tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['akismet_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['akismet_rating_table'] . ".eid WHERE " . $db_settings['akismet_rating_table'] . ".spam = 1 UNION SELECT " . $db_settings['forum_table'] . ".id, " . $db_settings['forum_table'] . ".tid FROM " . $db_settings['forum_table'] . " INNER JOIN " . $db_settings['b8_rating_table'] . " ON " . $db_settings['forum_table'] . ".id = " . $db_settings['b8_rating_table'] . ".eid WHERE " . $db_settings['b8_rating_table'] . ".spam = 1)
|
||||
" . $thread_spam . " AND ft.tid = " . $tid . " ORDER BY ft.time ASC";
|
||||
$result = mysqli_query($connid, $thread_sql) or raise_error('database_error', mysqli_error($connid));
|
||||
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
while ($data = mysqli_fetch_array($result)) {
|
||||
|
@ -105,6 +117,8 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$data['tags'] = $tags_array;
|
||||
}
|
||||
$data['formated_time'] = format_time($lang['time_format_full'], $data['disp_time']);
|
||||
$data['ISO_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['time']);
|
||||
|
||||
$ago['days'] = floor((TIMESTAMP - $data['time']) / 86400);
|
||||
$ago['hours'] = floor(((TIMESTAMP - $data['time']) / 3600) - ($ago['days'] * 24));
|
||||
$ago['minutes'] = floor(((TIMESTAMP - $data['time']) / 60) - ($ago['hours'] * 60 + $ago['days'] * 1440));
|
||||
|
@ -154,6 +168,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
if ($data['edited_diff'] > 0 && $data["edited_diff"] > $data["time"] && $settings['show_if_edited'] == 1) {
|
||||
$data['edited'] = true;
|
||||
$data['formated_edit_time'] = format_time($lang['time_format_full'], $data['e_time']);
|
||||
$data['ISO_edit_time'] = format_time('YYYY-MM-dd HH:mm:ss', $data['edited_time']);
|
||||
if ($data['user_id'] == $data['edited_by'])
|
||||
$data['edited_by'] = $data['name'];
|
||||
else {
|
||||
|
@ -178,7 +193,7 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
}
|
||||
|
||||
if (isset($data['signature']) && $data['signature'] != '' && $data["show_signature"] == 1) {
|
||||
// user has a signature and wants it to be displaed in this posting. Check if it's already cached:
|
||||
// user has a signature and wants it to be displayed in this posting. Check if it's already cached:
|
||||
if ($data['cache_signature'] != '') {
|
||||
$data['signature'] = $data['cache_signature'];
|
||||
} else {
|
||||
|
@ -275,4 +290,5 @@ if (is_array($category_ids) && !in_array($data['category'], $category_ids)) {
|
|||
$smarty->assign('subtemplate', 'thread_linear.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -14,7 +14,8 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
unset($errors);
|
||||
$user_id = (isset($_SESSION[$settings['session_prefix'].'user_id'])) ? intval($_SESSION[$settings['session_prefix'].'user_id']) : NULL;
|
||||
$image_info = getimagesize($_FILES['probe']['tmp_name']);
|
||||
if (!is_array($image_info) || $image_info[2] != 1 && $image_info[2] != 2 && $image_info[2] != 3)
|
||||
$imageMIME = mime_content_type($_FILES['probe']['tmp_name']);
|
||||
if (!is_array($image_info) || !in_array($imageMIME, ['image/gif', 'image/jpeg', 'image/png', 'image/webp']))
|
||||
$errors[] = 'invalid_file_format';
|
||||
|
||||
if (empty($errors)) {
|
||||
|
@ -41,7 +42,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
break;
|
||||
}
|
||||
$file_size = @filesize($uploaded_images_path.$img_tmp_name);
|
||||
if ($image_info[2] != 2 && $file_size > $settings['upload_max_img_size'] * 1000) break;
|
||||
if ($imageMIME != 'image/jpeg' && $file_size > $settings['upload_max_img_size'] * 1000) break;
|
||||
if ($file_size <= $settings['upload_max_img_size'] * 1000) break;
|
||||
}
|
||||
if ($file_size > $settings['upload_max_img_size'] * 1000) {
|
||||
|
@ -64,16 +65,19 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
|
||||
if (empty($errors)) {
|
||||
$filename = gmdate("YmdHis").uniqid('');
|
||||
switch($image_info[2]) {
|
||||
case 1:
|
||||
switch($imageMIME) {
|
||||
case 'image/gif':
|
||||
$filename .= '.gif';
|
||||
break;
|
||||
case 2:
|
||||
case 'image/jpeg':
|
||||
$filename .= '.jpg';
|
||||
break;
|
||||
case 3:
|
||||
case 'image/png':
|
||||
$filename .= '.png';
|
||||
break;
|
||||
case 'image/webp':
|
||||
$filename .= '.webp';
|
||||
break;
|
||||
}
|
||||
if (isset($img_tmp_name)) {
|
||||
@rename($uploaded_images_path.$img_tmp_name, $uploaded_images_path.$filename) or $errors[] = 'upload_error';
|
||||
|
@ -89,7 +93,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
@chmod($uploaded_images_path.$filename, 0644);
|
||||
// $user_id can be NULL (see around line #15), because of that do not handle it with intval()
|
||||
// see therefore variable definition of $user_id around line 15 of this script
|
||||
$qSetUpload = "INSERT INTO " . $db_settings['uploads_table'] . " (uploader, filename, tstamp) VALUES (". $user_id .", '" . mysqli_real_escape_string($connid, $filename) . "', NOW())";
|
||||
$qSetUpload = "INSERT INTO " . $db_settings['uploads_table'] . " (uploader, pathname, tstamp) VALUES (". $user_id .", '" . mysqli_real_escape_string($connid, $filename) . "', NOW())";
|
||||
mysqli_query($connid, $qSetUpload);
|
||||
$smarty->assign('uploaded_file', $filename);
|
||||
} else {
|
||||
|
@ -105,7 +109,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
$smarty->assign('delete', htmlspecialchars($_REQUEST['delete']));
|
||||
if (isset($_REQUEST['current'])) $smarty->assign('current', intval($_REQUEST['current']));
|
||||
} else {
|
||||
if (preg_match('/^([a-z0-9]+)\.(gif|jpg|png)$/', $_REQUEST['delete']) && file_exists($uploaded_images_path.$_REQUEST['delete'])) {
|
||||
if (preg_match('/^([a-z0-9]+)\.(gif|jpg|png|webp)$/', $_REQUEST['delete']) && file_exists($uploaded_images_path.$_REQUEST['delete'])) {
|
||||
@chmod($uploaded_images_path.$_REQUEST['delete'], 0777);
|
||||
@unlink($uploaded_images_path.$_REQUEST['delete']);
|
||||
}
|
||||
|
@ -123,7 +127,7 @@ if (($settings['upload_images'] == 1 && isset($_SESSION[$settings['session_prefi
|
|||
if ($browse_images < 1) $browse_images = 1;
|
||||
$handle = opendir($uploaded_images_path);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.jpg$/i', $file) || preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file)) {
|
||||
if (preg_match('/\.(gif|png|jpe?g|svg|webp)$/i', $file)) {
|
||||
$images[] = $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,101 +31,107 @@ $isUser = isset($_SESSION[$settings['session_prefix'].'user_type']) && isset($_S
|
|||
$isModOrAdmin = $isUser && ($_SESSION[$settings['session_prefix'].'user_type'] == 1 || $_SESSION[$settings['session_prefix'].'user_type'] == 2);
|
||||
|
||||
// on action event main *AND* only team members ($settings['user_area_access'] = 0) or registered users ($settings['user_area_access'] = 1) have access to this section or the user area is public ($settings['user_area_access'] = 2):
|
||||
$hasUserAreaAccess = $action == 'main' && ($settings['user_area_access'] == 2 || ($settings['user_area_access'] == 1 && $isUser) || ($settings['user_area_access'] == 2 && $isModOrAdmin));
|
||||
$hasUserAreaAccess = $action == 'main' && ($settings['user_area_access'] == 2 || ($settings['user_area_access'] == 1 && $isUser) || $isModOrAdmin);
|
||||
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAccess) {
|
||||
if ($isUser || $hasUserAreaAccess) {
|
||||
switch($action) {
|
||||
case 'main':
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8mb4_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
if ($hasUserAreaAccess) {
|
||||
if (isset($_GET['search_user']) && trim($_GET['search_user']) != '') $search_user = trim($_GET['search_user']);
|
||||
|
||||
// count users and pages:
|
||||
if (isset($search_user)) {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = '' AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'");
|
||||
} else {
|
||||
$user_count_result = mysqli_query($connid, "SELECT COUNT(*) FROM ".$db_settings['userdata_table']." WHERE activate_code = ''");
|
||||
}
|
||||
list($total_users) = mysqli_fetch_row($user_count_result);
|
||||
mysqli_free_result($user_count_result);
|
||||
$total_pages = ceil($total_users / $settings['users_per_page']);
|
||||
|
||||
// who is online:
|
||||
if ($settings['count_users_online'] > 0) {
|
||||
$useronline_result = mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_name COLLATE utf8mb4_general_ci AS user_name, ".$db_settings['useronline_table'].".user_id
|
||||
FROM ".$db_settings['useronline_table']."
|
||||
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id = ".$db_settings['useronline_table'].".user_id
|
||||
WHERE ".$db_settings['useronline_table'].".user_id > 0
|
||||
ORDER BY user_name ASC") or raise_error('database_error', mysqli_error($connid));
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while($uid_field = mysqli_fetch_array($useronline_result)) {
|
||||
$useronline_array[] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['id'] = intval($uid_field['user_id']);
|
||||
$users_online[$i]['name'] = htmlspecialchars($uid_field['user_name']);
|
||||
++$i;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (!empty($userdata[$i]['user_hp']) && trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
}
|
||||
mysqli_free_result($useronline_result);
|
||||
}
|
||||
|
||||
if (isset($users_online)) $smarty->assign('users_online', $users_online);
|
||||
|
||||
if (isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
|
||||
if ($page > $total_pages) $page = $total_pages;
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
if (isset($_GET['order'])) $order = $_GET['order']; else $order='user_name';
|
||||
if ($order != 'user_id' && $order != 'user_name' && $order != 'user_email' && $order != 'user_type' && $order != 'registered' && $order != 'logins' && $order != 'last_login' && $order != 'user_lock' && $order != 'user_hp' && $order != 'email_contact' && $order != 'online') $order = 'user_name';
|
||||
if ($order == 'user_lock' && (empty($_SESSION[$settings['session_prefix'].'user_type']) || isset($_SESSION[$settings['session_prefix'].'user_type']) && $_SESSION[$settings['session_prefix'].'user_type'] < 1)) $order = 'user_name';
|
||||
if (isset($_GET['descasc'])) $descasc = $_GET['descasc']; else $descasc = "ASC";
|
||||
if ($descasc != 'DESC' && $descasc != 'ASC') $descasc = 'ASC';
|
||||
|
||||
$ul = ($page - 1) * $settings['users_per_page'];
|
||||
|
||||
// get userdata:
|
||||
$category_query_add = '';
|
||||
|
||||
if (isset($search_user)) {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ." AND lower(user_name) LIKE '%". mysqli_real_escape_string($connid, my_strtolower($search_user, $lang['charset'])) ."%'
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
} else {
|
||||
$result = @mysqli_query($connid, "SELECT ".$db_settings['userdata_table'].".user_id, user_name COLLATE utf8mb4_general_ci AS user_name, user_type, user_email, email_contact, user_hp, user_lock
|
||||
FROM ".$db_settings['userdata_table']."
|
||||
WHERE activate_code = ''". $category_query_add ."
|
||||
ORDER BY ". $order ." ". $descasc ." LIMIT ". intval($ul) .", ". intval($settings['users_per_page'])) or raise_error('database_error', mysqli_error($connid));
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$userdata[$i]['user_id'] = intval($row['user_id']);
|
||||
$userdata[$i]['user_name'] = htmlspecialchars($row['user_name']);
|
||||
if ($isModOrAdmin || $isUser && $row['email_contact'] > 0 || $row['email_contact'] == 2)
|
||||
$userdata[$i]['user_email'] = TRUE;
|
||||
$userdata[$i]['user_hp'] = htmlspecialchars($row['user_hp']);
|
||||
if (!empty($userdata[$i]['user_hp']) && trim($userdata[$i]['user_hp']) != '') {
|
||||
$userdata[$i]['user_hp'] = add_http_if_no_protocol($userdata[$i]['user_hp']);
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
}
|
||||
$userdata[$i]['user_type'] = intval($row['user_type']);
|
||||
$userdata[$i]['user_lock'] = $row['user_lock'];
|
||||
$i++;
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
}
|
||||
mysqli_free_result($result);
|
||||
|
||||
$smarty->assign('pagination', pagination($total_pages, $page, 3));
|
||||
|
||||
if (isset($userdata)) $smarty->assign('userdata', $userdata);
|
||||
$smarty->assign('total_users',$total_users);
|
||||
|
||||
if (isset($search_user)) {
|
||||
$smarty->assign('search_user', htmlspecialchars($search_user));
|
||||
$smarty->assign('search_user_encoded', urlencode($search_user));
|
||||
else {
|
||||
header("Location: index.php");
|
||||
exit;
|
||||
}
|
||||
$smarty->assign('order', $order);
|
||||
$smarty->assign('descasc', $descasc);
|
||||
$smarty->assign('ul', $ul);
|
||||
$smarty->assign('page', $page);
|
||||
$smarty->assign('subnav_location', 'subnav_userarea');
|
||||
$smarty->assign('subtemplate', 'user.inc.tpl');
|
||||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'user_lock':
|
||||
if (isset($_GET['page'])) {
|
||||
|
@ -208,6 +214,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$smarty->assign('logins_per_day', number_format($row['logins'] / $days_registered, 2));
|
||||
$smarty->assign('postings_per_day', number_format($postings / $days_registered, 2));
|
||||
$smarty->assign('last_posting_id', intval($last_posting['id']));
|
||||
$smarty->assign('last_posting_formated_time', htmlspecialchars(format_time($lang['time_format_full'], $last_posting['disp_time'])));
|
||||
$smarty->assign('last_posting_time', $last_posting['disp_time']);
|
||||
$smarty->assign('last_posting_subject', htmlspecialchars($last_posting['subject']));
|
||||
|
||||
|
@ -297,7 +304,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$user_postings_data[$i]['pid'] = intval($row['pid']);
|
||||
$user_postings_data[$i]['name'] = htmlspecialchars($user_name);
|
||||
$user_postings_data[$i]['subject'] = htmlspecialchars($row['subject']);
|
||||
$user_postings_data[$i]['disp_time'] = $row['disp_time'];
|
||||
$user_postings_data[$i]['disp_time'] = format_time($lang['time_format_full'], $row['disp_time']);
|
||||
if (isset($categories[$row['category']]) && $categories[$row['category']] != '') {
|
||||
$user_postings_data[$i]['category'] = $row["category"];
|
||||
$user_postings_data[$i]['category_name'] = $categories[$row["category"]];
|
||||
|
@ -319,7 +326,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$template = 'main.tpl';
|
||||
break;
|
||||
case 'edit_profile':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT user_id, user_name, user_real_name, gender, birthday, user_email, email_contact, user_hp, user_location, signature, profile, new_posting_notification, new_user_notification, browser_window_target, auto_login_code, language, time_zone, time_difference, theme FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$row = mysqli_fetch_array($result);
|
||||
|
@ -430,7 +437,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_userdata':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
|
||||
$id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
if (isset($_POST['email_contact']))
|
||||
$email_contact = intval($_POST['email_contact']);
|
||||
|
@ -656,10 +663,10 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$auto_login_code = $row['auto_login_code'];
|
||||
}
|
||||
$auto_login_code_cookie = $auto_login_code . intval($id);
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days']));
|
||||
setcookie($settings['session_prefix'].'auto_login', $auto_login_code_cookie, cookie_options(TIMESTAMP + (3600 * 24 * $settings['cookie_validity_days'])));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, auto_login_code = '". mysqli_real_escape_string($connid, $auto_login_code) ."' WHERE user_id = ". intval($id));
|
||||
} else {
|
||||
setcookie($settings['session_prefix'].'auto_login', '', 0);
|
||||
setcookie($settings['session_prefix'].'auto_login', '', cookie_options(0));
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET last_login = last_login, last_logout = last_logout, registered = registered, auto_login_code = '' WHERE user_id = ". intval($id));
|
||||
}
|
||||
|
||||
|
@ -680,7 +687,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'remove_account':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = mysqli_query($connid, "SELECT `user_name` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
|
@ -699,7 +706,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'remove_account_submitted':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$result = @mysqli_query($connid, "SELECT `user_name`, `user_pw` FROM `".$db_settings['userdata_table']."` WHERE `user_id` = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
if (mysqli_num_rows($result) == 1) {
|
||||
|
@ -715,7 +722,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
$_SESSION[$settings['session_prefix'].'user_name'] = '';
|
||||
$_SESSION[$settings['session_prefix'].'user_type'] = 0;
|
||||
$_SESSION['csrf_token'] = Null;
|
||||
setcookie($settings['session_prefix'].'userdata', '', 0);
|
||||
setcookie($settings['session_prefix'].'userdata', '', cookie_options(0));
|
||||
|
||||
header('location: index.php?mode=index');
|
||||
exit;
|
||||
|
@ -737,7 +744,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_pw':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -749,7 +756,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_pw_submitted':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$user_id = $_SESSION[$settings['session_prefix'].'user_id'];
|
||||
$pw_result = mysqli_query($connid, "SELECT user_pw FROM ".$db_settings['userdata_table']." WHERE user_id = ". intval($user_id) ." LIMIT 1") or raise_error('database_error', mysqli_error($connid));
|
||||
$field = mysqli_fetch_array($pw_result);
|
||||
|
@ -805,7 +812,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_email':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id'])) {
|
||||
if ($isUser) {
|
||||
$breadcrumbs[0]['link'] = 'index.php?mode=user';
|
||||
$breadcrumbs[0]['linkname'] = 'subnav_userarea';
|
||||
$breadcrumbs[1]['link'] = 'index.php?mode=user&action=edit_profile';
|
||||
|
@ -817,7 +824,7 @@ if (isset($_SESSION[$settings['session_prefix'].'user_id']) || $hasUserAreaAcces
|
|||
}
|
||||
break;
|
||||
case 'edit_email_submit':
|
||||
if (isset($_SESSION[$settings['session_prefix'].'user_id']) && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
if ($isUser && isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
|
||||
$new_email = (!empty($_POST['new_email'])) ? trim($_POST['new_email']) : '';
|
||||
$new_email_confirm = (!empty($_POST['new_email_confirm'])) ? trim($_POST['new_email_confirm']) : '';
|
||||
$pw_new_email = $_POST['pw_new_email'];
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
* @author Mark Alexander Hoschek < alex at mylittleforum dot net >
|
||||
* @author Michael Lösler (https://github.com/loesler)
|
||||
* @author Heiko August (https://github.com/auge8472)
|
||||
* @copyright 2006-2022 Mark Alexander Hoschek
|
||||
* @version 20220508.1 (2022-05-08)
|
||||
* @copyright 2006-2025 Mark Alexander Hoschek
|
||||
* @version 20250323.1 (2025-03-23)
|
||||
* @link https://mylittleforum.net/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
|
@ -28,6 +28,7 @@ define('IN_INDEX', true);
|
|||
define('LANG_DIR', 'lang');
|
||||
define('THEMES_DIR', 'themes');
|
||||
|
||||
session_set_cookie_params(['samesite' => 'strict']);
|
||||
session_start();
|
||||
|
||||
include('config/db_settings.php');
|
||||
|
|
|
@ -37,12 +37,91 @@ function table_exists($table) {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* parses the relavant language file parts for the installation script
|
||||
*
|
||||
* the function reads the language file like a ini-file
|
||||
* this function comes without multiline support (no e-mail templates)
|
||||
* the code is based on the function in a comment on the
|
||||
* manual page for the PHP-function parse_ini_string
|
||||
* https://www.php.net/manual/de/function.parse-ini-string.php#111845
|
||||
*
|
||||
*/
|
||||
function my_parse_ini_file($path) {
|
||||
if (empty($path)) return false;
|
||||
|
||||
$lines = file($path);
|
||||
$ret = Array();
|
||||
$inside_section = false;
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if (!$line || $line[0] == "#" || $line[0] == ";") continue;
|
||||
|
||||
if ($line[0] == "[" && $endIdx = strpos($line, "]")) {
|
||||
$inside_section = substr($line, 1, $endIdx-1);
|
||||
continue;
|
||||
}
|
||||
if (!strpos($line, '=')) continue;
|
||||
$tmp = explode("=", $line, 2);
|
||||
|
||||
$key = rtrim($tmp[0]);
|
||||
$value = ltrim($tmp[1]);
|
||||
if (preg_match("/^\".*\"$/", $value) || preg_match("/^'.*'$/", $value)) {
|
||||
$value = mb_substr($value, 1, mb_strlen($value) - 2);
|
||||
}
|
||||
$value = stripslashes($value);
|
||||
|
||||
if ($inside_section) {
|
||||
$t = preg_match("^\[(.*?)\]^", $key, $matches);
|
||||
if (!empty($matches) && isset($matches[0])) {
|
||||
$arr_name = preg_replace('#\[(.*?)\]#is', '', $key);
|
||||
if (!isset($ret[$inside_section][$arr_name]) || !is_array($ret[$inside_section][$arr_name])) {
|
||||
$ret[$inside_section][$arr_name] = array();
|
||||
}
|
||||
if (isset($matches[1]) && !empty($matches[1])) {
|
||||
$ret[$inside_section][$arr_name][$matches[1]] = $value;
|
||||
} else {
|
||||
$ret[$inside_section][$arr_name][] = $value;
|
||||
}
|
||||
} else {
|
||||
if (isset($ret[$inside_section][$key])) {
|
||||
if (!is_array($ret[$inside_section][$key])) {
|
||||
$atmp = $ret[$inside_section][$key];
|
||||
$ret[$inside_section][$key] = [];
|
||||
$ret[$inside_section][$key][] = $atmp;
|
||||
$ret[$inside_section][$key][] = $value;
|
||||
} else {
|
||||
$ret[$inside_section][$key][] = $value;
|
||||
}
|
||||
} else {
|
||||
$ret[$inside_section][$key] = $value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($ret[$key])) {
|
||||
if (!is_array($ret[$key])) {
|
||||
$atmp = $ret[$key];
|
||||
$ret[$key] = [];
|
||||
$ret[$key][] = $atmp;
|
||||
$ret[$key][] = $value;
|
||||
} else {
|
||||
$ret[$key][] = $value;
|
||||
}
|
||||
} else {
|
||||
$ret[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// check version:
|
||||
if(!file_exists('../config/VERSION')) {
|
||||
die('Error in line '.__LINE__.': Missing the file config/VERSION.');
|
||||
} else {
|
||||
$newVersion = file_get_contents('../config/VERSION');
|
||||
if (empty($newVersion) die('Error in line '.__LINE__.': No value for the script version in the file config/VERSION.');
|
||||
if (empty($newVersion)) die('Error in line '.__LINE__.': No value for the script version in the file config/VERSION.');
|
||||
else $newVersion = trim($newVersion);
|
||||
}
|
||||
|
||||
|
@ -99,46 +178,27 @@ if (isset($language_file)) {
|
|||
// quick & dirty method to get the config vars without smarty (prevents
|
||||
// creation of a compiled template which would only be used once for the
|
||||
// installation - doesn't get multi-line-strings properly!):
|
||||
$config_file = file('../lang/'.$language_file);
|
||||
foreach ($config_file as $line) {
|
||||
$line = trim($line);
|
||||
if ($line != '' && $line[0] != '[') {
|
||||
$line_parts = explode('=', $line,2);
|
||||
if (isset($line_parts[1])) {
|
||||
$key = trim($line_parts[0]);
|
||||
if (isset($lang[$key])) {
|
||||
if(is_array($lang[$key])) {
|
||||
$lang[$key][] = trim($line_parts[1]);
|
||||
} else {
|
||||
$lang[$key] = array($lang[$key]);
|
||||
$lang[$key][] = trim($line_parts[1]);
|
||||
}
|
||||
} else {
|
||||
$lang[$key] = trim($line_parts[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$lang = my_parse_ini_file('../lang/'.$language_file);
|
||||
}
|
||||
|
||||
if (isset($_POST['install_submit'])) {
|
||||
// are all fields filled out?
|
||||
foreach ($_POST as $post) {
|
||||
if (trim($post) == "") {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (empty($errors)) {
|
||||
if ($_POST['admin_pw'] != $_POST['admin_pw_conf']) $errors[] = $lang['error_conf_pw'];
|
||||
if ($_POST['admin_pw'] != $_POST['admin_pw_conf']) $errors[] = $lang['install']['error_conf_pw'];
|
||||
}
|
||||
// try to connect the database with posted access data:
|
||||
if (empty($errors)) {
|
||||
$connid = @mysqli_connect($_POST['host'], $_POST['user'], $_POST['password']);
|
||||
if (!$connid) $errors[] = $lang['error_db_connection']." (MySQL: ".mysqli_connect_error().")";
|
||||
if (!$connid) $errors[] = $lang['install']['error_db_connection']." (MySQL: ".mysqli_connect_error().")";
|
||||
}
|
||||
if (empty($errors)) {
|
||||
if (!file_exists('install.sql')) $errors[] = $lang['error_sql_file_doesnt_exist'];
|
||||
if (!file_exists('install.sql')) $errors[] = $lang['install']['error_sql_file_doesnt_exist'];
|
||||
}
|
||||
|
||||
// overwrite database settings file:
|
||||
|
@ -175,18 +235,18 @@ if (isset($_POST['install_submit'])) {
|
|||
foreach ($db_connection_keys as $key) {
|
||||
// Check POST-data and reject data that contains html or php code like <?php
|
||||
if (!isset($_POST[$key]) || $_POST[$key] != strip_tags($_POST[$key])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
break;
|
||||
}
|
||||
$db_settings[$key] = $_POST[$key];
|
||||
}
|
||||
// check table_prefix
|
||||
if (!isset($_POST['table_prefix']) || $_POST['table_prefix'] != strip_tags($_POST['table_prefix'])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
}
|
||||
|
||||
if (empty($errors)) {
|
||||
$db_settings_file = @fopen("../config/db_settings.php", "w") or $errors[] = str_replace("[CHMOD]", $chmod, $lang['error_overwrite_config_file']);
|
||||
$db_settings_file = @fopen("../config/db_settings.php", "w") or $errors[] = str_replace("[CHMOD]", $chmod, $lang['install']['error_overwrite_config_file']);
|
||||
flock($db_settings_file, 2);
|
||||
fwrite($db_settings_file, "<?php\n");
|
||||
foreach ($db_connection_keys as $key) {
|
||||
|
@ -204,39 +264,40 @@ if (isset($_POST['install_submit'])) {
|
|||
|
||||
if (empty($errors) && isset($_POST['create_database'])) {
|
||||
// create database if desired:
|
||||
@mysqli_query($connid, "CREATE DATABASE ".$db_settings['database']) or $errors[] = $lang['create_db_error']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "CREATE DATABASE ".$db_settings['database']) or $errors[] = $lang['install']['create_db_error']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
|
||||
// select database:
|
||||
if (empty($errors)) {
|
||||
@mysqli_select_db($connid, $db_settings['database']) or $errors[] = $lang['error_db_inexistent']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_select_db($connid, $db_settings['database']) or $errors[] = $lang['install']['error_db_inexistent']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, 'SET NAMES utf8');
|
||||
}
|
||||
|
||||
// run installation sql file:
|
||||
if(empty($errors)) {
|
||||
if (!isset($_POST['table_prefix']) || $_POST['table_prefix'] != strip_tags($_POST['table_prefix'])) {
|
||||
$errors[] = $lang['error_form_uncomplete'];
|
||||
$errors[] = $lang['general']['error_form_uncomplete'];
|
||||
} else {
|
||||
$lines = file('install.sql');
|
||||
$cleared_lines = array();
|
||||
foreach($lines as $line) {
|
||||
foreach ($lines as $line) {
|
||||
$line = str_replace(' mlf2_', ' '.$_POST['table_prefix'], $line);
|
||||
$line = str_replace('`smbl_mlf2_', '`smbl_'.$_POST['table_prefix'], $line);
|
||||
$line = trim($line);
|
||||
if (my_substr($line, -1, my_strlen($line,$lang['charset']), $lang['charset']) == ';')
|
||||
$line = my_substr($line,0,-1,$lang['charset']);
|
||||
if($line != '' && my_substr($line,0,1,$lang['charset']) != '#')
|
||||
if (my_substr($line, -1, my_strlen($line, $lang['default']['charset']), $lang['default']['charset']) == ';')
|
||||
$line = my_substr($line,0,-1,$lang['default']['charset']);
|
||||
if ($line != '' && my_substr($line,0,1,$lang['default']['charset']) != '#')
|
||||
$cleared_lines[] = $line;
|
||||
}
|
||||
|
||||
@mysqli_query($connid, "START TRANSACTION") or die(mysqli_error($connid));
|
||||
foreach ($cleared_lines as $line) {
|
||||
if (!@mysqli_query($connid, $line)) {
|
||||
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
$errors[] = $lang['install']['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
}
|
||||
if (!@mysqli_query($connid, "INSERT INTO " . $db_settings['temp_infos_table'] . " (`name`, `value`) VALUES ('version', '". mysqli_real_escape_string($connid, $newVersion) ."');")) {
|
||||
$errors[] = $lang['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
$errors[] = $lang['install']['error_sql']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
@mysqli_query($connid, "COMMIT");
|
||||
}
|
||||
|
@ -245,15 +306,15 @@ if (isset($_POST['install_submit'])) {
|
|||
// insert admin in userdata table:
|
||||
if (empty($errors)) {
|
||||
$pw_hash = generate_pw_hash($_POST['admin_pw']);
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET user_name='".mysqli_real_escape_string($connid, $_POST['admin_name'])."', user_pw = '".mysqli_real_escape_string($connid, $pw_hash)."', user_email = '".mysqli_real_escape_string($connid, $_POST['admin_email'])."' WHERE user_id=1") or $errors[] = $lang['error_create_admin']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['userdata_table']." SET user_name='".mysqli_real_escape_string($connid, $_POST['admin_name'])."', user_pw = '".mysqli_real_escape_string($connid, $pw_hash)."', user_email = '".mysqli_real_escape_string($connid, $_POST['admin_email'])."' WHERE user_id=1") or $errors[] = $lang['install']['error_create_admin']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
|
||||
// set forum name, address and email address:
|
||||
if (empty($errors)) {
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_name'])."' WHERE name='forum_name' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_address'])."' WHERE name='forum_address' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_email'])."' WHERE name='forum_email' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['language_file'])."' WHERE name='language_file' LIMIT 1") or $errors[] = $lang['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_name'])."' WHERE name='forum_name' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_address'])."' WHERE name='forum_address' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['forum_email'])."' WHERE name='forum_email' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
@mysqli_query($connid, "UPDATE ".$db_settings['settings_table']." SET value='".mysqli_real_escape_string($connid, $_POST['language_file'])."' WHERE name='language_file' LIMIT 1") or $errors[] = $lang['install']['error_update_settings']." (MySQL: ".mysqli_error($connid).")";
|
||||
}
|
||||
if (empty($errors)) {
|
||||
header('Location: ../');
|
||||
|
@ -263,13 +324,13 @@ if (isset($_POST['install_submit'])) {
|
|||
|
||||
if (empty($action)) $action = 'install';
|
||||
|
||||
header('Content-Type: text/html; charset='.$lang['charset']);
|
||||
header('Content-Type: text/html; charset='.$lang['default']['charset']);
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?php echo $lang['language']; ?>">
|
||||
<html lang="<?php echo $lang['default']['language']; ?>" dir="<?php echo $lang['default']['dir']; ?>">
|
||||
<head>
|
||||
<meta charset="<?php echo $lang['charset']; ?>">
|
||||
<title>my little forum - <?php echo $lang['installation_title']; ?></title>
|
||||
<meta charset="<?php echo $lang['default']['charset']; ?>">
|
||||
<title>my little forum - <?php echo $lang['install']['installation_title']; ?></title>
|
||||
<link rel="shortcut icon" href="../themes/default/images/favicon.ico">
|
||||
<style type="text/css">
|
||||
*, ::before, ::after {
|
||||
|
@ -440,17 +501,17 @@ a:active {
|
|||
<?php
|
||||
switch($action):
|
||||
case 'install': ?>
|
||||
<h2><?php echo $lang['installation_title']; ?></h2>
|
||||
<h2><?php echo $lang['install']['installation_title']; ?></h2>
|
||||
<section>
|
||||
<ul>
|
||||
<?php foreach ($lang['installation_instructions'] as $instruction): ?>
|
||||
<?php foreach ($lang['install']['installation_instructions'] as $instruction): ?>
|
||||
<li><?php echo $instruction; ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</section>
|
||||
<?php if (isset($errors)): ?>
|
||||
<section class="error">
|
||||
<h2><?php echo $lang['error_headline']; ?></h2>
|
||||
<h2><?php echo $lang['general']['error_headline']; ?></h2>
|
||||
<ul>
|
||||
<?php foreach($errors as $error): ?>
|
||||
<li><?php echo $error; ?></li>
|
||||
|
@ -462,120 +523,120 @@ case 'install': ?>
|
|||
<form action="index.php" method="post" id="forum-install">
|
||||
<input type="hidden" name="language_file" value="<?php echo $language_file; ?>">
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['inst_basic_settings']; ?></legend>
|
||||
<p><?php echo $lang['inst_main_settings_desc']; ?></p>
|
||||
<legend><?php echo $lang['install']['inst_basic_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_main_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-forum-name">
|
||||
<h3><?php echo $lang['forum_name']; ?></h3>
|
||||
<p><?php echo $lang['forum_name_desc']; ?></p>
|
||||
<h3><?php echo $lang['admin']['forum_name']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-forum-name" name="forum_name" value="<?php if (isset($_POST['forum_name'])) echo $_POST['forum_name']; else echo $default_settings['forum_name']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-forum-address">
|
||||
<h3><?php echo $lang['forum_address']; ?></h3>
|
||||
<p><?php echo $lang['forum_address_desc']; ?></p>
|
||||
<h3><?php echo $lang['admin']['forum_address']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_address_desc']; ?></p>
|
||||
</label>
|
||||
<input type="url" id="id-forum-address" name="forum_address" value="<?php if (isset($_POST['forum_address'])) echo $_POST['forum_address']; else { if ($default_settings['forum_address'] != "") echo $default_settings['forum_address']; } ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-forum-email">
|
||||
<h3><?php echo $lang['forum_email']; ?></h3>
|
||||
<p><?php echo $lang['forum_email_desc']; ?></p>
|
||||
<h3><?php echo $lang['admin']['forum_email']; ?></h3>
|
||||
<p><?php echo $lang['admin']['forum_email_desc']; ?></p>
|
||||
</label>
|
||||
<input type="email" id="id-forum-email" name="forum_email" value="<?php if (isset($_POST['forum_email'])) echo $_POST['forum_email']; else echo "@"; ?>" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['inst_admin_settings']; ?></legend>
|
||||
<p><?php echo $lang['inst_admin_settings_desc']; ?></p>
|
||||
<legend><?php echo $lang['install']['inst_admin_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_admin_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-admin-name">
|
||||
<h3><?php echo $lang['inst_admin_name']; ?></h3>
|
||||
<p><?php echo $lang['inst_admin_name_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_admin_name']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-admin-name" name="admin_name" value="<?php if (isset($_POST['admin_name'])) echo $_POST['admin_name']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-email">
|
||||
<h3><?php echo $lang['inst_admin_email']; ?></h3>
|
||||
<p><?php echo $lang['inst_admin_email_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_admin_email']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_email_desc']; ?></p>
|
||||
</label>
|
||||
<input type="email" id="id-admin-email" name="admin_email" value="<?php if (isset($_POST['admin_email'])) echo $_POST['admin_email']; else echo "@"; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-pw">
|
||||
<h3><?php echo $lang['inst_admin_pw']; ?></h3>
|
||||
<p><?php echo $lang['inst_admin_pw_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_admin_pw']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_pw_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-admin-pw" name="admin_pw" value="" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-admin-pw-conf">
|
||||
<h3><?php echo $lang['inst_admin_pw_conf']; ?></h3>
|
||||
<p><?php echo $lang['inst_admin_pw_conf_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_admin_pw_conf']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_admin_pw_conf_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-admin-pw-conf" name="admin_pw_conf" value="" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['inst_db_settings']; ?></legend>
|
||||
<p><?php echo $lang['inst_db_settings_desc']; ?></p>
|
||||
<legend><?php echo $lang['install']['inst_db_settings']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_db_settings_desc']; ?></p>
|
||||
<div>
|
||||
<label for="id-db-host">
|
||||
<h3><?php echo $lang['inst_db_host']; ?></h3>
|
||||
<p><?php echo $lang['inst_db_host_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_db_host']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_host_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-host" name="host" value="<?php if (isset($_POST['host'])) echo $_POST['host']; else echo $db_settings['host']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-name">
|
||||
<h3><?php echo $lang['inst_db_name']; ?></h3>
|
||||
<p><?php echo $lang['inst_db_name_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_db_name']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_name_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-name" name="database" value="<?php if (isset($_POST['database'])) echo $_POST['database']; else echo $db_settings['database']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-user">
|
||||
<h3><?php echo $lang['inst_db_user']; ?></h3>
|
||||
<p><?php echo $lang['inst_db_user_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_db_user']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_user_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-db-user" name="user" value="<?php if (isset($_POST['user'])) echo $_POST['user']; else echo $db_settings['user']; ?>" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-db-password">
|
||||
<h3><?php echo $lang['inst_db_pw']; ?></h3>
|
||||
<p><?php echo $lang['inst_db_pw_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_db_pw']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_db_pw_desc']; ?></p>
|
||||
</label>
|
||||
<input type="password" id="id-db-password" name="password" value="<?php /*if(isset($_POST['password'])) echo $_POST['password'];*/ ?>" size="40">
|
||||
<input type="password" id="id-db-password" name="password" value="" size="40">
|
||||
</div>
|
||||
<div>
|
||||
<label for="id-table-prefix">
|
||||
<h3><?php echo $lang['inst_table_prefix']; ?></h3>
|
||||
<p><?php echo $lang['inst_table_prefix_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_table_prefix']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_table_prefix_desc']; ?></p>
|
||||
</label>
|
||||
<input type="text" id="id-table-prefix" name="table_prefix" value="<?php if (isset($_POST['table_prefix'])) echo $_POST['table_prefix']; else echo $default_settings['table_prefix']; ?>" size="40">
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang['inst_advanced_options']; ?></legend>
|
||||
<p><?php echo $lang['inst_advanced_options_desc']; ?></p>
|
||||
<legend><?php echo $lang['install']['inst_advanced_options']; ?></legend>
|
||||
<p><?php echo $lang['install']['inst_advanced_options_desc']; ?></p>
|
||||
<div>
|
||||
<div class="label-like">
|
||||
<h3><?php echo $lang['inst_advanced_database']; ?></h3>
|
||||
<p><?php echo $lang['inst_advanced_database_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_advanced_database']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_advanced_database_desc']; ?></p>
|
||||
</div>
|
||||
<input id="create_database" type="checkbox" name="create_database" value="true"<?php if (isset($_POST['create_database'])) echo ' checked'; ?>><label for="create_database" class="for-selectors"><?php echo $lang['create_database']; ?></label>
|
||||
<input id="create_database" type="checkbox" name="create_database" value="true"<?php if (isset($_POST['create_database'])) echo ' checked'; ?>><label for="create_database" class="for-selectors"><?php echo $lang['install']['create_database']; ?></label>
|
||||
</div>
|
||||
<div>
|
||||
<div class="label-like">
|
||||
<h3><?php echo $lang['inst_advanced_conf_file']; ?></h3>
|
||||
<p><?php echo $lang['inst_advanced_conf_file_desc']; ?></p>
|
||||
<h3><?php echo $lang['install']['inst_advanced_conf_file']; ?></h3>
|
||||
<p><?php echo $lang['install']['inst_advanced_conf_file_desc']; ?></p>
|
||||
</div>
|
||||
<input id="dont_overwrite_settings" type="checkbox" name="dont_overwrite_settings" value="true"<?php if (isset($_POST['dont_overwrite_settings'])) echo ' checked'; ?>><label for="dont_overwrite_settings" class="for-selectors"><?php echo $lang['dont_overwrite_settings']; ?></label>
|
||||
<input id="dont_overwrite_settings" type="checkbox" name="dont_overwrite_settings" value="true"<?php if (isset($_POST['dont_overwrite_settings'])) echo ' checked'; ?>><label for="dont_overwrite_settings" class="for-selectors"><?php echo $lang['install']['dont_overwrite_settings']; ?></label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<p class="button-bar"><button name="install_submit" value="<?php echo $lang['forum_install_ok']; ?>"><?php echo $lang['forum_install_ok']; ?></button></p>
|
||||
<p class="button-bar"><button name="install_submit" value="<?php echo $lang['install']['forum_install_ok']; ?>"><?php echo $lang['install']['forum_install_ok']; ?></button></p>
|
||||
</form>
|
||||
</section>
|
||||
<?php
|
||||
|
@ -583,14 +644,19 @@ break;
|
|||
case 'choose_language':
|
||||
?>
|
||||
<section>
|
||||
<h2><?php echo $lang['label_choose_language']; ?></h2>
|
||||
<h2><?php echo $lang['install']['label_choose_language']; ?></h2>
|
||||
<form action="index.php" method="post" id="lang-select">
|
||||
<ul>
|
||||
<?php foreach ($language_files as $file): ?>
|
||||
<?php foreach ($language_files as $file):
|
||||
if ($file['file'] == $language_file): ?>
|
||||
<li><input id="id_<?php echo $file['language']; ?>" name="language_file" value="<?php echo $file['file']; ?>" type="radio" checked><label for="id_<?php echo $file['language']; ?>"><?php echo $file['language']; ?></label></li>
|
||||
<?php else: ?>
|
||||
<li><input id="id_<?php echo $file['language']; ?>" name="language_file" value="<?php echo $file['file']; ?>" type="radio"><label for="id_<?php echo $file['language']; ?>"><?php echo $file['language']; ?></label></li>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<?php endif;
|
||||
endforeach; ?>
|
||||
</ul>
|
||||
<p class="button-bar"><button name="submit"><?php echo $lang['submit_button_ok']; ?></button></p>
|
||||
<p class="button-bar"><button name="submit"><?php echo $lang['general']['submit_button_ok']; ?></button></p>
|
||||
</form>
|
||||
</section>
|
||||
<?php
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# note: the installation script expects one query per line!
|
||||
|
||||
CREATE TABLE mlf2_banlists (name varchar(255) NOT NULL default '', list text NOT NULL) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '',accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) NOT NULL AUTO_INCREMENT, pid int(11) NOT NULL default '0', tid int(11) NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) default NULL, user_id int(11) default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', email_notification tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY time (time), KEY last_reply (last_reply)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_settings (name varchar(255) NOT NULL, value varchar(255) NOT NULL default '', PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_smilies (id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(128) NOT NULL UNIQUE COLLATE utf8mb4_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL UNIQUE, email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', browser_window_target tinyint(4) NOT NULL default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, inactivity_notification BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id), KEY key_user_type (user_type), UNIQUE KEY key_user_name (user_name), UNIQUE KEY key_user_email (user_email) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) NOT NULL AUTO_INCREMENT,order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip char(15) NOT NULL default '',time int(14) NOT NULL default '0',user_id int(11) default '0') ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_logincontrol (time timestamp NOT NULL default CURRENT_TIMESTAMP, ip varchar(255) NOT NULL default '', logins int(11) NOT NULL default '0') ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_banlists (name varchar(255) NOT NULL, list text NOT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_categories (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', category varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '', accession tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, pid int(11) UNSIGNED NOT NULL default '0', tid int(11) UNSIGNED NOT NULL default '0', uniqid varchar(255) NOT NULL default '', time timestamp NOT NULL default CURRENT_TIMESTAMP, last_reply timestamp NULL DEFAULT NULL, edited timestamp NULL DEFAULT NULL, edited_by int(11) UNSIGNED default NULL, user_id int(11) UNSIGNED default '0', name varchar(255) NOT NULL default '', subject varchar(255) NOT NULL default '',category int(11) UNSIGNED NOT NULL default '0', email varchar(255) NOT NULL default '', hp varchar(255) NOT NULL default '', location varchar(255) NOT NULL default '', ip varchar(128) NOT NULL default '', text text NOT NULL, show_signature tinyint(4) default '0', marked tinyint(4) default '0', locked tinyint(4) default '0', sticky tinyint(4) default '0', views int(11) UNSIGNED default '0', edit_key varchar(255) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY id (id), KEY tid (tid),KEY category (category), KEY pid (pid), KEY sticky (sticky), KEY user_id (user_id), KEY time (time), KEY last_reply (last_reply)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_settings (name varchar(255) NOT NULL, value varchar(255) NOT NULL default '', PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_smilies (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL default '0', file varchar(100) NOT NULL default '', code_1 varchar(50) NOT NULL default '', code_2 varchar(50) NOT NULL default '', code_3 varchar(50) NOT NULL default '', code_4 varchar(50) NOT NULL default '', code_5 varchar(50) NOT NULL default '', title varchar(255) NOT NULL default '', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata (user_id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_type tinyint(4) NOT NULL default '0', user_name varchar(128) NOT NULL COLLATE utf8mb4_bin, user_real_name varchar(255) NOT NULL default '', gender tinyint(4) NOT NULL default '0', birthday date NULL default NULL, user_pw varchar(255) NOT NULL default '', user_email varchar(255) NOT NULL, email_contact tinyint(4) default '0', user_hp varchar(255) NOT NULL default '', user_location varchar(255) NOT NULL default '', signature varchar(255) NOT NULL default '', profile text NOT NULL, logins int(11) NOT NULL default '0', last_login timestamp NULL default CURRENT_TIMESTAMP, last_logout timestamp NULL DEFAULT NULL, user_ip varchar(128) NOT NULL default '', registered timestamp NULL DEFAULT NULL, category_selection varchar(255) DEFAULT NULL, thread_order tinyint(4) NOT NULL default '0', user_view tinyint(4) NOT NULL default '0', sidebar tinyint(4) NOT NULL default '1', fold_threads tinyint(4) NOT NULL default '0', thread_display tinyint(4) NOT NULL default '0', new_posting_notification tinyint(4) default '0', new_user_notification tinyint(4) default '0', user_lock tinyint(4) default '0', browser_window_target tinyint(4) NOT NULL default '0', auto_login_code varchar(50) NOT NULL default '', pwf_code varchar(50) NOT NULL, activate_code varchar(50) NOT NULL default '', language VARCHAR(255) NOT NULL DEFAULT '', time_zone VARCHAR(255) NOT NULL DEFAULT '', time_difference smallint(4) default '0', theme VARCHAR(255) NOT NULL DEFAULT '', tou_accepted DATETIME NULL DEFAULT NULL, dps_accepted DATETIME NULL DEFAULT NULL, inactivity_notification BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id), KEY key_user_type (user_type), UNIQUE KEY key_user_name (user_name), UNIQUE KEY key_user_email (user_email)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_pages (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, order_id int(11) NOT NULL, title varchar(255) NOT NULL default '', content text NOT NULL, menu_linkname varchar(255) NOT NULL default '', access tinyint(4) NOT NULL default '0', PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_useronline (ip varchar(128) NOT NULL default '', time int(14) NOT NULL default '0', user_id int(11) UNSIGNED default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_logincontrol (time timestamp NOT NULL default CURRENT_TIMESTAMP, ip varchar(128) NOT NULL default '', logins int(11) NOT NULL default '0') ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_entries_cache (cache_id int(11) NOT NULL, cache_text mediumtext NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_userdata_cache (cache_id int(11) NOT NULL, cache_signature text NOT NULL, cache_profile text NOT NULL, PRIMARY KEY (cache_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) NOT NULL AUTO_INCREMENT, user_id int(11) NOT NULL, posting_id int(11) NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_read_entries (user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL, PRIMARY KEY (user_id, posting_id), KEY `user_id` (`user_id`), KEY `posting_id` (`posting_id`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT NULL, time timestamp NULL DEFAULT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_entry_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_bookmark_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) NOT NULL AUTO_INCREMENT, `tag` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_subscriptions (`user_id` int(12) UNSIGNED NULL, `eid` int(12) UNSIGNED NOT NULL, `unsubscribe_code` varchar(36) NOT NULL, `tstamp` datetime DEFAULT NULL, UNIQUE `user_thread` (`user_id`, `eid`) USING HASH, INDEX `hash` (`unsubscribe_code`)) ENGINE = InnoDB CHARSET=utf8;
|
||||
CREATE TABLE mlf2_b8_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `training_type` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `b8_spam` (`spam`), KEY `B8_training_type` (`training_type`)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_akismet_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `spam_check_status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `akismet_spam` (`spam`), KEY spam_check_status (spam_check_status)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_b8_wordlist (`token` varchar(128) NOT NULL, `count_ham` int unsigned default NULL, `count_spam` int unsigned default NULL, PRIMARY KEY (`token`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_uploads (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uploader` int(10) UNSIGNED NULL, `filename` varchar(64) NULL, `tstamp` datetime NULL, PRIMARY KEY (id)) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
CREATE TABLE mlf2_bookmarks (id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, subject varchar(255) NOT NULL, order_id int(11) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY UNIQUE_uid_pid (user_id,posting_id)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_read_entries (user_id int(11) UNSIGNED NOT NULL, posting_id int(11) UNSIGNED NOT NULL, time timestamp NOT NULL, PRIMARY KEY (user_id, posting_id), KEY `user_id` (`user_id`), KEY `posting_id` (`posting_id`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_temp_infos (name varchar(50) NOT NULL, value varchar(255) NOT NULL, time timestamp NULL DEFAULT NULL, PRIMARY KEY (name)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_entry_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_bookmark_tags (`bid` int(11) NOT NULL, `tid` int(11) NOT NULL, PRIMARY KEY (`bid`,`tid`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_tags (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `tag` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tag` (`tag`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_subscriptions (`user_id` int(12) UNSIGNED NULL, `eid` int(12) UNSIGNED NOT NULL, `unsubscribe_code` varchar(36) NOT NULL, `tstamp` datetime DEFAULT NULL, UNIQUE `user_thread` (`user_id`, `eid`) USING HASH, INDEX `hash` (`unsubscribe_code`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `training_type` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `b8_spam` (`spam`), KEY `B8_training_type` (`training_type`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_akismet_rating (`eid` int(11) NOT NULL, `spam` tinyint(1) NOT NULL DEFAULT '0', `spam_check_status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`eid`), KEY `akismet_spam` (`spam`), KEY spam_check_status (spam_check_status)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
CREATE TABLE mlf2_b8_wordlist (`token` varchar(255) NOT NULL, `count_ham` int unsigned default NULL, `count_spam` int unsigned default NULL, PRIMARY KEY (`token`)) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
CREATE TABLE mlf2_uploads (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `uploader` int(10) UNSIGNED NULL, `pathname` varchar(128) NOT NULL, `tstamp` datetime NULL, PRIMARY KEY (id), UNIQUE KEY `pathname` (`pathname`), CONSTRAINT `smbl_mlf2_uploader` FOREIGN KEY `fk_uploader` (`uploader`) REFERENCES mlf2_userdata(`user_id`) ON UPDATE CASCADE ON DELETE SET NULL) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
|
||||
INSERT INTO mlf2_banlists VALUES ('user_agents', '');
|
||||
INSERT INTO mlf2_banlists VALUES ('ips', '');
|
||||
|
@ -101,7 +101,6 @@ INSERT INTO mlf2_settings VALUES ('deep_reply', '15');
|
|||
INSERT INTO mlf2_settings VALUES ('very_deep_reply', '30');
|
||||
INSERT INTO mlf2_settings VALUES ('users_per_page', '20');
|
||||
INSERT INTO mlf2_settings VALUES ('username_maxlength', '40');
|
||||
INSERT INTO mlf2_settings VALUES ('bad_behavior', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_entry_check', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_mail_check', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('akismet_key', '');
|
||||
|
@ -139,7 +138,7 @@ INSERT INTO mlf2_settings VALUES ('uploads_per_page', '20');
|
|||
INSERT INTO mlf2_settings VALUES ('data_privacy_agreement', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('data_privacy_statement_url', '');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_latex', '0');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_latex_uri', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML.js');
|
||||
INSERT INTO mlf2_settings VALUES ('bbcode_latex_uri', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js');
|
||||
INSERT INTO mlf2_settings VALUES ('min_posting_time', '5');
|
||||
INSERT INTO mlf2_settings VALUES ('min_register_time', '5');
|
||||
INSERT INTO mlf2_settings VALUES ('min_email_time', '5');
|
||||
|
|
95
js/main.js
|
@ -98,8 +98,9 @@ if (window.Node && Node.prototype && !Node.prototype.contains) {
|
|||
document.createElementWithAttributes = function(tagName, attributes, parentElement) {
|
||||
var el = document.createElement(tagName);
|
||||
|
||||
for (var attribute in attributes)
|
||||
el[attribute] = attributes[attribute]; //el.setAttribute(attribute, attributes[attribute]); cannot used because function are evaluated in attributes e.g. {"onclick": function(e) { return false; }}
|
||||
for (const attribute in attributes) {
|
||||
el[attribute] = attributes[attribute]; //el.setAttribute(attribute, attributes[attribute]); cannot be used because function are evaluated in attributes e.g. {"onclick": function(e) { return false; }}
|
||||
}
|
||||
|
||||
if (parentElement)
|
||||
parentElement.appendChild(el);
|
||||
|
@ -510,40 +511,29 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
*/
|
||||
function Sidebar(templatePath) {
|
||||
templatePath = templatePath || "";
|
||||
var main = document.getElementById("sidebar") || document.getElementById("bottombar") || false;
|
||||
var icon = document.getElementById("sidebartoggle");
|
||||
var self = this;
|
||||
if (!main || !icon)
|
||||
const main = document.getElementById("sidebar") || document.getElementById("bottombar") || false;
|
||||
const self = this;
|
||||
if (!main)
|
||||
return;
|
||||
this.setVisible = function(visible) {
|
||||
if (visible) {
|
||||
main.classList.remove("js-display-fold");
|
||||
icon.src = templatePath + settings["hide_sidebar_image"];
|
||||
icon.classList.remove("show-sidebar");
|
||||
icon.classList.add("hide-sidebar");
|
||||
}
|
||||
else {
|
||||
main.classList.add("js-display-fold");
|
||||
icon.src = templatePath + settings["show_sidebar_image"];
|
||||
icon.classList.remove("hide-sidebar");
|
||||
icon.classList.add("show-sidebar");
|
||||
}
|
||||
};
|
||||
this.isVisible = function() {
|
||||
return !main.classList.contains("js-display-fold");
|
||||
};
|
||||
var links = main.getElementsByTagName("a");
|
||||
for (var i=0; i<links.length; i++) {
|
||||
if (links[i].href.search(/toggle_sidebar/) != -1) {
|
||||
links[i].onclick = function(e) {
|
||||
self.setVisible(!self.isVisible());
|
||||
new Request("index.php", "POST", new Query("toggle_sidebar", true));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const link = main.querySelector(".sidebar a");
|
||||
link.onclick = function(e) {
|
||||
self.setVisible(!self.isVisible());
|
||||
new Request("index.php", "POST", new Query("toggle_sidebar", true));
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Thread object, which is created by an UL element or the numerical ID of the UL element,
|
||||
* which is used to collapse the tree
|
||||
|
@ -1155,12 +1145,13 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
return;
|
||||
|
||||
initThreadFoldingInSubMenu();
|
||||
|
||||
|
||||
for (var i=0; i<els.length; i++) {
|
||||
var el = els[i];
|
||||
var li = el.parentNode;
|
||||
var pLink = document.getFirstChildByElement(li, "a", ["ap", "reply", "thread", "replynew", "threadnew", "thread-sticky", "threadnew-sticky", "reply-search", "thread-search", "thread-locked"]);
|
||||
var pEmpty = !!document.getFirstChildByElement(li, "img", ["no-text"]);
|
||||
var li = el.closest("li");
|
||||
var pLink = li.querySelector(":scope > a.subject");
|
||||
var pEmptyEl = li.querySelector(":scope > .metadata .tail img.no-text");
|
||||
var pEmpty = (pEmptyEl !== null) ? true: false;
|
||||
var pid = parseInt( el.id.substring(1) );
|
||||
if (!pid)
|
||||
continue;
|
||||
|
@ -1174,7 +1165,7 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
self.selectPosting( this.pid );
|
||||
this.blur();
|
||||
return false;
|
||||
};
|
||||
};
|
||||
}
|
||||
else if (links[j].href.search(/delete_posting/) != -1) {
|
||||
links[j].onclick = function(e) {
|
||||
|
@ -1184,8 +1175,8 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
this.blur();
|
||||
return confirmed;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!pEmpty && pLink && ajaxPreviewWindow) {
|
||||
if (links.length >= 1) {
|
||||
|
@ -1215,11 +1206,11 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
var confirmed = window.confirm( lang["delete_posting_confirm"] );
|
||||
if (confirmed)
|
||||
this.href += '&delete_posting_confirm=true';
|
||||
return confirmed;
|
||||
return confirmed;
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1228,43 +1219,6 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
pEls = pEls.length>0?pEls:document.getElementsByClassName("thread-posting");
|
||||
new FullSizeImage(pEls);
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the default value to an INPUT element
|
||||
*/
|
||||
var setDefaultInputValue = function(id) {
|
||||
var inp = document.getElementById(id);
|
||||
if (!inp)
|
||||
return;
|
||||
|
||||
var value = (inp.alt) ? inp.alt : inp.value;
|
||||
inp.onfocus = function(e) {
|
||||
if (this.value == value)
|
||||
this.value="";
|
||||
};
|
||||
inp.onblur = function(e) {
|
||||
if(this.value.trim() == "")
|
||||
this.value = value;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Set focus to first INPUT element on the page, if exists
|
||||
*/
|
||||
var setFocusToContentForm = function() {
|
||||
var par = document.getElementById("content");
|
||||
if (par) {
|
||||
var f = par.getElementsByTagName("form");
|
||||
if (f && f.length>0) {
|
||||
for (var i=0; i<f[0].elements.length; i++) {
|
||||
if (f[0].elements[i].type == "text" && f[0].elements[i].name != "search_user" && f[0].elements[i].name != "smiley_code" && f[0].elements[i].name != "new_category") {
|
||||
f[0].elements[i].focus();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a checkbox to a INPUT element of type PASSWORD to show/hid the entered password
|
||||
|
@ -1475,9 +1429,6 @@ function DragAndDropTable(table,mode,queryKey) {
|
|||
*/
|
||||
this.init = function( ajaxPreviewStructure ) {
|
||||
ajaxPreviewStructure = ajaxPreviewStructure || false;
|
||||
setFocusToContentForm();
|
||||
setDefaultInputValue("search-input");
|
||||
setDefaultInputValue("search-user");
|
||||
templatePath = this.getTemplatePath();
|
||||
if (ajaxPreviewStructure)
|
||||
ajaxPreviewWindow = new AjaxPreviewWindow( ajaxPreviewStructure, templatePath );
|
||||
|
|
4
js/main.min.js
vendored
205
js/posting.js
|
@ -66,7 +66,7 @@ function BBCodeButton(el) {
|
|||
this.setHTMLElement = function(el) {
|
||||
htmlEl = el;
|
||||
htmlEl.onclick = function(e) {
|
||||
self.insertCode(this);
|
||||
self.insertCode(this);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
@ -107,7 +107,7 @@ function BBCodeLinkButton(el) {
|
|||
txtarea.insertTextRange( "["+link_bb_code+"]" + insert_link + "[/"+link_bb_code+"]" );
|
||||
}
|
||||
}, 150);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -178,10 +178,10 @@ function BBCodeColorChooserButton(el) {
|
|||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = this.getCode();
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
txtarea.insertTextRange( "[" + code + obj.extension + "]" + txtarea.getSelection() + "[/" + code + "]" );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
};
|
||||
|
||||
|
@ -191,7 +191,7 @@ function BBCodeColorChooserButton(el) {
|
|||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(colorTable);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -222,16 +222,17 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
// Ausnahme INLINECODE
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
var codestart = this.getCode(), codeend = this.getCode();
|
||||
window.setTimeout(function(){
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
||||
if (obj.attribute.toLowerCase() == "inlinecode") {
|
||||
codestart = codeend = obj.attribute;
|
||||
|
||||
if (obj.attribute != null && obj.attribute.trim() != "") {
|
||||
if (obj.attribute.trim().toLowerCase() == "inlinecode")
|
||||
codestart = codeend = obj.attribute;
|
||||
else
|
||||
codestart += "=" + obj.attribute;
|
||||
}
|
||||
if (obj.attribute.trim() && obj.attribute.toLowerCase() != "inlinecode")
|
||||
codestart += "=" + obj.attribute;
|
||||
|
||||
if (quest && selectionRange == "") {
|
||||
var p = window.prompt(quest, par);
|
||||
|
@ -248,10 +249,10 @@ function BBCodeOptionButton(el, list, quest, par) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(optionList);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -264,7 +265,7 @@ function BBCodeListButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var selectionRange = txtarea.getSelection();
|
||||
var listStr = "";
|
||||
|
@ -288,7 +289,7 @@ function BBCodeSingleSmilieButton(el) {
|
|||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
|
||||
var selectionRange = txtarea.getSelection();
|
||||
|
@ -304,32 +305,31 @@ function BBCodeSingleSmilieButton(el) {
|
|||
function BBCodeSmilieButton(el, list) {
|
||||
this.constructor(el, list);
|
||||
var self = this;
|
||||
//var smilies = document.createElement("div");
|
||||
var smilies = document.createElementWithAttributes("div", {"id": "additional-smilies"}, null);
|
||||
var smilies = document.createElementWithAttributes("ul", {"id": "additional-smilies"}, null);
|
||||
|
||||
for (var i=0; i<list.length; i++) {
|
||||
var link = document.createElementWithAttributes("a", {"href": "#", "title": list[i].title, "code": list[i].code, "onclick": function(e) { self.insertOptionCode(this); return false; } }, smilies);
|
||||
link.appendChild( list[i].label );
|
||||
let item = document.createElementWithAttributes("li",{}, smilies);
|
||||
let btn = document.createElementWithAttributes("button",{"type": "button", "title": list[i].title, "value": list[i].code, "onclick": function(e) { self.insertButtonCode(this); return false; }}, item);
|
||||
btn.appendChild( list[i].label);
|
||||
}
|
||||
|
||||
this.insertOptionCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
|
||||
this.insertButtonCode = function(obj) {
|
||||
if (!this.canInsert()) return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var txtarea = buttonGroup.getTextArea();
|
||||
var code = obj.code;
|
||||
txtarea.insertTextRange( txtarea.getSelection() +code + " " );
|
||||
const val = event.target.closest("button").getAttribute("value");
|
||||
txtarea.insertTextRange( txtarea.getSelection() + val + " " );
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(false);
|
||||
}
|
||||
|
||||
this.insertCode = function(obj) {
|
||||
if (!this.canInsert())
|
||||
return;
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var buttonGroup = this.getButtonGroup();
|
||||
var objPos = document.getElementPoSi(obj);
|
||||
buttonGroup.getAdditionalOptionsWindow().setOptionList(smilies);
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
buttonGroup.getAdditionalOptionsWindow().enableOptionList(true, objPos);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -421,46 +421,53 @@ function ButtonGroup(f) {
|
|||
if (!document.getElementById("smiley-bar"))
|
||||
return;
|
||||
var buttonBar = document.getElementById("smiley-bar");
|
||||
|
||||
if (document.getElementById("smiley-instructions")) {
|
||||
var el = document.getElementById("smiley-instructions").firstChild;
|
||||
let elems = document.getElementById("smiley-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
var list = [];
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.firstChild.nodeValue,
|
||||
title : el.title,
|
||||
classes : el.className,
|
||||
code : term.textContent,
|
||||
title : term.getAttribute("title"),
|
||||
classes : term.getAttribute("class"),
|
||||
isSmilie: true,
|
||||
childs : []
|
||||
};
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
obj.label = el.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
el = el.nextSibling;
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
obj.label = d.firstChild;
|
||||
if (obj.classes.search(/default/) != -1)
|
||||
createSingleButton(obj, buttonBar);
|
||||
else
|
||||
list.push(obj);
|
||||
obj = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (list && list.length > 0) {
|
||||
obj = {
|
||||
code : "",
|
||||
title : lang["more_smilies_title"],
|
||||
label : lang["more_smilies_label"],
|
||||
classes : "more-smilies",
|
||||
classes : "",
|
||||
isSmilie: true,
|
||||
childs : list
|
||||
};
|
||||
createSingleButton(obj, buttonBar);
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* WTransform introduction (for adding source code) into button elements
|
||||
* Transform introduction (for adding source code) into button elements
|
||||
*/
|
||||
var convertInstructionsToButton = function() {
|
||||
if (!document.getElementById("bbcode-bar"))
|
||||
|
@ -468,32 +475,33 @@ function ButtonGroup(f) {
|
|||
var buttonBar = document.getElementById("bbcode-bar");
|
||||
|
||||
if (document.getElementById("bbcode-instructions")) {
|
||||
var el = document.getElementById("bbcode-instructions").firstChild;
|
||||
let elems = document.getElementById("bbcode-instructions").querySelectorAll("div");
|
||||
var obj = null;
|
||||
|
||||
while (el != null) {
|
||||
if (el.nodeName && el.nodeName.toLowerCase() == "dt") {
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
|
||||
for (const el of elems) {
|
||||
const term = el.querySelector("dt");
|
||||
const desc = el.querySelectorAll("dd");
|
||||
if (term) {
|
||||
obj = {
|
||||
code : el.id,
|
||||
label : el.title,
|
||||
title : el.firstChild.nodeValue,
|
||||
classes : el.className,
|
||||
code : term.getAttribute("id"),
|
||||
label : term.getAttribute("title"),
|
||||
title : term.textContent,
|
||||
classes : term.getAttribute("class"),
|
||||
childs : []
|
||||
};
|
||||
}
|
||||
else if (obj && el.nodeName && el.nodeName.toLowerCase() == "dd") {
|
||||
var attChild = {
|
||||
attribute : el.id,
|
||||
label : el.title
|
||||
if (obj && desc) {
|
||||
for (const d of desc) {
|
||||
var attChild = {
|
||||
attribute : d.getAttribute("id"),
|
||||
label : d.getAttribute("title")
|
||||
}
|
||||
obj.childs.push(attChild);
|
||||
}
|
||||
obj.childs.push( attChild );
|
||||
}
|
||||
el = el.nextSibling;
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
if (obj)
|
||||
createSingleButton(obj, buttonBar);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -554,8 +562,7 @@ function ButtonGroup(f) {
|
|||
*/
|
||||
var createBBCodeButton = function(button, list) {
|
||||
var bbCodeButton = null;
|
||||
var bname=button&&button.name?button.name.toLowerCase():"";
|
||||
//switch(button.name.toLowerCase()) {
|
||||
var bname = button && button.name ? button.name.toLowerCase() : "";
|
||||
switch(bname) {
|
||||
case "link":
|
||||
bbCodeButton = new BBCodeLinkButton( button );
|
||||
|
@ -564,7 +571,7 @@ function ButtonGroup(f) {
|
|||
if (list && list.length > 1)
|
||||
bbCodeButton = new BBCodeOptionButton(button, list, lang["bbcode_image_url"], "https://" );
|
||||
else
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_image_url"], "https://" );
|
||||
break;
|
||||
case "color":
|
||||
bbCodeButton = new BBCodeColorChooserButton( button );
|
||||
|
@ -573,10 +580,10 @@ function ButtonGroup(f) {
|
|||
bbCodeButton = new BBCodeListButton( button );
|
||||
break;
|
||||
case "upload":
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
bbCodeButton = new BBCodePopUpButton( button, "index.php?mode=upload_image", settings["upload_popup_width"], settings["upload_popup_height"]);
|
||||
break;
|
||||
case "tex":
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
bbCodeButton = new BBCodePromtButton( button, lang["bbcode_tex_code"] );
|
||||
break;
|
||||
default:
|
||||
if (button.isSmilie && list && list.length > 0)
|
||||
|
@ -591,8 +598,8 @@ function ButtonGroup(f) {
|
|||
}
|
||||
return bbCodeButton;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Creates a window to show further options of the clicked button
|
||||
* @return win
|
||||
*/
|
||||
|
@ -625,10 +632,10 @@ function ButtonGroup(f) {
|
|||
else
|
||||
content.replaceChild(list, content.firstChild);
|
||||
};
|
||||
|
||||
|
||||
w.enableOptionList = function(enable, pos) {
|
||||
if (pos) {
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.left = pos.left + "px";
|
||||
this.style.top = pos.top + "px";
|
||||
}
|
||||
if (enable)
|
||||
|
@ -638,13 +645,13 @@ function ButtonGroup(f) {
|
|||
};
|
||||
|
||||
var oldOnKeyPressFunc = window.document.onmousedown;
|
||||
window.document.onkeypress = function(e) {
|
||||
window.document.onkeypress = function(e) {
|
||||
if (e.key == "Esc")
|
||||
self.enableOptionList(false);
|
||||
|
||||
self.enableOptionList(false);
|
||||
|
||||
if (typeof oldOnKeyPressFunc == "function")
|
||||
oldOnKeyPressFunc(e);
|
||||
}
|
||||
}
|
||||
|
||||
return w;
|
||||
};
|
||||
|
@ -656,17 +663,18 @@ function ButtonGroup(f) {
|
|||
var initUserBBCodeButtons = function(isSmilie) {
|
||||
isSmilie = isSmilie || false;
|
||||
hasUserButtons = false;
|
||||
var id = isSmilie?"smiley-bar":"bbcode-bar";
|
||||
var id = isSmilie ? "smiley-bar" : "bbcode-bar";
|
||||
if (!document.getElementById(id))
|
||||
return;
|
||||
var userButtons = document.getElementById(id).getElementsByTagName("button");
|
||||
if (userButtons && userButtons.length > 0) {
|
||||
for (var i=0; i<userButtons.length; i++) {
|
||||
var j = userButtons.length;
|
||||
for (var i=0; i<j; i++) {
|
||||
hasUserButtons = true;
|
||||
userButtons[i].isSmilie = isSmilie;
|
||||
addButton(createBBCodeButton(userButtons[i], null), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -679,27 +687,20 @@ function ButtonGroup(f) {
|
|||
textarea.quote = textarea.value;
|
||||
textarea.value = "";
|
||||
}
|
||||
|
||||
|
||||
textarea.getQuote = function() {
|
||||
return textarea.quote.trim();
|
||||
}
|
||||
|
||||
// Zitieren-Link einfuegen
|
||||
// insert the quotation-link
|
||||
if (textarea.getQuote() != "" && document.getElementById("message")) {
|
||||
var labels = document.getElementById("message").getElementsByTagName("label");
|
||||
var label = null;
|
||||
for (var i=0; i<labels.length; i++) {
|
||||
if (labels[i].className.search(/textarea/) != -1) {
|
||||
label = labels[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var label = document.querySelector('label[for="text"]');
|
||||
if (label) {
|
||||
var quoteButton = document.createElementWithAttributes("button", {"type": "button", "id": "insert-quote", "title": lang["quote_title"], "tabIndex": -1});
|
||||
quoteButton.onclick = function(e) {
|
||||
textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value;
|
||||
this.classList.add("js-display-none");
|
||||
textarea.focus();
|
||||
textarea.value = textarea.getQuote() + "\r\n\r\n" + textarea.value;
|
||||
this.classList.add("js-display-none");
|
||||
textarea.focus();
|
||||
return false;
|
||||
};
|
||||
quoteButton.appendChild( document.createTextNode(lang["quote_label"]) )
|
||||
|
@ -748,7 +749,7 @@ function ButtonGroup(f) {
|
|||
*/
|
||||
this.getTextArea = function() {
|
||||
return textarea;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the property window of the button
|
||||
|
@ -766,19 +767,15 @@ function ButtonGroup(f) {
|
|||
link.onclick = function(e) {
|
||||
document.cookie = settings["session_prefix"]+'userdata=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
|
||||
span.innerHTML = "";
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
if(f.elements["setcookie"]) f.elements["setcookie"].checked = false;
|
||||
return false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
var removeIntroductionElements = function() {
|
||||
if (document.getElementById("bbcode-instructions")) {
|
||||
var el = document.getElementById("bbcode-instructions");
|
||||
el.parentNode.removeChild(el);
|
||||
}
|
||||
if (document.getElementById("smiley-instructions")) {
|
||||
var el = document.getElementById("smiley-instructions");
|
||||
el.parentNode.removeChild(el);
|
||||
if (document.getElementById("formatting-help")) {
|
||||
var el = document.getElementById("formatting-help");
|
||||
el.classList.add('js-display-none');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
2
js/posting.min.js
vendored
1264
lang/arabic.lang
Normal file
|
@ -1,11 +1,28 @@
|
|||
################################################################################
|
||||
# Simplified Chinese language file for my little forum 2.4 #
|
||||
# Simplified Chinese language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Updated 2021-08-09 by VegBao www.vegbao.com #
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Updated 2021-08-09 by VegBao www.vegbao.com #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = zh_CN
|
||||
language_code = 'zh_CN'
|
||||
language_name_system = 'simplified chinese'
|
||||
language_name_own = '简体中文'
|
||||
charset = utf-8
|
||||
locale = zh_CN.utf8
|
||||
locale = zh_CN
|
||||
|
@ -13,8 +30,8 @@ locale = zh
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' 、,。;“”!?'
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'YYYY-MM-dd, HH:mm'
|
||||
time_format_full = 'YYYY\'年\'MM\'月\'dd\'日\' (EEEE), HH\'时\'mm\'分\''
|
||||
forum_time = '论坛时间:[time]'
|
||||
forum_time_with_time_zone = '论坛时间:[time] ([time_zone])'
|
||||
unknown_user = '游客'
|
||||
|
@ -39,8 +56,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = '下一页'
|
||||
previous_page_link_title = '上一页'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = '<!-- TODO -->by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = '<!-- TODO -->by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '点击前往原始帖子 by [name]'
|
||||
error_headline = '错误!'
|
||||
no_authorisation = '没有权限!'
|
||||
|
@ -151,6 +168,8 @@ subnav_disabled = '论坛已关闭'
|
|||
subnav_bookmarks = '书签'
|
||||
subnav_delete_bookmark = '删除书签'
|
||||
subnav_edit_bookmark = '编辑书签'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = '错误'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] 篇帖子于 [total_threads] 篇主题内,[registered_users] 位用户'
|
||||
|
@ -186,6 +205,7 @@ open_whole_thread = '开启整个主题'
|
|||
change_category_link = '显示分类 "[category]" 的所有帖子'
|
||||
mark_linktitle = '标记帖子'
|
||||
unmark_linktitle = '取消标记帖子'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = '删除标记的帖子'
|
||||
manage_postings_link = '管理帖子'
|
||||
non_activated_users_link = '[counter] 位未启用用户'
|
||||
|
@ -200,6 +220,8 @@ more_smilies_label = '更多…'
|
|||
more_smilies_title = '更多表情'
|
||||
close = '关闭'
|
||||
no_postings_user = '目前还没有帖子。'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = '搜索'
|
||||
search_fulltext = '全文'
|
||||
search_tags = '标签'
|
||||
|
@ -295,7 +317,7 @@ error_bookmark_word_too_long = '词汇 "[word]" 过长'
|
|||
error_bookmark_tags_limit_reached = '标签数量已达到书签的上限'
|
||||
|
||||
[entry]
|
||||
edited_by = '编辑 by [name], [time]'
|
||||
edited_by = '编辑 by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = '标签:'
|
||||
one_view = '1 次浏览'
|
||||
several_views = '[views] 次浏览'
|
||||
|
@ -352,6 +374,8 @@ subject_marking = '主题:'
|
|||
message_marking = '内容:'
|
||||
tags_marking = '标签:'
|
||||
tags_note = '(选填,以逗号区隔)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = '粗体'
|
||||
bbcode_bold_title = '粗体文字'
|
||||
bbcode_bold_instruction = '[b]粗体文字[/b]'
|
||||
|
@ -384,15 +408,12 @@ bbcode_image_instr_right = '靠右:[img=right]http://example.com/image.
|
|||
bbcode_image_label_thumb = '缩图'
|
||||
bbcode_image_instr_thumb = '缩图:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '缩图靠左'
|
||||
bbcode_image_instr_thumb_left = '缩图靠左:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '缩图靠左:[img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '缩图靠右'
|
||||
bbcode_image_instr_thumb_right = '缩图靠右:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '缩图靠右:[img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '上传'
|
||||
bbcode_upload_title = '上传图片'
|
||||
bbcode_upload_instruction = '上传图片…'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = '插入 flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = '插入 TeX 公式'
|
||||
bbcode_tex_instruction = '[tex]TeX 公式[/tex]'
|
||||
|
@ -403,11 +424,14 @@ bbcode_code_instruction_inline = '[inlinecode]程式码[/inlinecode]'
|
|||
bbcode_code_label_general = '程式码段落'
|
||||
bbcode_code_instruction_general = '[code]程式码[/code]'
|
||||
bbcode_code_label_specific = '程式码段落 [language]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]程式码[/code]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]程式码[/code]'
|
||||
insert_smiley_title = '插入表情'
|
||||
email_notific_reply_thread = '当此主题有人回复时发送信件通知'
|
||||
email_notific_reply_post = '当此帖子有人回复时发送信件通知'
|
||||
show_signature_marking = '附加签名档'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = '置顶'
|
||||
message_submit_button = '送出'
|
||||
message_submit_title = '储存帖子'
|
||||
|
@ -436,9 +460,8 @@ delete_spam_hl = '删除垃圾讯息'
|
|||
delete_spam_confirm = '您是否要删除所有归类为垃圾讯息的帖子?'
|
||||
delete_posting_submit = '删除'
|
||||
report_spam_hl = '检举垃圾讯息'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = '此帖子已被标记为垃圾讯息'
|
||||
spamcheck_posting_not_checked = '此帖子已被标记为垃圾讯息或是未经过 Akismet 检查,可能因为 Akismet 未启用或是由注册用户所发表。'
|
||||
spamcheck_posting_passed = '此帖子已通过 Akismet 防垃圾讯息检查。若确定是垃圾讯息可进行检举!'
|
||||
spamcheck_akismet_api_error = '此帖子已通过 Akismet 防垃圾讯息检查。因为在检查过程中发生错误,可能是无效的 API 金钥所导致!'
|
||||
spamcheck_akismet_timeout_error = '此帖子已通过 Akismet 防垃圾讯息检查,因为 Akismet 服务器连线超时错误。'
|
||||
report_spam_delete_submit = '检举为垃圾讯息并删除'
|
||||
|
@ -447,7 +470,7 @@ delete_only_submit = '只删除'
|
|||
postings_doesnt_exist = '这篇帖子并不存在!'
|
||||
posting_not_flagged_as_spam = '此帖子没有被标记为垃圾讯息。'
|
||||
flag_ham_hl = '标记为非垃圾讯息'
|
||||
flag_ham_note = '此帖子已由 Akismet 防垃圾讯息检查判定为垃圾讯息。若确定是非垃圾讯息可进行检举!'
|
||||
flag_ham_warning = '此帖子已由 Akismet 防垃圾讯息检查判定为垃圾讯息。若确定是非垃圾讯息可进行检举!'
|
||||
report_flag_ham_submit = '检举并标记为非垃圾讯息'
|
||||
flag_ham_submit = '仅标记为非垃圾讯息'
|
||||
no_authorisation_delete = '帖子无法删除!可能是因为帖子编辑期限已过、被锁定或已有其他回复。'
|
||||
|
@ -485,12 +508,6 @@ no_images = '目前还没有图片可用'
|
|||
delete_image_confirm = '删除这张图片?'
|
||||
delete_image_button = '删除'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = '插入 flash'
|
||||
flash_url = 'Flash 网址:'
|
||||
flash_size = '大小:'
|
||||
insert_flash_button = '插入 flash'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = '头像'
|
||||
delete_avatar = '删除头像'
|
||||
|
@ -550,6 +567,7 @@ pwf_username = '帐号:'
|
|||
pwf_email = '邮箱:'
|
||||
|
||||
[user]
|
||||
user_list_header = '用户列表'
|
||||
user_name = '帐号'
|
||||
user_type = '类型'
|
||||
admin = '管理员'
|
||||
|
@ -612,7 +630,10 @@ edit_email = '修改邮箱'
|
|||
edit_user_pw = '密码:'
|
||||
pw_not_displayed = '不显示'
|
||||
edit_pw = '修改密码'
|
||||
edit_user_email_contact = '可透过邮箱与我联系'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = '名称:'
|
||||
edit_user_gender = '性别:'
|
||||
gender_not_specified = '不指定'
|
||||
|
@ -659,7 +680,6 @@ error_pw_wrong = '密码错误'
|
|||
edit_pw_old = '目前密码:'
|
||||
edit_pw_new = '新密码:'
|
||||
error_old_pw_wrong = '目前的密码错误'
|
||||
error_pw_conf_uneven = '新密码和重复密码不相符'
|
||||
error_new_pw_too_short = '新密码必须含有至少 [characters] 字符'
|
||||
error_new_pw_needs_digit = '新密码必须含有至少 [digits] 个数字'
|
||||
error_new_pw_needs_lowercase_letter = '新密码必须含有至少 [lowercase_letters] 个小写字母'
|
||||
|
@ -677,15 +697,16 @@ error_email_too_long = '邮箱过长'
|
|||
error_identic_email = '新邮箱和原有的邮箱相同'
|
||||
error_email_invalid = '邮箱格式错误'
|
||||
pw_wrong = '密码错误'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = '请输入帐号、密码和有效的邮箱,启用码将寄至您的邮箱。<strong>帐号必须在一天内启用。</strong>'
|
||||
register_username = '帐号:'
|
||||
register_user_email = '邮箱:'
|
||||
register_pw = '密码:'
|
||||
register_pw_conf = '重复密码:'
|
||||
register_honeypot_field = '将此栏留空:'
|
||||
register_only_by_admin = '目前只有管理员可以注册用户。'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = '帐号已注册,启用码已寄至 <strong>[var]</strong>。<strong>帐号必须在一天内启用。</strong>'
|
||||
registered_send_error = '帐号已注册,但无法寄出启用码 (邮箱服务器无法使用)。请与管理员联系并请求协助启用帐号。'
|
||||
activation_failed = '帐号启用失败。'
|
||||
|
@ -703,6 +724,7 @@ contact_user_hl = '写信给 [recipient_name]'
|
|||
impossible_to_contact = '无法联系此用户!'
|
||||
contact_doesnt_exist = '此联系并不存在!'
|
||||
sender_address_caption = '寄件者邮箱:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = '标题:'
|
||||
message_caption = '讯息:'
|
||||
message_submit_caption = '发送讯息'
|
||||
|
@ -713,7 +735,7 @@ error_message_no_subject = '尚未输入标题'
|
|||
error_email_invalid = '此为无效的邮箱'
|
||||
error_email_subject_too_long = '标题过长'
|
||||
error_email_text_too_long = '讯息内容过长 ([text_length] 字符,最多 [text_maxlength] 字符)'
|
||||
error_spam_suspicion = '垃圾讯息侦测!请修改您的讯息 (例如移除连结)'
|
||||
error_email_spam_suspicion = '垃圾讯息侦测!请修改您的讯息 (例如移除连结)'
|
||||
|
||||
[admin]
|
||||
enabled = '启用'
|
||||
|
@ -732,6 +754,7 @@ pages_administr_link = '页面'
|
|||
spam_protection_link = '防垃圾讯息'
|
||||
update_link = '更新'
|
||||
reset_uninstall_link = '重设或卸载论坛'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '可用版本'
|
||||
releases_list_link = '在释出版本中检查有无可用版本。'
|
||||
warning_header = '警告'
|
||||
|
@ -821,7 +844,6 @@ bbcode = 'BB code'
|
|||
bbcode_desc = '是否允许用 BB Codes 格式来编辑内容?'
|
||||
bbcodes_enabled = '启用 BB Codes'
|
||||
bbcodes_img_enabled = '允许使用 BB Code 插入图片'
|
||||
bbcodes_flash_enabled = '允许使用 BB Code 插入 flash 影片'
|
||||
smilies = '表情'
|
||||
smilies_desc = '是否让像 ":-)" 的文字取代为图片?(表情可于後台管理中自订)'
|
||||
smilies_enabled = '启用表情'
|
||||
|
@ -906,6 +928,7 @@ delete_page_submit = '删除页面'
|
|||
error_no_page_title = '没有标题'
|
||||
|
||||
# user administration:
|
||||
user_list_header = '用户列表'
|
||||
user_name_empty = '尚未输入帐号'
|
||||
num_registerd_users = '[number] 位注册用户'
|
||||
user_id = 'ID'
|
||||
|
@ -952,6 +975,22 @@ clear_userdata_condition = '删除登录次数少于 [logins] 次、最
|
|||
clear_userdata_note = '删除前您可查看已选择的用户列表,管理员与版主将不受影响。'
|
||||
no_users_in_selection = '尚未选择用户'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = '哪些表单类型将受到 CAPTCHA 的保护 (仅限未注册的用户)?'
|
||||
|
@ -964,20 +1003,21 @@ captcha_mathematical = '数学题'
|
|||
captcha_graphical = '图形'
|
||||
gr_captcha_not_available = '图形 CAPTCHA 无法使用 (GD Lib 无法使用)'
|
||||
gr_captcha_no_font = '没有可用的字体,CAPTCHA 图片将无法正确显示'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> 用于检查注册时的邮箱。'
|
||||
stop_forum_spam_enable = '启用 Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> 防止垃圾讯息。'
|
||||
bad_behavior_enable = '启用 Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> 服务。若要使用,需要 <a href="http://wordpress.com/api-keys/">Wordpress API 金钥</a> (没有或无效的 API 金钥 将会无法使用!)。'
|
||||
akismet_key = 'Wordpress API 金钥:'
|
||||
akismet_save_spam = 'Save spam (标记为垃圾讯息且不显示)?'
|
||||
akismet_auto_delete_spam = '几小时後自动删除垃圾讯息 (0 = 不要删除)?'
|
||||
akismet_entry = '检查帖子表单'
|
||||
akismet_mail = '检查邮箱表单'
|
||||
akismet_registered = '检查注册用户的送出'
|
||||
banned_ips = '封锁 IP'
|
||||
banned_ips_desc = '封锁的 IP 清单,将无法浏览论坛。可以使用 IP 范围 (例如 10.10.1.*) 和 CIDR 无类别域间路由 (例如 10.10.1.32/27)。一行一个 IP。'
|
||||
banned_user_agents = '封锁使用者代理'
|
||||
|
@ -988,6 +1028,12 @@ spam_protection_submit = '储存'
|
|||
error_own_ip_banned = '您封锁到自己的IP了!'
|
||||
error_own_user_agent_banned = '您封锁到自己了!'
|
||||
spam_protection_saved = '已储存'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = '<!-- TODO -->Delete spam automatically after how many hours (0 = do not delete)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = '重设论坛'
|
||||
|
@ -1017,6 +1063,7 @@ update_submit = '执行更新'
|
|||
update_successful = '数据库已更新成功。'
|
||||
update_items_note = '请立即上传以下新压缩档内的文件和目录 (版本为 [version]) 到您的服务器中:'
|
||||
update_download = '若您还没有这些文件,可以从 [[here]] 下载。'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = '于 "[original_subject]" 的回复'
|
||||
|
@ -1152,6 +1199,19 @@ contact_notification_txt = """此信件已与您的邮箱一并寄至 [re
|
|||
|
||||
--
|
||||
这封信是由论坛 [forum_address] 所寄出。"""
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = '安装指南'
|
||||
|
@ -1200,5 +1260,6 @@ error_db_inexistent = '指定的数据库并不存在,请检查数
|
|||
error_sql_file_doesnt_exist = '安装用的 SQL 文件 (install.sql) 并不存在'
|
||||
error_overwrite_config_file = '没有权限覆写文件 <strong>config/db_settings.php</strong> (权限设为 666,目前是 [CHMOD])'
|
||||
error_sql = 'SQL 错误'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = '安装论坛'
|
||||
error_conf_pw = '管理员密码并不相符'
|
||||
|
|
|
@ -1,11 +1,28 @@
|
|||
################################################################################
|
||||
# Traditional Chinese language file for my little forum 2.4 #
|
||||
# Traditional Chinese language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Updated 2021-08-09 by VegBao www.vegbao.com #
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Updated 2021-08-09 by VegBao www.vegbao.com #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = zh_TW
|
||||
language_code = 'zh_TW'
|
||||
language_name_system = 'traditional chinese'
|
||||
language_name_own = '繁體中文'
|
||||
charset = utf-8
|
||||
locale = zh_TW.utf8
|
||||
locale = zh_TW
|
||||
|
@ -13,8 +30,8 @@ locale = zh
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' 、,。;“”!?'
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'YYYY-MM-dd, HH:mm'
|
||||
time_format_full = 'YYYY\'年\'MM\'月\'dd\'日\' (EEEE), HH\'時\'mm\'分\''
|
||||
forum_time = '論壇時間:[time]'
|
||||
forum_time_with_time_zone = '論壇時間:[time] ([time_zone])'
|
||||
unknown_user = '訪客'
|
||||
|
@ -39,8 +56,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = '下一頁'
|
||||
previous_page_link_title = '上一頁'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '點擊前往原始文章 by [name]'
|
||||
error_headline = '錯誤!'
|
||||
no_authorisation = '沒有權限!'
|
||||
|
@ -151,6 +168,8 @@ subnav_disabled = '論壇已關閉'
|
|||
subnav_bookmarks = '書籤'
|
||||
subnav_delete_bookmark = '刪除書籤'
|
||||
subnav_edit_bookmark = '編輯書籤'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_page_error = '錯誤'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] 篇文章於 [total_threads] 篇主題內,[registered_users] 位用戶'
|
||||
|
@ -186,6 +205,7 @@ open_whole_thread = '開啟整個主題'
|
|||
change_category_link = '顯示分類 "[category]" 的所有文章'
|
||||
mark_linktitle = '標記文章'
|
||||
unmark_linktitle = '取消標記文章'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = '刪除標記的文章'
|
||||
manage_postings_link = '管理文章'
|
||||
non_activated_users_link = '[counter] 位未啟用用戶'
|
||||
|
@ -200,6 +220,8 @@ more_smilies_label = '更多…'
|
|||
more_smilies_title = '更多表情'
|
||||
close = '關閉'
|
||||
no_postings_user = '目前還沒有文章。'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = '搜尋'
|
||||
search_fulltext = '全文'
|
||||
search_tags = '標籤'
|
||||
|
@ -295,7 +317,7 @@ error_bookmark_word_too_long = '詞彙 "[word]" 過長'
|
|||
error_bookmark_tags_limit_reached = '標籤數量已達到書籤的上限'
|
||||
|
||||
[entry]
|
||||
edited_by = '編輯 by [name], [time]'
|
||||
edited_by = '編輯 by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = '標籤:'
|
||||
one_view = '1 次瀏覽'
|
||||
several_views = '[views] 次瀏覽'
|
||||
|
@ -352,6 +374,8 @@ subject_marking = '主題:'
|
|||
message_marking = '內容:'
|
||||
tags_marking = '標籤:'
|
||||
tags_note = '(選填,以逗號區隔)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = '粗體'
|
||||
bbcode_bold_title = '粗體文字'
|
||||
bbcode_bold_instruction = '[b]粗體文字[/b]'
|
||||
|
@ -384,15 +408,12 @@ bbcode_image_instr_right = '靠右:[img=right]http://example.com/image.
|
|||
bbcode_image_label_thumb = '縮圖'
|
||||
bbcode_image_instr_thumb = '縮圖:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '縮圖靠左'
|
||||
bbcode_image_instr_thumb_left = '縮圖靠左:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '縮圖靠左:[img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '縮圖靠右'
|
||||
bbcode_image_instr_thumb_right = '縮圖靠右:[img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '縮圖靠右:[img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '上傳'
|
||||
bbcode_upload_title = '上傳圖片'
|
||||
bbcode_upload_instruction = '上傳圖片…'
|
||||
bbcode_flash_label = 'flash'
|
||||
bbcode_flash_title = '插入 flash'
|
||||
bbcode_flash_instruction = '[flash]http://example.com/flash.swf[/flash]'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = '插入 TeX 公式'
|
||||
bbcode_tex_instruction = '[tex]TeX 公式[/tex]'
|
||||
|
@ -408,6 +429,9 @@ insert_smiley_title = '插入表情'
|
|||
email_notific_reply_thread = '當此主題有人回覆時寄送信件通知'
|
||||
email_notific_reply_post = '當此文章有人回覆時寄送信件通知'
|
||||
show_signature_marking = '附加簽名檔'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_thread = '置頂'
|
||||
message_submit_button = '送出'
|
||||
message_submit_title = '儲存文章'
|
||||
|
@ -436,9 +460,8 @@ delete_spam_hl = '刪除垃圾訊息'
|
|||
delete_spam_confirm = '您是否要刪除所有歸類為垃圾訊息的文章?'
|
||||
delete_posting_submit = '刪除'
|
||||
report_spam_hl = '檢舉垃圾訊息'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
posting_already_spam = '此文章已被標記為垃圾訊息'
|
||||
spamcheck_posting_not_checked = '此文章已被標記為垃圾訊息或是未經過 Akismet 檢查,可能因為 Akismet 未啟用或是由註冊用戶所發表。'
|
||||
spamcheck_posting_passed = '此文章已通過 Akismet 防垃圾訊息檢查。若確定是垃圾訊息可進行檢舉!'
|
||||
spamcheck_akismet_api_error = '此文章已通過 Akismet 防垃圾訊息檢查。因為在檢查過程中發生錯誤,可能是無效的 API 金鑰所導致!'
|
||||
spamcheck_akismet_timeout_error = '此文章已通過 Akismet 防垃圾訊息檢查,因為 Akismet 伺服器連線逾時錯誤。'
|
||||
report_spam_delete_submit = '檢舉為垃圾訊息並刪除'
|
||||
|
@ -447,7 +470,7 @@ delete_only_submit = '只刪除'
|
|||
postings_doesnt_exist = '這篇文章並不存在!'
|
||||
posting_not_flagged_as_spam = '此文章沒有被標記為垃圾訊息。'
|
||||
flag_ham_hl = '標記為非垃圾訊息'
|
||||
flag_ham_note = '此文章已由 Akismet 防垃圾訊息檢查判定為垃圾訊息。若確定是非垃圾訊息可進行檢舉!'
|
||||
flag_ham_warning = '此文章已由 Akismet 防垃圾訊息檢查判定為垃圾訊息。若確定是非垃圾訊息可進行檢舉!'
|
||||
report_flag_ham_submit = '檢舉並標記為非垃圾訊息'
|
||||
flag_ham_submit = '僅標記為非垃圾訊息'
|
||||
no_authorisation_delete = '文章無法刪除!可能是因為文章編輯期限已過、被鎖定或已有其他回覆。'
|
||||
|
@ -485,12 +508,6 @@ no_images = '目前還沒有圖片可用'
|
|||
delete_image_confirm = '刪除這張圖片?'
|
||||
delete_image_button = '刪除'
|
||||
|
||||
[insert_flash]
|
||||
insert_flash_hl = '插入 flash'
|
||||
flash_url = 'Flash 網址:'
|
||||
flash_size = '大小:'
|
||||
insert_flash_button = '插入 flash'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = '頭像'
|
||||
delete_avatar = '刪除頭像'
|
||||
|
@ -550,6 +567,7 @@ pwf_username = '帳號:'
|
|||
pwf_email = '信箱:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = '帳號'
|
||||
user_type = '類型'
|
||||
admin = '管理員'
|
||||
|
@ -612,7 +630,10 @@ edit_email = '修改信箱'
|
|||
edit_user_pw = '密碼:'
|
||||
pw_not_displayed = '不顯示'
|
||||
edit_pw = '修改密碼'
|
||||
edit_user_email_contact = '可透過信箱與我聯繫'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = '名稱:'
|
||||
edit_user_gender = '性別:'
|
||||
gender_not_specified = '不指定'
|
||||
|
@ -659,7 +680,6 @@ error_pw_wrong = '密碼錯誤'
|
|||
edit_pw_old = '目前密碼:'
|
||||
edit_pw_new = '新密碼:'
|
||||
error_old_pw_wrong = '目前的密碼錯誤'
|
||||
error_pw_conf_uneven = '新密碼和重複密碼不相符'
|
||||
error_new_pw_too_short = '新密碼必須含有至少 [characters] 字元'
|
||||
error_new_pw_needs_digit = '新密碼必須含有至少 [digits] 個數字'
|
||||
error_new_pw_needs_lowercase_letter = '新密碼必須含有至少 [lowercase_letters] 個小寫字母'
|
||||
|
@ -677,15 +697,16 @@ error_email_too_long = '信箱過長'
|
|||
error_identic_email = '新信箱和原有的信箱相同'
|
||||
error_email_invalid = '信箱格式錯誤'
|
||||
pw_wrong = '密碼錯誤'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
|
||||
[register]
|
||||
register_exp = '請輸入帳號、密碼和有效的信箱,啟用碼將寄至您的信箱。<strong>帳號必須在一天內啟用。</strong>'
|
||||
register_username = '帳號:'
|
||||
register_user_email = '信箱:'
|
||||
register_pw = '密碼:'
|
||||
register_pw_conf = '重複密碼:'
|
||||
register_honeypot_field = '將此欄留空:'
|
||||
register_only_by_admin = '目前只有管理員可以註冊用戶。'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = '帳號已註冊,啟用碼已寄至 <strong>[var]</strong>。<strong>帳號必須在一天內啟用。</strong>'
|
||||
registered_send_error = '帳號已註冊,但無法寄出啟用碼 (信箱伺服器無法使用)。請與管理員聯繫並請求協助啟用帳號。'
|
||||
activation_failed = '帳號啟用失敗。'
|
||||
|
@ -703,6 +724,7 @@ contact_user_hl = '寫信給 [recipient_name]'
|
|||
impossible_to_contact = '無法聯繫此用戶!'
|
||||
contact_doesnt_exist = '此聯繫並不存在!'
|
||||
sender_address_caption = '寄件者信箱:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
subject_caption = '標題:'
|
||||
message_caption = '訊息:'
|
||||
message_submit_caption = '寄送訊息'
|
||||
|
@ -713,7 +735,7 @@ error_message_no_subject = '尚未輸入標題'
|
|||
error_email_invalid = '此為無效的信箱'
|
||||
error_email_subject_too_long = '標題過長'
|
||||
error_email_text_too_long = '訊息內容過長 ([text_length] 字元,最多 [text_maxlength] 字元)'
|
||||
error_spam_suspicion = '垃圾訊息偵測!請修改您的訊息 (例如移除連結)'
|
||||
error_email_spam_suspicion = '垃圾訊息偵測!請修改您的訊息 (例如移除連結)'
|
||||
|
||||
[admin]
|
||||
enabled = '啟用'
|
||||
|
@ -732,6 +754,7 @@ pages_administr_link = '頁面'
|
|||
spam_protection_link = '防垃圾訊息'
|
||||
update_link = '更新'
|
||||
reset_uninstall_link = '重設或解除安裝論壇'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '可用版本'
|
||||
releases_list_link = '在釋出版本中檢查有無可用版本。'
|
||||
warning_header = '警告'
|
||||
|
@ -821,7 +844,6 @@ bbcode = 'BB code'
|
|||
bbcode_desc = '是否允許用 BB Codes 格式來編輯內容?'
|
||||
bbcodes_enabled = '啟用 BB Codes'
|
||||
bbcodes_img_enabled = '允許使用 BB Code 插入圖片'
|
||||
bbcodes_flash_enabled = '允許使用 BB Code 插入 flash 影片'
|
||||
smilies = '表情'
|
||||
smilies_desc = '是否讓像 ":-)" 的文字取代為圖片?(表情可於後台管理中自訂)'
|
||||
smilies_enabled = '啟用表情'
|
||||
|
@ -906,6 +928,7 @@ delete_page_submit = '刪除頁面'
|
|||
error_no_page_title = '沒有標題'
|
||||
|
||||
# user administration:
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = '尚未輸入帳號'
|
||||
num_registerd_users = '[number] 位註冊用戶'
|
||||
user_id = 'ID'
|
||||
|
@ -952,6 +975,22 @@ clear_userdata_condition = '刪除登入次數少於 [logins] 次、最
|
|||
clear_userdata_note = '刪除前您可查看已選擇的用戶列表,管理員與版主將不受影響。'
|
||||
no_users_in_selection = '尚未選擇用戶'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = '哪些表單類型將受到 CAPTCHA 的保護 (僅限未註冊的用戶)?'
|
||||
|
@ -964,20 +1003,21 @@ captcha_mathematical = '數學題'
|
|||
captcha_graphical = '圖形'
|
||||
gr_captcha_not_available = '圖形 CAPTCHA 無法使用 (GD Lib 無法使用)'
|
||||
gr_captcha_no_font = '沒有可用的字體,CAPTCHA 圖片將無法正確顯示'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> 用於檢查註冊時的信箱。'
|
||||
stop_forum_spam_enable = '啟用 Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> 防止垃圾訊息。'
|
||||
bad_behavior_enable = '啟用 Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> 服務。若要使用,需要 <a href="http://wordpress.com/api-keys/">Wordpress API 金鑰</a> (沒有或無效的 API 金鑰 將會無法使用!)。'
|
||||
akismet_key = 'Wordpress API 金鑰:'
|
||||
akismet_save_spam = 'Save spam (標記為垃圾訊息且不顯示)?'
|
||||
akismet_auto_delete_spam = '幾小時後自動刪除垃圾訊息 (0 = 不要刪除)?'
|
||||
akismet_entry = '檢查文章表單'
|
||||
akismet_mail = '檢查信箱表單'
|
||||
akismet_registered = '檢查註冊用戶的送出'
|
||||
banned_ips = '封鎖 IP'
|
||||
banned_ips_desc = '封鎖的 IP 清單,將無法瀏覽論壇。可以使用 IP 範圍 (例如 10.10.1.*) 和 CIDR 無類別域間路由 (例如 10.10.1.32/27)。一行一個 IP。'
|
||||
banned_user_agents = '封鎖使用者代理'
|
||||
|
@ -988,6 +1028,12 @@ spam_protection_submit = '儲存'
|
|||
error_own_ip_banned = '您封鎖到自己的IP了!'
|
||||
error_own_user_agent_banned = '您封鎖到自己了!'
|
||||
spam_protection_saved = '已儲存'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = '<!-- TODO -->check submissions of registered users for spam using enabled filters'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
auto_delete_spam_timespan = '<!-- TODO -->Delete spam automatically after how many hours (0 = do not delete)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
reset_forum = '重設論壇'
|
||||
|
@ -1017,6 +1063,7 @@ update_submit = '執行更新'
|
|||
update_successful = '資料庫已更新成功。'
|
||||
update_items_note = '請立即上傳以下新壓縮檔內的檔案和資料夾 (版本為 [version]) 到您的伺服器中:'
|
||||
update_download = '若您還沒有這些檔案,可以從 [[here]] 下載。'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = '於 "[original_subject]" 的回覆'
|
||||
|
@ -1152,6 +1199,19 @@ contact_notification_txt = """此信件已與您的信箱一併寄至 [re
|
|||
|
||||
--
|
||||
這封信是由論壇 [forum_address] 所寄出。"""
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
|
||||
Kind regards
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
|
||||
[install]
|
||||
installation_title = '安裝指南'
|
||||
|
@ -1200,5 +1260,6 @@ error_db_inexistent = '指定的資料庫並不存在,請檢查資
|
|||
error_sql_file_doesnt_exist = '安裝用的 SQL 檔案 (install.sql) 並不存在'
|
||||
error_overwrite_config_file = '沒有權限覆寫檔案 <strong>config/db_settings.php</strong> (權限設為 666,目前是 [CHMOD])'
|
||||
error_sql = 'SQL 錯誤'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = '安裝論壇'
|
||||
error_conf_pw = '管理員密碼並不相符'
|
||||
|
|
|
@ -1,10 +1,28 @@
|
|||
################################################################################
|
||||
# Croatian language file for my little forum 2.4 #
|
||||
# Croatian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Riba < riba at ml1 dot net > 2010-07-27 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = hr
|
||||
language_code = 'hr'
|
||||
language_name_system = 'croatian'
|
||||
language_name_own = 'Hrvatski'
|
||||
charset = utf-8
|
||||
locale = hr_HR.utf8
|
||||
locale = hr_HR
|
||||
|
@ -12,8 +30,8 @@ locale = hr
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d/m/Y, H:i
|
||||
time_format_full = l d F Y, H:i
|
||||
time_format = 'dd.\' \'MM.\' \'YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d MMMM YYYY, H:mm'
|
||||
forum_time = 'Vrijeme na forumu: [time]'
|
||||
forum_time_with_time_zone = 'Vrijeme na forumu: [time] ([time_zone])'
|
||||
unknown_user = 'nepoznat'
|
||||
|
@ -38,8 +56,8 @@ next_page_link = 'Sljedeća stranica »'
|
|||
previous_page_link = '« Prethodna stranica'
|
||||
next_page_link_title = 'sljedeća stranica'
|
||||
previous_page_link_title = 'prethodna stranica'
|
||||
posted_by = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'od <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'od [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'od [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikni za otvaranje početne poruke od [name]'
|
||||
error_headline = 'Greška!'
|
||||
no_authorisation = 'Nemate dopuštenje!'
|
||||
|
@ -93,7 +111,7 @@ expand_fold_thread_linktitle = 'Raširi / skupi temu'
|
|||
category_title = 'Kategorija'
|
||||
all_categories = 'Sve kategorije'
|
||||
my_category_selection = 'Tvoj izbor'
|
||||
page_title = 'Stranica'
|
||||
browse_page_title = 'Stranica'
|
||||
thread_entry_back_link = 'Početna stranica'
|
||||
thread_entry_back_title = 'Početna stranica foruma'
|
||||
reply_link = 'Pošalji odgovor'
|
||||
|
@ -187,6 +205,7 @@ open_whole_thread = 'Otvori čitavu temu'
|
|||
change_category_link = 'Prikaži poruke u kategoriji "[category]"'
|
||||
mark_linktitle = 'Označi poruke'
|
||||
unmark_linktitle = 'Odznači poruke'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Obriši označene poruke'
|
||||
manage_postings_link = 'Upravljanje porukama'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
|
@ -201,6 +220,8 @@ more_smilies_label = 'više...'
|
|||
more_smilies_title = 'više smajlića'
|
||||
close = 'zatvori'
|
||||
no_postings_user = 'Nema poruka.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Traži'
|
||||
search_fulltext = 'izraz'
|
||||
search_tags = 'oznake'
|
||||
|
@ -213,7 +234,6 @@ several_postings_by_user = '[number] poruka:'
|
|||
rss_posting_by = 'Poruka od [name], [time]:'
|
||||
rss_reply_by = 'Odgovor od [name], [time]:'
|
||||
rss_reply_marking = '(odgovor)'
|
||||
move_drag_and_drop = 'Uhvati i povuci za pomicanje gore ili dole'
|
||||
move_up = 'pomakni gore'
|
||||
move_down = 'pomakni dole'
|
||||
delete_posting_title = 'Obriši poruku'
|
||||
|
@ -233,6 +253,7 @@ administrator_title = 'Administrator'
|
|||
moderator_title = 'Moderator'
|
||||
avatar_img_alt = 'Avatar'
|
||||
search_user = 'Nađi korisnika:'
|
||||
search_user_default_value = '<!-- TODO -->Search user...'
|
||||
no_users = 'Nema pronađenih korisnika.'
|
||||
no_text_title = 'Tijelo poruke je prazno'
|
||||
no_text_alt = 'Nema teksta'
|
||||
|
@ -296,7 +317,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Ispravio [name], [time]'
|
||||
edited_by = 'Ispravio [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Oznake:'
|
||||
one_view = '1 otvaranje'
|
||||
several_views = '[views] otvaranja'
|
||||
|
@ -347,12 +368,14 @@ optional = '(nije obavezno)'
|
|||
optional_email = '(nije obavezno, neće biti prikazano)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
remember_userdata_marking = 'Upamti me'
|
||||
category_marking = 'Kategorija:'
|
||||
delete_cookie_linkname = 'obriši cookie'
|
||||
category_marking = 'Kategorija:'
|
||||
subject_marking = 'Tema:'
|
||||
message_marking = 'Poruka:'
|
||||
tags_marking = 'Oznake:'
|
||||
tags_note = '(nije obavezno, razdvojeno zarezima)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'podebljano'
|
||||
bbcode_bold_title = 'Podebljaj tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -385,9 +408,9 @@ bbcode_image_instr_right = 'desno: [img=right]http://primjer.com/slika.jp
|
|||
bbcode_image_label_thumb = 'thumbnail'
|
||||
bbcode_image_instr_thumb = 'thumbnail: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'thumbnail lijevo'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail lijevo: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail lijevo: [img=thumbnail-left]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'thumbnail desno'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail desno: [img=thumbnail]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail desno: [img=thumbnail-right]http://primjer.com/slika.jpg[/img]'
|
||||
bbcode_upload_label = 'upload'
|
||||
bbcode_upload_title = 'upload slike'
|
||||
bbcode_upload_instruction = 'slanje slike na naš poslužitelj'
|
||||
|
@ -544,6 +567,7 @@ pwf_username = 'Koriničko ime:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'Korisničko ime'
|
||||
user_type = 'Vrsta'
|
||||
admin = 'Administrator'
|
||||
|
@ -682,6 +706,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Lozinka:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Samo administrator može registrirati nove korisnike.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Korisnički račun je registriran i aktivacijski ključ je poslan na <strong>[var]</strong>. Korsnički račun mora biti aktiviran unutar jednog dana.'
|
||||
registered_send_error = 'Korisnički račun je registriran ali aktivacijski ključ nije poslan zbog problema sa mail poslužiteljem. Kontaktirajte administratora i zatražite ručnu aktivaciju.'
|
||||
activation_failed = 'Aktivacija korisničkog računa nije uspjela.'
|
||||
|
@ -730,11 +755,11 @@ spam_protection_link = 'Zaštita od spama'
|
|||
update_link = 'Unaprijedi verziju'
|
||||
reset_uninstall_link = 'Isprazni ili ukloni forum'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -903,58 +928,68 @@ delete_page_submit = 'Obriši stranicu'
|
|||
error_no_page_title = 'Bez naslova'
|
||||
|
||||
# user administration:
|
||||
user_name_empty = 'Korisničko ime nije upisano'
|
||||
num_registerd_users = '[number] registriranih korisnika'
|
||||
user_id = 'Br.'
|
||||
user_name = 'Korisničko ime'
|
||||
user_email = 'E-mail'
|
||||
user_type = 'Vrsta'
|
||||
user_registered = 'Registriran'
|
||||
user_logins = 'Prijava'
|
||||
last_login = 'Zadnja prijava'
|
||||
lock = 'Zaključaj'
|
||||
admin = 'Administrator'
|
||||
mod = 'Moderator'
|
||||
user = 'Korisnik'
|
||||
locked = 'zaključan'
|
||||
unlocked = 'otključan'
|
||||
lock_title = 'Zaključaj korisnika'
|
||||
unlock_title = 'otključaj korisnika'
|
||||
user_inactive = 'Korisnik nije aktivan'
|
||||
activate_note = 'Korisnički račun još nije aktiviran ili je korisnik u postupku prmjene svoje e-mail adrese. Aktivirajte ga samo u slučaju da korisnik ima problema sa aktivacijom.'
|
||||
activate_link = 'Aktiviraj korisnički račun'
|
||||
delete_selected_users = 'Obriši označeno'
|
||||
add_user = 'Dodaj korisnika'
|
||||
email_list = 'Pošalji popis registriranih korisnika e-mailom'
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'Korisničko ime nije upisano'
|
||||
num_registerd_users = '[number] registriranih korisnika'
|
||||
user_id = 'Br.'
|
||||
user_name = 'Korisničko ime'
|
||||
user_email = 'E-mail'
|
||||
user_type = 'Vrsta'
|
||||
user_registered = 'Registriran'
|
||||
user_logins = 'Prijava'
|
||||
last_login = 'Zadnja prijava'
|
||||
lock = 'Zaključaj'
|
||||
admin = 'Administrator'
|
||||
mod = 'Moderator'
|
||||
user = 'Korisnik'
|
||||
locked = 'zaključan'
|
||||
unlocked = 'otključan'
|
||||
lock_title = 'Zaključaj korisnika'
|
||||
unlock_title = 'otključaj korisnika'
|
||||
user_inactive = 'Korisnik nije aktivan'
|
||||
activate_note = 'Korisnički račun još nije aktiviran ili je korisnik u postupku prmjene svoje e-mail adrese. Aktivirajte ga samo u slučaju da korisnik ima problema sa aktivacijom.'
|
||||
activate_link = 'Aktiviraj korisnički račun'
|
||||
delete_selected_users = 'Obriši označeno'
|
||||
add_user = 'Dodaj korisnika'
|
||||
email_list = 'Pošalji popis registriranih korisnika e-mailom'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Obriši korisničke podatke'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
delete_avatar = 'Obriši avatar sličicu'
|
||||
delete_user_confirmation = 'Jeste li sigurni da želite obrisati ovog korisnika?'
|
||||
delete_users_confirmation = 'Jeste li sigurni da želite obrisati sljedeće korisnike?'
|
||||
delete_entries_of_user_confirm ='<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'Obriši'
|
||||
register_exp = 'Polje za lozinku može biti ostavljeno praznim u slučaju da želite generirati nasumičnu lozinku. U tom će slučaju korisnički detalji biti poslani na upisanu e-mail adresu.'
|
||||
register_username = 'Korisničko ime:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Lozinka:'
|
||||
register_pw_conf = 'Potvrda lozinke:'
|
||||
register_send_userdata = 'Pošalji korisničke podatke na upisanu e-mail adresu'
|
||||
error_send_userdata = 'U slučaju praznog polja za lozinku, korisnički podaci moraju biti poslani na njihovu e-mail adresu'
|
||||
admin_reg_error_email_wrong = 'E-mail adresa nije ispravna'
|
||||
new_user_registered = 'Korisnik "[name]" je registriran.'
|
||||
new_user_reg_send_error = 'Korisnik "[name]" je registrirano ali korisničke detalje nije bilo moguće poslati.'
|
||||
clear_userdata_condition = 'Obriši korisnike koji su se prijavili najviše [logins] puta i posljednji put prije više od [days] dana.'
|
||||
clear_userdata_note = 'Administratori i moderatori neće biti zahvaćeni. Prije brisanja biti će prikazan popis korisnika koji zadovoljavaju uvjete.'
|
||||
no_users_in_selection = 'Nema korisnika koji zadovoljavaju postavljene uvjete.'
|
||||
clear_userdata = 'Obriši korisničke podatke'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
delete_avatar = 'Obriši avatar sličicu'
|
||||
delete_user_confirmation = 'Jeste li sigurni da želite obrisati ovog korisnika?'
|
||||
delete_users_confirmation = 'Jeste li sigurni da želite obrisati sljedeće korisnike?'
|
||||
delete_entries_of_user_confirm = '<!-- TODO -->Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'Obriši'
|
||||
register_exp = 'Polje za lozinku može biti ostavljeno praznim u slučaju da želite generirati nasumičnu lozinku. U tom će slučaju korisnički detalji biti poslani na upisanu e-mail adresu.'
|
||||
register_username = 'Korisničko ime:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Lozinka:'
|
||||
register_pw_conf = 'Potvrda lozinke:'
|
||||
register_send_userdata = 'Pošalji korisničke podatke na upisanu e-mail adresu'
|
||||
error_send_userdata = 'U slučaju praznog polja za lozinku, korisnički podaci moraju biti poslani na njihovu e-mail adresu'
|
||||
admin_reg_error_email_wrong = 'E-mail adresa nije ispravna'
|
||||
new_user_registered = 'Korisnik "[name]" je registriran.'
|
||||
new_user_reg_send_error = 'Korisnik "[name]" je registrirano ali korisničke detalje nije bilo moguće poslati.'
|
||||
clear_userdata_condition = 'Obriši korisnike koji su se prijavili najviše [logins] puta i posljednji put prije više od [days] dana.'
|
||||
clear_userdata_note = 'Administratori i moderatori neće biti zahvaćeni. Prije brisanja biti će prikazan popis korisnika koji zadovoljavaju uvjete.'
|
||||
no_users_in_selection = 'Nema korisnika koji zadovoljavaju postavljene uvjete.'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -977,9 +1012,6 @@ b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Vali
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://www.bad-behavior.ioerror.us/">Bad Behavior</a> zaštita od spama.'
|
||||
bad_behavior_enable = 'uključi Bad Behavior zaštitu'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> je servis za zaštitu od spama. Za njegovo koriptenje trebate <a href="http://wordpress.com/api-keys/">Wordpress API ključ</a> (neće raditi bez ili sa neispravnim API ključem!).'
|
||||
akismet_key = 'Wordpress API ključ:'
|
||||
|
@ -1033,6 +1065,7 @@ update_submit = 'Pokreni instalaciju'
|
|||
update_successful = 'Baza je uspješno ažurirana.'
|
||||
update_items_note = 'Molimo vas da sada pošaljete sljedeće datoteke/direktorije iz arhive foruma (verzija [version]) na vaš poslužitelj:'
|
||||
update_download = 'Ako nemate potrebne datoteke možete ih naći ovdje: [[here]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Odgovor na "[original_subject]"'
|
||||
|
@ -1156,7 +1189,7 @@ contact_email_txt = """[message]
|
|||
|
||||
---
|
||||
Ovaj je e-mail poslan sa foruma na adresi [forum_address]."""
|
||||
contact_email_txt_user = """[message]
|
||||
contact_email_txt_user = """[message]
|
||||
|
||||
---
|
||||
Ovaj vam je e-mail poslao korisnik [user] sa foruma na adresi [forum_address]."""
|
||||
|
@ -1230,5 +1263,6 @@ error_db_inexistent = 'Navedena baza ne postoji - provjerite je li n
|
|||
error_sql_file_doesnt_exist = 'Instalacijska SQL datoteka (install.sql) ne postoji '
|
||||
error_overwrite_config_file = 'Nemam dopuštenje za prepisivanje sadržaja datoteke <strong>config/db_settings.php</strong> (postavite CHMOD 666, trenutno je [CHMOD])'
|
||||
error_sql = 'SQL greška'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Instaliraj forum'
|
||||
error_conf_pw = 'Administratorske lozinke se ne podudaraju'
|
||||
|
|
239
lang/danish.lang
|
@ -1,6 +1,7 @@
|
|||
################################################################################
|
||||
# Danish language file for my little forum 2.4.3 #
|
||||
# Danish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
|
@ -19,6 +20,9 @@
|
|||
|
||||
[default]
|
||||
language = da
|
||||
language_code = 'da'
|
||||
language_name_system = 'danish'
|
||||
language_name_own = 'dansk'
|
||||
charset = utf-8
|
||||
locale = da_DK.utf8
|
||||
locale = da
|
||||
|
@ -26,8 +30,8 @@ locale = da_DK
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d/m Y, H:i
|
||||
time_format_full = l d. F, Y, H:i
|
||||
time_format = 'd/M YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, \'den\' d. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukendt'
|
||||
|
@ -42,7 +46,7 @@ replies = 'Svar'
|
|||
views = 'Visninger'
|
||||
category = 'Kategori'
|
||||
submit_button_ok = ' OK '
|
||||
submit_button_cancel = '<!-- TODO --> Cancel '
|
||||
submit_button_cancel = ' Fortryd '
|
||||
yes = 'ja'
|
||||
no = 'nej'
|
||||
go = 'Hop'
|
||||
|
@ -52,8 +56,8 @@ next_page_link = 'Næste side »'
|
|||
previous_page_link = '« Forrige side'
|
||||
next_page_link_title = 'næste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'af <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'af [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'af [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klik for at gå til det originale indlæg af [name]'
|
||||
error_headline = 'Fejl!'
|
||||
no_authorisation = 'Ingen autoritet!'
|
||||
|
@ -79,8 +83,8 @@ search_default_value = 'Søg'
|
|||
search_title = 'Søg indlæg'
|
||||
new_topic_link = 'Nyt emne'
|
||||
new_topic_link_title = 'Skriv et nyt emne'
|
||||
back_to_top_link = '<!-- TODO -->To top'
|
||||
back_to_top_link_title = '<!-- TODO -->Go back to top of the page'
|
||||
back_to_top_link = 'Gå op'
|
||||
back_to_top_link_title = 'Gå til toppen af siden'
|
||||
order_link = 'Opstilling'
|
||||
order_link_title_1 = 'Sortér efter dato på sidste svar'
|
||||
order_link_title_2 = 'Sortér efter dato på emner (normal)'
|
||||
|
@ -118,8 +122,8 @@ back_to_entry_link = 'Tilbage til indlæg skrevet af [name]'
|
|||
back_to_entry_link_title = 'Tilbage til indlæg skrevet af [name]'
|
||||
subnav_login = 'Log ind'
|
||||
subnav_pw_forgotten = 'Glemt kodeord'
|
||||
subnav_accept_dps = '<!-- TODO -->Accept the data privacy statement'
|
||||
subnav_accept_tou = '<!-- TODO -->Accept the terms of use agreement'
|
||||
subnav_accept_dps = 'Acceptér privatlivspolitik'
|
||||
subnav_accept_tou = 'Acceptér brugervilkår'
|
||||
subnav_admin_area = 'Admin område'
|
||||
subnav_settings = 'Forum indstillinger'
|
||||
subnav_advanced_settings = 'Advancerede indstillinger'
|
||||
|
@ -152,7 +156,7 @@ subnav_userarea_show_posts = 'Indlæg af [var]'
|
|||
subnav_userarea_edit_user = 'Rediger Profil'
|
||||
subnav_userarea_edit_pw = 'ændre Kodeord'
|
||||
subnav_userarea_edit_mail = 'ændre E-mail adresse'
|
||||
subnav_userarea_remove_account = '<!-- TODO -->Delete account'
|
||||
subnav_userarea_remove_account = 'Slet konto'
|
||||
subnav_backup = 'Backup'
|
||||
subnav_update = 'Opdater'
|
||||
subnav_update_run = 'Kør opdatering'
|
||||
|
@ -164,8 +168,8 @@ subnav_disabled = 'Forum deaktiveret'
|
|||
subnav_bookmarks = 'Bogmærker'
|
||||
subnav_delete_bookmark = 'Slet bogmærker'
|
||||
subnav_edit_bookmark = 'Redigér bogmærker'
|
||||
subnav_list_uploads = '<!-- TODO -->List of uploads'
|
||||
subnav_confirm_delete_uploads = '<!-- TODO -->Delete uploads'
|
||||
subnav_list_uploads = 'Liste over uploads'
|
||||
subnav_confirm_delete_uploads = 'Slet uploads'
|
||||
subnav_page_error = 'Fejl'
|
||||
subnav_page = '[var]'
|
||||
counter = '[total_postings] Indlæg i [total_threads] emner, [registered_users] registrerede brugere'
|
||||
|
@ -201,6 +205,7 @@ open_whole_thread = 'åben hele emnet'
|
|||
change_category_link = 'Vis indlæg i kategorien "[category]"'
|
||||
mark_linktitle = 'Marker indlæg'
|
||||
unmark_linktitle = 'Afmarker indlæg'
|
||||
unclassified_linktitle = 'Indlægget er ikke klassificeret'
|
||||
delete_marked_link = 'Slet markerede indlæg'
|
||||
manage_postings_link = 'Håndter indlæg'
|
||||
non_activated_users_link = '[counter] ikke aktiverede brugere'
|
||||
|
@ -215,6 +220,8 @@ more_smilies_label = 'flere …'
|
|||
more_smilies_title = 'flere smilies'
|
||||
close = 'luk'
|
||||
no_postings_user = 'Ingen indlæg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søg'
|
||||
search_fulltext = 'fuld tekst'
|
||||
search_tags = 'tags'
|
||||
|
@ -254,8 +261,8 @@ no_text = '- No text -'
|
|||
error_invalid_form = 'Session udløbet! Kopier venligst teksten og log ind igen eller send teksten igen for at skrive den som gæst.'
|
||||
error_form_sent_too_fast = 'Formularen blev sendt for hurtigt - vent venligst nogle sekunder og prøv igen (automatiseret formular sendings beskyttelse)'
|
||||
error_form_sent_too_slow = 'Formularen er ikke gyldig længere - kopier venligst teksten og opdater siden'
|
||||
terms_of_use_agreement = 'Jeg er enig med [[bruger betingelserne]]'
|
||||
data_privacy_agreement = '<!-- TODO -->I agree to the [[data privacy statement]]'
|
||||
terms_of_use_agreement = 'Jeg accepterer [[brugerbetingelserne]]'
|
||||
data_privacy_agreement = 'Jeg accepterer [[privatlivspolitikken']]'
|
||||
error_not_accepted_word = 'Ikke accepteret ord: [not_accepted_word]'
|
||||
error_not_accepted_words = 'Ikke accepterede ord: [not_accepted_words]'
|
||||
error_username_invalid_chars = 'Brugernavnet indeholder specialtegn'
|
||||
|
@ -275,42 +282,42 @@ error_no_subject = 'Emne er ikke udfyldt'
|
|||
error_no_text = 'Tekst er ikke udfyldt'
|
||||
terms_of_use_error_register = 'Du skal godkende brugerreglerne for at kunne fuldføre registreringen'
|
||||
terms_of_use_error_posting = 'Du skal godkende brugerreglerne for at kunne gemme dette indlæg'
|
||||
terms_of_use_error_reconf = '<!-- TODO -->You have to agree to the changes of the terms of use in order to submit further messages'
|
||||
data_priv_statement_error_reg = '<!-- TODO -->You have to agree to the data privacy statement in order to complete the registration'
|
||||
data_priv_statement_error_post = '<!-- TODO -->You have to agree to the data privacy statement in order to submit this message'
|
||||
data_priv_statement_error_reconf ='<!-- TODO -->You have to agree to the changes of the data privacy statement in order to submit further messages'
|
||||
submit_button_agreed = '<!-- TODO -->I agree'
|
||||
submit_button_disagreed = '<!-- TODO -->I disagree'
|
||||
terms_of_use_error_reconf = 'Du skal acceptere ændringerne i brugerbetingelserne, for at kunne skrive flere indlæg'
|
||||
data_priv_statement_error_reg = 'Du skal acceptere privatlivspolitikken, for at fuldføre registreringen'
|
||||
data_priv_statement_error_post = 'Du skal acceptere privatlivspolitikken, for at sende dette indlæg'
|
||||
data_priv_statement_error_reconf ='Du skal acceptere ændringerne i privatlivspolitikken, for at kunne skrive flere indlæg'
|
||||
submit_button_agreed = 'Jeg accepterer'
|
||||
submit_button_disagreed = 'Jeg accepterer ikke'
|
||||
check_all = 'Markér alle'
|
||||
uncheck_all = 'fjern markering'
|
||||
drag_and_drop_title = 'Træk og slip for at gå op eller ned'
|
||||
show_all_postings_link = 'Egne indlæg'
|
||||
show_bookmarks_link = 'Bogmærker'
|
||||
show_userdata_linktitle = 'Brugerprofil for [user]'
|
||||
show_password_title = '<!-- TODO -->Show password in plain text'
|
||||
hide_password_title = '<!-- TODO -->Hide password'
|
||||
show_password_title = 'Vis password i almindelig tekst'
|
||||
hide_password_title = 'Skjul password'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Slet bogmærke'
|
||||
delete_bookmark_confirm = 'Vil du virkelig slette dette bogmærke?'
|
||||
no_bookmarks = 'Der er ingen bogmærker.'
|
||||
edit_bookmark = 'Bogmærke:'
|
||||
edit_tags = '<!-- TODO -->Tags:'
|
||||
edit_tags_note = '<!-- TODO -->(optional, separated by comma)'
|
||||
edit_tags = 'Tags:'
|
||||
edit_tags_note = '(valgfri, adskil med komma)'
|
||||
bookmark_title = 'Navn på bogmærke'
|
||||
bookmark_user_name = 'Brugernavn'
|
||||
bookmark_creation_time = 'Bogmærke sat'
|
||||
bookmark_posting_time = 'Indlæg skrevet'
|
||||
bookmark_filter_linktitle = '<!-- TODO -->Apply bookmark filter'
|
||||
clear_bookmark_filter_linkname = '<!-- TODO -->Clear bookmark filter'
|
||||
clear_bookmark_filter_linktitle = '<!-- TODO -->clear current bookmark filter and show all saved bookmarks'
|
||||
error_no_bookmark_subject = '<!-- TODO -->No subject has been entered'
|
||||
error_bookmark_subject_too_long = '<!-- TODO -->The subject is too long'
|
||||
error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
||||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
bookmark_filter_linktitle = 'Tilføj bogmærkefilter'
|
||||
clear_bookmark_filter_linkname = 'Fjern bogmærkefilter'
|
||||
clear_bookmark_filter_linktitle = 'Fjern nuværende bogmærkefilter og vis alle gemte bogmærker'
|
||||
error_no_bookmark_subject = 'Der er ikke indtastet en titel'
|
||||
error_bookmark_subject_too_long = 'Titlen er for lang'
|
||||
error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
||||
error_bookmark_tags_limit_reached = 'Taggrænsen for bogmærker er nået'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigeret af [name], [time]'
|
||||
edited_by = 'redigeret af [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
|
@ -359,7 +366,7 @@ hp_marking = 'Hjemmeside:'
|
|||
location_marking = 'Lokation:'
|
||||
optional = '(valgfri)'
|
||||
optional_email = '(valgfri, vil ikke blive vist offentligt)'
|
||||
honeypot_field_marking = '<!-- TODO -->Leave this field empty:'
|
||||
honeypot_field_marking = 'Lad dette felt være tomt:'
|
||||
remember_userdata_marking = 'Husk mig (cookie)'
|
||||
delete_cookie_linkname = 'slet cookie'
|
||||
category_marking = 'Kategori:'
|
||||
|
@ -367,6 +374,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Besked:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(valgfri, adskil med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fed'
|
||||
bbcode_bold_title = 'Fed tekst'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -399,9 +408,9 @@ bbcode_image_instr_right = 'Højre: [img=right]http://eksempel.com/billede.jpg[
|
|||
bbcode_image_label_thumb = 'miniaturebillede'
|
||||
bbcode_image_instr_thumb = 'miniaturebillede: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'miniaturebillede venstre'
|
||||
bbcode_image_instr_thumb_left = 'miniaturebillede venstre: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'miniaturebillede venstre: [img=thumbnail-left]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'miniaturebillede højre'
|
||||
bbcode_image_instr_thumb_right = 'miniaturebillede højre: [img=thumbnail]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'miniaturebillede højre: [img=thumbnail-right]http://eksempel.com/billede.jpg[/img]'
|
||||
bbcode_upload_label = 'Upload'
|
||||
bbcode_upload_title = 'Upload billede'
|
||||
bbcode_upload_instruction = 'Upload billede …'
|
||||
|
@ -420,9 +429,9 @@ insert_smiley_title = 'Indsæt smiley'
|
|||
email_notific_reply_thread = 'E-mail besked når der svares på dette emne'
|
||||
email_notific_reply_post = 'E-mail besked når der svares på dette indlæg'
|
||||
show_signature_marking = 'Tilføj signatur'
|
||||
sticky_none = '<!-- TODO -->Do not pin the thread'
|
||||
sticky_single_cat = '<!-- TODO -->Pin thread in the chosen category'
|
||||
sticky_all_cats = '<!-- TODO -->Pin thread to all categories'
|
||||
sticky_none = 'Fastgør ikke denne tråd'
|
||||
sticky_single_cat = 'Fastgør tråden i den valgte kategori'
|
||||
sticky_all_cats = 'Fastgør tråden i alle kategorier'
|
||||
sticky_thread = 'Opslag'
|
||||
message_submit_button = 'OK - Send'
|
||||
message_submit_title = 'Gem indlæg'
|
||||
|
@ -451,7 +460,7 @@ delete_spam_hl = 'Slet spam'
|
|||
delete_spam_confirm = 'Vil du virkelig slette alle indlæg klassificeret som spam?'
|
||||
delete_posting_submit = 'OK - Slet'
|
||||
report_spam_hl = 'Rapporter spam'
|
||||
report_spam_warning = '<!-- TODO -->Please flag and report this entry only as spam, if it is definetly spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
report_spam_warning = 'Markér og rapportér kun dette indlæg som spam, hvis det helt sikkert er spam! Spamfiltre bygger på Bayes-theorem. Sandsynligheden for at et indlæg er spam, er baseret på live data. Forkerte klassificeringer resulterer i et mindre præcist filter.'
|
||||
posting_already_spam = 'Dette indlæg er allerede markeret som spam.'
|
||||
spamcheck_akismet_api_error = 'Dette indlæg passerede Akismet spam filteret fordi en fejl skete imens det blev tjekket. Dette kan være foresaget af en ugyldig API nøgle!'
|
||||
spamcheck_akismet_timeout_error = 'Dette indlæg passerede spam filteret fordi Akismet serveren ikke svarede.'
|
||||
|
@ -461,16 +470,16 @@ delete_only_submit = 'Slet kun'
|
|||
postings_doesnt_exist = 'Dette indlæg eksisterer ikke!'
|
||||
posting_not_flagged_as_spam = 'Dette indlæg er ikke markeret som spam.'
|
||||
flag_ham_hl = 'Marker som HAM'
|
||||
flag_ham_warning = '<!-- TODO -->Please flag and report this entry only as ham (not spam), if it is definetly no spam! The spam filters are founded by the Bayes-theorem. Based on trainings data, the probability of an entry to be spam is estimated. Wrong classifications result in an insensitive filter.'
|
||||
flag_ham_warning = 'Markér og rapportér kun dette indlæg som ham (ikke spam), hvis det helt sikkert ikke er spam! Spamfiltre bygger på Bayes-theorem. Sandsynligheden for at et indlæg er spam, er baseret på live data. Forkerte klassificeringer resulterer i et mindre præcist filter.'
|
||||
report_flag_ham_submit = 'Rapporter og marker som HAM'
|
||||
flag_ham_submit = 'Marker kun som HAM'
|
||||
no_authorisation_delete = 'Indlægget kan ikke slettes! Enten er det fordi perioden mellem indlæg kan slettes er udløbet, emnet er låst eller der allerede er blevet svaret på dette indlæg.'
|
||||
|
||||
[unsubscribe_posting]
|
||||
unsubscribed_hl = '<!-- TODO -->Quitted subscription'
|
||||
unsubscribed_message = '<!-- TODO -->The subscription for informations about replies to your entry got quitted. You will not receive any more e-mails about this specific entry. Subscriptions for informations about further entries are not affected by this action.'
|
||||
unsubscribe_error_hl = '<!-- TODO -->Could not quit the subscription'
|
||||
unsubscribe_error_message = '<!-- TODO -->During the action to quit the subscription an error occured. Please inform the forum operator by e-mail about this issue. Please add the following informations: ID of the entry (take it from the link in the e-mail (URL-parameter "unsubscribe")) and the time of the failed action (add the name of your time zone if possible).'
|
||||
unsubscribed_hl = 'Abonnementet er opsagt'
|
||||
unsubscribed_message = 'Abonnementet for information om svar på dit indlæg, er opsagt. Du modtager ikke flere e-mails vedrørende dette indlæg. Abonnementer om øvrige indlæg, er ikke ændret.'
|
||||
unsubscribe_error_hl = 'Abonnementet kunne ikke opsiges'
|
||||
unsubscribe_error_message = 'Der skete desværre en fejl under opsigelse af abonnementet. Kontakt venligst forum administrator pr e-mail om denne fejl. Medsend venligst ID-nummeret på indlægget (findes i linket i e-mailen (URL-parameter "unsubscribe")) samt tidspunktet, hvor fejlen opstod.'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spam beskyttelsestjek:'
|
||||
|
@ -558,6 +567,7 @@ pwf_username = 'Brugernavn:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Brugerliste'
|
||||
user_name = 'Brugernavn'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -620,10 +630,10 @@ edit_email = 'ændre E-mail adresse'
|
|||
edit_user_pw = 'Kodeord:'
|
||||
pw_not_displayed = 'vises ikke'
|
||||
edit_pw = 'ændre kodeord'
|
||||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_contacting = 'Kontakt til:'
|
||||
edit_user_contacting_disabled = 'Begrænset til administratorer og moderatorer'
|
||||
edit_user_contacting_registered = 'Begrænset til registrerede brugere'
|
||||
edit_user_contacting_public = 'Ubegrænset'
|
||||
edit_user_real_name = 'Navn:'
|
||||
edit_user_gender = 'Køn:'
|
||||
gender_not_specified = 'ikke angivet'
|
||||
|
@ -646,23 +656,23 @@ edit_user_theme = 'Grafisk tema:'
|
|||
edit_user_default_theme = 'Standard ([default_theme])'
|
||||
edit_user_auto_login = 'Auto login:'
|
||||
enable_auto_login = 'Aktivér auto login'
|
||||
edit_user_where_to_open_links = '<!-- TODO -->Should links <em>in entries</em> open in same or different browser windows or tabs?'
|
||||
where_to_open_links_forum_def = '<!-- TODO -->Use the forums own setting (default or set by the admistrator)'
|
||||
where_to_open_links_same = '<!-- TODO -->Open all links in same browser window'
|
||||
where_to_open_links_external = '<!-- TODO -->Open links to other websites in a new browser window or tab (depends on your browser setting)'
|
||||
where_to_open_links_all = '<!-- TODO -->Open all links in a new browser window or tab (depends on your browser setting)'
|
||||
edit_user_where_to_open_links = 'Skal links <em>i indlæg</em> åbne i samme eller i et nyt browser vindue?'
|
||||
where_to_open_links_forum_def = 'Brug forummets egne indstillinger (default eller sat af admistrator)'
|
||||
where_to_open_links_same = 'Åben alle links i samme browser vindue'
|
||||
where_to_open_links_external = 'Åben links til andre websites i et nyt browser vindue (afhængig af dine browser indstillinger)'
|
||||
where_to_open_links_all = 'Åben alle links i et nyt browser vindue (afhængig af dine browser indstillinger)'
|
||||
edit_user_notification = 'E-mail besked:'
|
||||
admin_mod_notif_posting = 'Når et indlæg bliver tilføjet'
|
||||
admin_mod_notif_register = 'Når en ny bruger har registreret sig'
|
||||
userdata_submit_button = 'OK - Gem'
|
||||
profile_saved = 'Din profil er gemt'
|
||||
pw_changed = 'Dit password er ændret'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
remove_user_account = 'Slet konto'
|
||||
remove_user_account_link = 'Slet din brugerkonto'
|
||||
|
||||
[remove_user_account]
|
||||
remove_user_account_h1 = '<!-- TODO -->Delete account'
|
||||
remove_user_account_warning = '<!-- TODO -->Warning, once you delete your account, there is no going back. Please be certain! Bookmarks and account data will deleted. Your postings keep unchanged. Like an unregistered post, your display name ([user_name]) is used as author.'
|
||||
remove_user_account_h1 = 'Slet konto'
|
||||
remove_user_account_warning = 'Advarsel, når du sletter din konto, er den væk. Vær helt sikker på, at du vil slette den! Bogmærker og brugerdata bliver slettet. Dine indlæg slettes ikke og dit brugernavn står som afsender.'
|
||||
remove_user_confirm_password = 'Kodeord:'
|
||||
error_pw_wrong = 'Kodeordet er forkert'
|
||||
|
||||
|
@ -671,10 +681,10 @@ edit_pw_old = 'Gammelt kodeord:'
|
|||
edit_pw_new = 'Nyt kodeord:'
|
||||
error_old_pw_wrong = 'Det gamle kodeord er forkert'
|
||||
error_new_pw_too_short = 'Det nye kodeord skal indeholde mindst [characters] tegn'
|
||||
error_new_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_new_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_new_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_new_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
error_new_pw_needs_digit = 'Kodeordet skal indeholde mindst [digits] tegn'
|
||||
error_new_pw_needs_lowercase_letter = 'Kodeordet skal indeholde mindst [lowercase_letters] små bogstaver'
|
||||
error_new_pw_needs_uppercase_letter = 'Kodeordet skal indeholde mindst [uppercase_letters] store bogstaver'
|
||||
error_new_pw_needs_special_character ='Kodeordet skal indeholde mindst [special_characters] special tegn'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'Når e-mail adressen ændres, bliver du logget ud og kontoen skal aktiveres igen. En aktiverings nøgle vil blive sendt til den nye e-mail adresse. Vær sikker på at e-mail adressen er korrekt! Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
|
@ -687,25 +697,26 @@ error_email_too_long = 'E-mail adressen er for lang'
|
|||
error_identic_email = 'Den nye e-mail er den samme som den gamle'
|
||||
error_email_invalid = 'E-mail adressen er ugyldig'
|
||||
pw_wrong = 'Kodeordet er forkert'
|
||||
error_email_collision = '<!-- TODO -->The new e-mail already exists'
|
||||
error_email_collision = 'Den nye email eksisterer allerede'
|
||||
|
||||
[register]
|
||||
register_exp = 'Angiv venligst det ønskede brugernavn, et kodeord og en gyldig e-mail adresse. En aktiverings nøgle vil blive sendt til denne e-mail adresse. Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
register_username = 'Brugernavn:'
|
||||
register_user_email = 'E-mail:'
|
||||
register_pw = 'Kodeord:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_honeypot_field = 'Lad dette felt være tomt:'
|
||||
register_only_by_admin = 'Brugere kan kun blive registreret af forum administratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen er registreret og aktiverings nøglen er sendt til <strong>[var]</strong>. Kontoen skal aktiveres indenfor det næste døgn.'
|
||||
registered_send_error = 'Kontoen er registreret men aktiverings nøglen kunne ikke sendes (mailserver ikke tilgængelig). Kontakt venligst forum administratoren og spørg efter en manuel konto aktivering.'
|
||||
activation_failed = 'Aktiveringen af kontoen fejlede.'
|
||||
error_password_too_short = 'Kodeordet skal indeholde mindst [characters] tegn'
|
||||
error_email_alr_exists = 'Der findes allerede en bruger med denne e-mail adresse'
|
||||
error_reg_not_accepted_word = 'Spam beskyttelse: E-mail eller navn kan ikke godkendes'
|
||||
error_pw_needs_digit = '<!-- TODO -->The password must contain at least [digits] digit(s)'
|
||||
error_pw_needs_lowercase_letter = '<!-- TODO -->The password must contain at least [lowercase_letters] lowercase letter(s)'
|
||||
error_pw_needs_uppercase_letter = '<!-- TODO -->The password must contain at least [uppercase_letters] uppercase letter(s)'
|
||||
error_pw_needs_special_character ='<!-- TODO -->The password must contain at least [special_characters] special character(s)'
|
||||
error_pw_needs_digit = 'Kodeordet skal indeholde mindst [digits] tegn'
|
||||
error_pw_needs_lowercase_letter = 'Kodeordet skal indeholde mindst [lowercase_letters] små bogstaver'
|
||||
error_pw_needs_uppercase_letter = 'Kodeordet skal indeholde mindst [uppercase_letters] store bogstaver'
|
||||
error_pw_needs_special_character ='Kodeordet skal indeholde mindst [special_characters] special tegn'
|
||||
|
||||
[contact]
|
||||
contact_hl = 'E-mail til webmaster'
|
||||
|
@ -713,7 +724,7 @@ contact_user_hl = 'E-mail til [recipient_name]'
|
|||
impossible_to_contact = 'Denne bruger kan ikke kontaktes!'
|
||||
contact_doesnt_exist = 'Denne kontakt eksisterer ikke!'
|
||||
sender_address_caption = 'Afsender e-mail:'
|
||||
sender_confirmation_caption = '<!-- TODO -->Send me a copy of my message'
|
||||
sender_confirmation_caption = 'Send mig en kopi af min besked'
|
||||
subject_caption = 'Emne:'
|
||||
message_caption = 'Besked:'
|
||||
message_submit_caption = 'OK - Send besked'
|
||||
|
@ -743,13 +754,13 @@ pages_administr_link = 'Sider'
|
|||
spam_protection_link = 'Spam beskyttelse'
|
||||
update_link = 'Opdater'
|
||||
reset_uninstall_link = 'Nulstil eller afinstallér forum'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
upload_administr_link = 'administrér uploads'
|
||||
releases_info_header = 'Aktuel tilgængelig version'
|
||||
releases_list_link = 'Se versionslisten for seneste tilgængelige version.'
|
||||
warning_header = 'Advarsel'
|
||||
warning_install_script_exists = 'Af sikkerhedshensyn anbefales det at slette eller omdøbe <code>install/index.php</code> filen!'
|
||||
actual_installed_version_header = '<!-- TODO -->Aktuelle version'
|
||||
actual_installed_version = '<!-- TODO -->Versionsnummer: <strong>[current_version_string]</strong>'
|
||||
actual_installed_version_header = '<!-- TODO -->Aktuel version'
|
||||
actual_installed_version = 'Versionsnummer: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
clear_chache = 'Ryd cache for at tilføje ændringerne til allerede eksisterende indlæg'
|
||||
|
@ -764,8 +775,8 @@ forum_address = 'Forum adresse'
|
|||
forum_address_desc = 'URL til forumet (brug dette format: http://www.domæne.tld/forum/)'
|
||||
forum_email = 'Forum e-mail adresse'
|
||||
forum_email_desc = 'Vil blive brugt som kontakt adresse og afsender adresse for alle e-mails som bliver sendt af forumet'
|
||||
forum_target_name = '<!-- TODO -->Link window target'
|
||||
forum_target_name_desc = '<!-- TODO -->The target defines, where a link from within a forum entry should be opened. This is especially relevant in cases, when the forum gets displayed in a <code>frame</code> or in an <code>iframe</code>. Allowed values are <code>_self</code> for opening links in the same browser window or tab, <code>_parent</code> for opening links in the parent frame of the current frame in a frameset, <code>_top</code> to completely break out from a frameset to the top level of the current browser window or tab when opening links or tab or a free chosen name of a <code>frame</code> or an <code>iframe</code>. With an unknown name, with the value <code>_self</code> or with no value this defaults to open the links in the same browser window or tab.'
|
||||
forum_target_name = 'Link window target'
|
||||
forum_target_name_desc = 'Target angiver, hvordan et link i et indlæg skal åbnes. Det er især vigtigt, hvis forummet vises i <code>frame</code> eller <code>iframe</code>. Gyldige værdier er <code>_self</code> for at åbne linket i det samme browser vindue eller faneblad, <code>_parent</code> for at åbne linket i parent frame af den aktuelle frame i et frameset, <code>_top</code> for helt at bryde ud af et frameset til toppen af det aktuelle browser vindue eller faneblad.'
|
||||
home_link = 'Hjemmeside link'
|
||||
home_link_desc = 'Link til din hjemmeside, f.eks. http://www.domæne.tld/ eller ../index.html (valgfri)'
|
||||
home_link_name = 'Hjemmeside link navn'
|
||||
|
@ -804,7 +815,7 @@ user_area = 'Bruger område'
|
|||
user_area_desc = 'Er bruger området (bruger liste, profiler) tilgængelig for offentligheden?'
|
||||
public_accessible = 'offentlig tilgængelig'
|
||||
accessible_reg_users_only = 'kun tilgængelig for registrerede brugere'
|
||||
accessible_team_users_only ='<!-- TODO -->accessible by administrators and moderators only'
|
||||
accessible_team_users_only ='kun tilgængelig for administratorer og moderatorer'
|
||||
latest_postings = 'Seneste indlæg'
|
||||
latest_postings_desc = 'Hvor mange seneste indlæg skal vises i en liste på forsiden (0=deaktiveret)? '
|
||||
tag_cloud = 'Tag sky'
|
||||
|
@ -814,10 +825,10 @@ terms_of_use_settings = 'Brugerbetingelser'
|
|||
terms_of_use_settings_desc = 'Obligatorisk for ikke registrerede brugere at være enige med brugerbetingelserne når de skriver beskeder og registrerer'
|
||||
terms_of_use_settings_enabled = 'Brugerbetingelser aktiveret'
|
||||
terms_of_use_url = 'Brugerbetingelser URL:'
|
||||
data_privacy_statement = '<!-- TODO -->Data privacy statement'
|
||||
data_privacy_statement_desc = '<!-- TODO -->Obligation for unregistered users to agree to the data privacy statement when posting messages and registering'
|
||||
data_privacy_settings_enabled = '<!-- TODO -->Data privacy statement enabled'
|
||||
data_privacy_url = '<!-- TODO -->Data privacy statement URL:'
|
||||
data_privacy_statement = 'Privatlivspolitik'
|
||||
data_privacy_statement_desc = 'Krav til ikke-registrerede brugere, om at acceptere privatlivspolitikken ved registrering og indsendelse af indlæg'
|
||||
data_privacy_settings_enabled = 'Privatlivspolitik er aktiveret'
|
||||
data_privacy_url = 'Privatlivspolitik URL:'
|
||||
edit_postings = 'Redigering af indlæg'
|
||||
edit_postings_desc = 'Redigering af indlæg opførsel'
|
||||
edit_own_postings = 'Redigering af egne indlæg:'
|
||||
|
@ -917,6 +928,7 @@ delete_page_submit = 'OK - Slet side'
|
|||
error_no_page_title = 'Ingen titel'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Brugerliste'
|
||||
user_name_empty = 'Intet brugernavn indtastet'
|
||||
num_registerd_users = '[number] registrerede brugere'
|
||||
user_id = 'ID'
|
||||
|
@ -940,10 +952,10 @@ activate_link = 'Aktiver konto'
|
|||
delete_selected_users = 'Slet valgte'
|
||||
add_user = 'Tilføj bruger'
|
||||
email_list = 'E-mail liste af registrerede brugere'
|
||||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
reset_terms_of_use = 'Nulstil acceptering af brugerbetingelser'
|
||||
reset_data_privacy_statement = 'Nulstil acceptering af privatlivspolitik'
|
||||
clear_userdata = 'Ryd brugerdata'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Slet avatar'
|
||||
delete_user_confirmation = 'Er du sikker på, at du vil slette denne bruger?'
|
||||
delete_users_confirmation = 'Er du sikker på, at du vil slette følgende brugere?'
|
||||
|
@ -964,11 +976,20 @@ clear_userdata_note = 'Administratorer og redaktører vil ikke blive berø
|
|||
no_users_in_selection = 'Ingen brugere fundet'
|
||||
|
||||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
upload_administration = 'Uploadstyring'
|
||||
mark_upload_for_removal = 'Markér til sletning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Ingen uploadede filer fundet.'
|
||||
delete_upload_confirmation = 'Er du sikker på, du vil slette denne upload?'
|
||||
delete_uploads_confirmation = 'Er du sikker på, du vil slette disse upload?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -983,17 +1004,14 @@ captcha_graphical = 'grafisk'
|
|||
gr_captcha_not_available = 'Grafisk CAPTCHA ikke tilgængelig (GD Lib ikke tilgængelig)'
|
||||
gr_captcha_no_font = 'Ingen skrifttyper tilgængelige, CAPTCHA kode kan ikke vises optimalt'
|
||||
b8 = 'B8'
|
||||
b8_desc = '<!-- TODO -->Bayes-based spam filter <a href="https://nasauber.de/opensource/b8/">B8</a> that uses individual trainings data'
|
||||
b8_entry_check_enable = '<!-- TODO -->check posting form'
|
||||
b8_mail_check_enable = '<!-- TODO -->check e-mail form'
|
||||
b8_auto_training_enable = '<!-- TODO -->Automated filter traning (Meaningfully, after sufficient manual training for spam and Ham entries!)'
|
||||
b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Valid range is from 0 % to 100 %, e.g. a level of significance of 80 % means, 20 of 100 entries are wrong classified by the filter as spam (false positive)'
|
||||
b8_desc = 'Bayes-baseret spamfilter <a href="https://nasauber.de/opensource/b8/">B8</a>, som bruger individuelle træningsdata'
|
||||
b8_entry_check_enable = 'Kontrollér indlæg'
|
||||
b8_mail_check_enable = 'Kontrollér e-mails'
|
||||
b8_auto_training_enable = 'Automatisk filtertræning (Kun relevant efter tilstrækkelig manuel træning af spam og ham indlæg!)'
|
||||
b8_spam_probability_threshold = 'Tærskel for at klassificere spam. Gyldigt område er fra 0% til 100%, f.eks. betyder et signifikansniveau på 80%, at 20 af 100 poster er forkert klassificeret af filteret som spam (falsk positiv)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam beskyttelse. Kontrollér e-mail adresse på bruger'
|
||||
stop_forum_spam_enable = 'Aktivér Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://www.bad-behavior.ioerror.us/">Bad Behavior</a> spam beskyttelse.'
|
||||
bad_behavior_enable = 'aktiver Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam beskyttelses service. For at bruge den skal du bruge en <a href="http://wordpress.com/api-keys/">Wordpress API Nøgle</a> (vil ikke virke uden eller med en ugyldig API Nøgle!).'
|
||||
akismet_key = 'Wordpress API Nøgle:'
|
||||
|
@ -1010,11 +1028,11 @@ spam_protection_submit = 'OK - Gem'
|
|||
error_own_ip_banned = 'Du blokerede dit eget IP-nummer!'
|
||||
error_own_user_agent_banned = 'Du blokerede din egen user-agent!'
|
||||
spam_protection_saved = 'Gemt'
|
||||
spam_check_registered = '<!-- TODO -->submissions of registered users'
|
||||
spam_check_registered_desc = 'Kontrolér indlæg fra registrerede brugere'
|
||||
spam_check_registered_enable = '<!-- TODO -->check submissions of registered users for spam'
|
||||
auto_delete_spam = '<!-- TODO -->Delete spam automatically'
|
||||
auto_delete_spam_desc = '<!-- TODO -->Retention period of spam'
|
||||
spam_check_registered = 'indlæg fra registrerede brugere'
|
||||
spam_check_registered_desc = 'Kontrollér indlæg fra registrerede brugere'
|
||||
spam_check_registered_enable = 'Kontrollér indlæg fra registrerede brugere for spam'
|
||||
auto_delete_spam = 'Slet spam automatisk'
|
||||
auto_delete_spam_desc = 'Opbevaringsperiode for spam'
|
||||
auto_delete_spam_timespan = 'Slet spam automatisk efter hvor mange timer (0=slet ikke)?'
|
||||
|
||||
# Reset / Uninstall:
|
||||
|
@ -1034,7 +1052,7 @@ update_instructions = 'Det er anbefalet at deaktivere forumet mens man opd
|
|||
update_instructions = 'Download den seneste version fra <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'Pak script pakken ud.'
|
||||
update_instructions = 'Kig efter opdaterings filen i undermappen "update" og upload denne fil i mappen "update" på din server.'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'Find filen "VERSION" i undermappen "config" og upload den til mappen "config" på din server'
|
||||
update_instructions = 'Opdater denne side og opdaterings filen skulle dukke op herunder'
|
||||
update_instructions = 'Klik på filen og følg instrukserne'
|
||||
update_instructions = 'Efter opdateringen får du en liste over filer og mapper som er blevet tilføjet eller erstattet '
|
||||
|
@ -1047,6 +1065,7 @@ update_submit = 'OK - Kør opdatering'
|
|||
update_successful = 'Databasen blev opdateret uden fejl.'
|
||||
update_items_note = 'Upload nu venligst de følgende filer/mapper fra den nye forum pakke (version [version]) på din server:'
|
||||
update_download = 'Hvis du endnu ikke har disse filer kan du downloade dem [[her]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar til "[original_subject]"'
|
||||
|
@ -1182,20 +1201,19 @@ Emne: [subject]
|
|||
|
||||
---
|
||||
Denne e-mail er sendt via forumet på [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
email_notify_inactive_user_subject = 'Underretning om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hej [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
vi har bemærket, at dit sidste login til forummet på [forum_address] er mere end [inactive_time_span] år siden.
|
||||
GDPR tillader ikke ubegrænset lagring af brugerdata. I henhold til GDPR sletter vi derfor inaktive brugerkonti med jævne mellemrum.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
For at forhindre kontoen i at blive slettet af os, skal du blot logge ind på forummet inden for de næste [days_until_delete] dage.
|
||||
Ellers sletter vi din konto. Dine opslag vil blive bevaret, men vil blive tildelt en anonym bruger med et tilfældigt brugernavn.
|
||||
|
||||
Kind regards
|
||||
Med venlig hilsen
|
||||
|
||||
---
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk genereret informationsmeddelelse. Svar venligst ikke på denne email."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1244,5 +1262,6 @@ error_db_inexistent = 'Specificeret database eksisterer ikke - tjek v
|
|||
error_sql_file_doesnt_exist = 'Installations SQL fil (install.sql) eksisterer ikke '
|
||||
error_overwrite_config_file = 'Ingen rettighed til at overskrive filen <strong>config/db_settings.php</strong> (sæt CHMOD 666, nuværende er [CHMOD])'
|
||||
error_sql = 'SQL fejl'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installer forum'
|
||||
error_conf_pw = 'Admin kodeordene passede ikke sammen'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
################################################################################
|
||||
# English language file for my little forum 2.4 #
|
||||
# English language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
|
@ -12,10 +12,14 @@
|
|||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = en
|
||||
language_code = 'en'
|
||||
language_name_system = 'english'
|
||||
language_name_own = 'english'
|
||||
charset = utf-8
|
||||
locale = en_US.utf8
|
||||
locale = en_US
|
||||
|
@ -23,8 +27,8 @@ locale = en
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'Forum time: [time]'
|
||||
forum_time_with_time_zone = 'Forum time: [time] ([time_zone])'
|
||||
unknown_user = 'unknown'
|
||||
|
@ -49,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'next page'
|
||||
previous_page_link_title = 'previous page'
|
||||
posted_by = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'by <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'by [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'by [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'click to go to the original posting by [name]'
|
||||
error_headline = 'Error!'
|
||||
no_authorisation = 'No authorisation!'
|
||||
|
@ -198,6 +202,7 @@ open_whole_thread = 'Open whole thread'
|
|||
change_category_link = 'Show postings in category "[category]"'
|
||||
mark_linktitle = 'Mark posting'
|
||||
unmark_linktitle = 'Unmark posting'
|
||||
unclassified_linktitle = 'Posting is unclassified'
|
||||
delete_marked_link = 'Delete marked postings'
|
||||
manage_postings_link = 'Manage postings'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
|
@ -212,6 +217,8 @@ more_smilies_label = 'more...'
|
|||
more_smilies_title = 'more smilies'
|
||||
close = 'close'
|
||||
no_postings_user = 'No postings.'
|
||||
search_term = 'Search term'
|
||||
search_category = 'Search in category'
|
||||
search_submit_button = 'Search'
|
||||
search_fulltext = 'full text'
|
||||
search_tags = 'tags'
|
||||
|
@ -307,7 +314,7 @@ error_bookmark_word_too_long = 'The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = 'Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'edited by [name], [time]'
|
||||
edited_by = 'edited by [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 view'
|
||||
several_views = '[views] views'
|
||||
|
@ -364,6 +371,8 @@ subject_marking = 'Subject:'
|
|||
message_marking = 'Message:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, separated by comma)'
|
||||
bbcode_help_heading = 'Formatting help'
|
||||
bbcode_help_skip_link = 'skip to input'
|
||||
bbcode_bold_label = 'bold'
|
||||
bbcode_bold_title = 'format text bold'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -396,9 +405,9 @@ bbcode_image_instr_right = 'right: [img=right]http://example.com/image.jp
|
|||
bbcode_image_label_thumb = 'thumbnail'
|
||||
bbcode_image_instr_thumb = 'thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'thumbnail left'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'thumbnail right'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'upload'
|
||||
bbcode_upload_title = 'upload image'
|
||||
bbcode_upload_instruction = 'upload image ...'
|
||||
|
@ -412,7 +421,7 @@ bbcode_code_instruction_inline = '[inlinecode]code[/inlinecode]'
|
|||
bbcode_code_label_general = 'code block'
|
||||
bbcode_code_instruction_general = '[code]code[/code]'
|
||||
bbcode_code_label_specific = 'code block [language]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]code[/code]'
|
||||
bbcode_code_instruction_spec = '[code=[language]]code[/code]'
|
||||
insert_smiley_title = 'insert smiley'
|
||||
email_notific_reply_thread = 'E-mail notification on replies in this thread'
|
||||
email_notific_reply_post = 'E-mail notification on reply of this posting'
|
||||
|
@ -549,12 +558,13 @@ code_invalid = 'Code invalid.'
|
|||
|
||||
[pw_forgotten]
|
||||
new_pw_ok = 'A new password has been generated and sent.'
|
||||
new_pw_failed = 'The confirmation link is invalid. A new password could't be generated.'
|
||||
new_pw_failed = 'The confirmation link is invalid. A new password couldn\'t be generated.'
|
||||
pw_forgotten_exp = 'The passwords are encrypted with a one-way algorithm so you cannot retrieve your password. You can only get a new password. To avoid any misuse you will receive an e-mail and will be asked to follow a link to confirm your request. Upon receipt of your confirmation a new password will be generated and sent to you.'
|
||||
pwf_username = 'Username:'
|
||||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'User list'
|
||||
user_name = 'Username'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -620,7 +630,7 @@ edit_pw = 'change password'
|
|||
edit_user_contacting = 'Contacting:'
|
||||
edit_user_contacting_disabled = 'Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = 'Restricted to registered users'
|
||||
edit_user_contacting_public = 'Unrestricted'
|
||||
edit_user_contacting_public = 'Unrestricted'
|
||||
edit_user_real_name = 'Name:'
|
||||
edit_user_gender = 'Gender:'
|
||||
gender_not_specified = 'not specified'
|
||||
|
@ -674,7 +684,7 @@ error_new_pw_needs_uppercase_letter = 'The password must contain at least [upper
|
|||
error_new_pw_needs_special_character ='The password must contain at least [special_characters] special character(s)'
|
||||
|
||||
[edit_email]
|
||||
edit_email_exp = 'When changing the e-mail address you will be logged out and the account has to be activated again. An activation key will be sent to the new e-mail address. Be sure the e-mail adress is correct! The account has to be activated within one day.'
|
||||
edit_email_exp = 'When changing the e-mail address you will be logged out and the account has to be activated again. An activation key will be sent to the new e-mail address. Be sure the e-mail address is correct! The account has to be activated within one day.'
|
||||
edit_email_new = 'New e-mail:'
|
||||
edit_email_new_confirm = 'Confirm new e-mail:'
|
||||
edit_email_pw = 'Password:'
|
||||
|
@ -693,6 +703,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Password:'
|
||||
register_honeypot_field = 'Leave this field empty:'
|
||||
register_only_by_admin = 'Users can only be registered by the admin of the forum.'
|
||||
register_link_to_login = 'Go to login'
|
||||
registered = 'The account has been registered and the activation key has been sent to <strong>[var]</strong>. The account has to be activated within one day.'
|
||||
registered_send_error = 'The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'The activation of the account failed.'
|
||||
|
@ -741,11 +752,11 @@ spam_protection_link = 'Spam protection'
|
|||
update_link = 'Update'
|
||||
reset_uninstall_link = 'Reset or uninstall forum'
|
||||
upload_administr_link = 'manage uploads'
|
||||
releases_info_header = 'Actual available release'
|
||||
releases_info_header = 'Currently available release'
|
||||
releases_list_link = 'Check the releases list for the actual available version.'
|
||||
warning_header = 'Warning'
|
||||
warning_install_script_exists = 'For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = 'Actual installed version'
|
||||
actual_installed_version_header = 'Currently installed version'
|
||||
actual_installed_version = 'The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -914,6 +925,7 @@ delete_page_submit = 'OK - Delete page'
|
|||
error_no_page_title = 'No title'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'User list'
|
||||
user_name_empty = 'No user name entered'
|
||||
num_registerd_users = '[number] registered users'
|
||||
user_id = 'ID'
|
||||
|
@ -946,13 +958,13 @@ delete_user_confirmation = 'Are you sure you want to delete this user?'
|
|||
delete_users_confirmation = 'Are you sure you want to delete the following users?'
|
||||
delete_entries_of_user_confirm = 'Are you sure you want to delete all postings of <strong>[user]</strong>? Replies by other users will also be deleted!'
|
||||
delete_submit = 'OK - Delete'
|
||||
register_exp = 'You can leave blank the fields for the password if a random password should be generated. In this case the userdata has to be sent to the specified e-mail adress.'
|
||||
register_exp = 'You can leave blank the fields for the password if a random password should be generated. In this case the userdata has to be sent to the specified e-mail address.'
|
||||
register_username = 'User name:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Password:'
|
||||
register_pw_conf = 'Confirm password:'
|
||||
register_send_userdata = 'Send userdata to the above specified e-mail address'
|
||||
error_send_userdata = 'If you leave blank the password, the userdata has to be sent to the specified e-mail adress'
|
||||
error_send_userdata = 'If you leave blank the password, the userdata has to be sent to the specified e-mail address'
|
||||
admin_reg_error_email_wrong = 'The e-mail address is incorrect'
|
||||
new_user_registered = 'The user "[name]" has been registered.'
|
||||
new_user_reg_send_error = 'The user "[name]" has been registered but the userdata could not be sent.'
|
||||
|
@ -963,9 +975,18 @@ no_users_in_selection = 'No users in selection'
|
|||
# upload management
|
||||
upload_administration = 'Upload management'
|
||||
mark_upload_for_removal = 'mark for removal'
|
||||
mark_upload_for_managing = 'mark for managing'
|
||||
no_uploads_found = 'Found no uploaded files.'
|
||||
delete_upload_confirmation = 'Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = 'Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = 'record uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = 'record to database'
|
||||
upload_database_entry_alt = 'There is a database entry for this image'
|
||||
upload_database_no_entry_alt = 'There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='not managed images'
|
||||
upload_filter_managed_images = 'managed images'
|
||||
upload_filter_all_images = 'all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -988,9 +1009,6 @@ b8_spam_probability_threshold = 'Threshold to classify spam. Valid range is fr
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection to ckeck e-mail addresses on registrations'
|
||||
stop_forum_spam_enable = 'enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> spam protection.'
|
||||
bad_behavior_enable = 'enable Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam protection service. To use it you need a <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (won\'t work without or with invalid API Key!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
|
@ -998,7 +1016,7 @@ akismet_save_spam = 'Save spam (flagged as spam and not displayed)
|
|||
akismet_entry = 'check posting form'
|
||||
akismet_mail = 'check e-mail form'
|
||||
banned_ips = 'Banned IPs'
|
||||
banned_ips_desc = 'IP adresses which should not have access. IP ranges (e.g. 10.10.1.*) and CIDR notation (e.g. 10.10.1.32/27) possible. One IP per line.'
|
||||
banned_ips_desc = 'IP addresses which should not have access. IP ranges (e.g. 10.10.1.*) and CIDR notation (e.g. 10.10.1.32/27) possible. One IP per line.'
|
||||
banned_user_agents = 'Banned user agents'
|
||||
banned_user_agents_desc = 'Strings in user agents, which should not have access. One string per line.'
|
||||
not_accepted_words = 'Not accepted words'
|
||||
|
@ -1044,6 +1062,7 @@ update_submit = 'OK - Run update'
|
|||
update_successful = 'The database has been updated successfully.'
|
||||
update_items_note = 'Please upload now the following files/folders of the new forum package (version [version]) to your server:'
|
||||
update_download = 'If you do not have these files yet you can download them [[here]].'
|
||||
update_reenabling_notice = 'Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Reply on "[original_subject]"'
|
||||
|
@ -1088,6 +1107,7 @@ URL of the posting: [posting_address]
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum registration'
|
||||
admin_reg_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Here is the access data to log in:
|
||||
|
@ -1104,6 +1124,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
admin_activate_user_email_subj = 'Forum registration'
|
||||
admin_activate_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Link to log in directly:
|
||||
|
@ -1113,6 +1134,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
new_user_email_sj = 'Forum registration'
|
||||
new_user_email_txt = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
To activate your account please follow this link:
|
||||
|
@ -1121,6 +1143,7 @@ To activate your account please follow this link:
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'New user subscription'
|
||||
new_user_notif_txt = """Hi [recipient],
|
||||
|
||||
a new user has subscribed to the forum.
|
||||
User name: [name]
|
||||
E-mail: [email]
|
||||
|
@ -1129,6 +1152,7 @@ E-mail: [email]
|
|||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """Hi [recipient],
|
||||
|
||||
a new user has subscribed to the forum.
|
||||
User name: [name]
|
||||
E-mail: [email]
|
||||
|
@ -1138,12 +1162,14 @@ IMPORTANT: This user has to be unlocked in order that he can log in!
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'Account activation after changing e-mail address'
|
||||
edit_address_email_txt = """Hi [name],
|
||||
|
||||
the e-mail address has been changed. You now have to activate your account again using the following link:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Request for a new password'
|
||||
pwf_activating_email_txt = """Hi [name],
|
||||
|
||||
this e-mail has been sent by the forum on [forum_address] because a new password has been requested. Please click the link below to confirm your request. By following the link a new password will be generated and sent to you. If this e-mail has been sent in error (either by you or someone else) please ignore this e-mail.
|
||||
|
||||
Link to confirm your request:
|
||||
|
@ -1152,6 +1178,7 @@ Link to confirm your request:
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'New user data for the forum'
|
||||
new_pw_email_txt = """Hi [name],
|
||||
|
||||
here is your new user data:
|
||||
|
||||
User name: [name]
|
||||
|
@ -1240,5 +1267,6 @@ error_db_inexistent = 'Specified database does not exist - please ch
|
|||
error_sql_file_doesnt_exist = 'Installation SQL file (install.sql) does not exist'
|
||||
error_overwrite_config_file = 'No permission to overwrite the file <strong>config/db_settings.php</strong> (set CHMOD 666, current is [CHMOD])'
|
||||
error_sql = 'SQL error'
|
||||
error_update_settings = 'Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Install forum'
|
||||
error_conf_pw = 'The admin passwords did not match'
|
||||
|
|
488
lang/french.lang
178
lang/german.lang
|
@ -1,11 +1,28 @@
|
|||
################################################################################
|
||||
# German language file for my little forum 2.4 #
|
||||
# German language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Alex < alex at mylittleforum dot net > 2011-09-01 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = de
|
||||
language_code = 'de'
|
||||
language_name_system = 'german'
|
||||
language_name_own = 'deutsch'
|
||||
charset = utf-8
|
||||
locale = de_DE.utf8
|
||||
locale = de_DE
|
||||
|
@ -14,13 +31,13 @@ locale = de
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d.m.Y, H:i
|
||||
time_format_full = l, d.m.Y, H:i
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE, dd. MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forumszeit: [time]'
|
||||
forum_time_with_time_zone = 'Forumszeit: [time] ([time_zone])'
|
||||
unknown_user = 'unbekannt'
|
||||
db_error = 'Datenbankfehler!'
|
||||
mail_error = 'Mailserver nicht erreichbar - bitte später nochmal versuchen!'
|
||||
mail_error = 'Mailserver nicht erreichbar – bitte später nochmal versuchen!'
|
||||
|
||||
[general]
|
||||
subject = 'Betreff'
|
||||
|
@ -40,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'nächste Seite'
|
||||
previous_page_link_title = 'vorige Seite'
|
||||
posted_by = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = '<strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = '[name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = '[name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicken, um zum Originalposting von [name] zu gelangen'
|
||||
error_headline = 'Fehler!'
|
||||
no_authorisation = 'Keine Berechtigung!'
|
||||
|
@ -174,9 +191,9 @@ error_name_too_long = 'der Name ist zu lang'
|
|||
error_email_too_long = 'die E-Mail-Adresse ist zu lang'
|
||||
error_hp_too_long = 'die Homepage ist zu lang'
|
||||
error_location_too_long = 'der Ort ist zu lang'
|
||||
error_profile_too_long = 'das Profil ist zu lang ([profile_length] Zeichen - nur [profile_maxlength] Zeichen erlaubt)'
|
||||
error_signature_too_long = 'die Signatur ist zu lang ([signature_length] Zeichen - nur [signature_maxlength] Zeichen erlaubt)'
|
||||
error_invalid_date_format = 'ungültiges Datums-Format des Geburtstages (JJJJ-MM-TT)'
|
||||
error_profile_too_long = 'das Profil ist zu lang ([profile_length] Zeichen – nur [profile_maxlength] Zeichen erlaubt)'
|
||||
error_signature_too_long = 'die Signatur ist zu lang ([signature_length] Zeichen – nur [signature_maxlength] Zeichen erlaubt)'
|
||||
error_invalid_date_format = 'ungültiges Datumsformat des Geburtstages (JJJJ-MM-TT)'
|
||||
error_invalid_date = 'ungültiges Geburtsdatum'
|
||||
error_email_wrong = 'E-Mail-Adresse ungültig'
|
||||
error_hp_wrong = 'Homepage ungültig'
|
||||
|
@ -189,6 +206,7 @@ open_whole_thread = 'gesamten Thread öffnen'
|
|||
change_category_link = 'Einträge in der Kategorie "[category]" anzeigen'
|
||||
mark_linktitle = 'Eintrag markieren'
|
||||
unmark_linktitle = 'Markierung entfernen'
|
||||
unclassified_linktitle = 'Eintrag ist nicht klassifiziert'
|
||||
delete_marked_link = 'markierte Einträge löschen'
|
||||
manage_postings_link = 'Einträge verwalten'
|
||||
non_activated_users_link = '[counter] freizuschaltende(r) Benutzer'
|
||||
|
@ -203,6 +221,8 @@ more_smilies_label = 'mehr…'
|
|||
more_smilies_title = 'mehr Smilies'
|
||||
close = 'schließen'
|
||||
no_postings_user = 'keine Einträge'
|
||||
search_term = 'Suchbegriff'
|
||||
search_category = 'in Kategorie suchen'
|
||||
search_submit_button = 'Suche'
|
||||
search_fulltext = 'Volltext'
|
||||
search_tags = 'Tags'
|
||||
|
@ -239,9 +259,9 @@ no_users = 'keine Benutzer gefunden'
|
|||
no_text_title = 'leerer Eintrag / kein Text'
|
||||
no_text_alt = '[ kein Text ]'
|
||||
no_text = '- kein Text -'
|
||||
error_invalid_form = 'ungültiges Formular versendet - bitte nochmal versuchen'
|
||||
error_form_sent_too_fast = 'Formular zu schnell abgesendet - bitte ein paar Sekunden warten und erneut absenden (Maßnahme zur Vermeidung automatisierter Einträge)'
|
||||
error_form_sent_too_slow = 'Formular nicht mehr gültig - bitte Text kopieren und die Seite neu laden'
|
||||
error_invalid_form = 'ungültiges Formular versendet – bitte nochmal versuchen'
|
||||
error_form_sent_too_fast = 'Formular zu schnell abgesendet – bitte ein paar Sekunden warten und erneut absenden (Maßnahme zur Vermeidung automatisierter Einträge)'
|
||||
error_form_sent_too_slow = 'Formular nicht mehr gültig – bitte Text kopieren und die Seite neu laden'
|
||||
terms_of_use_agreement = 'Ich bin mit den [[Nutzungsbedingungen]] einverstanden'
|
||||
data_privacy_agreement = 'Ich akzeptiere die [[Datenschutzerklärung]]'
|
||||
error_not_accepted_word = 'nicht akzeptiertes Wort: [not_accepted_word]'
|
||||
|
@ -254,7 +274,7 @@ cookie_deleted = 'Das Cookie wurde gelöscht.'
|
|||
ajax_preview_title = 'Vorschau'
|
||||
bbcode_link_text = 'Linktext (optional):'
|
||||
bbcode_link_url = 'Adresse (URL):'
|
||||
bbcode_image_url = 'Bild-Adresse (URL):'
|
||||
bbcode_image_url = 'Bildadresse (URL):'
|
||||
bbcode_tex_code = 'TeX-Formel (z.B. \sqrt{x}):'
|
||||
quote_label = 'zitieren'
|
||||
quote_title = 'zitierten Text des Postings einfügen, auf das geantwortet wird'
|
||||
|
@ -279,7 +299,7 @@ show_password_title = 'Passwort im Klartext anzeigen'
|
|||
hide_password_title = 'Passwort verstecken'
|
||||
|
||||
[bookmark]
|
||||
delete_bookmark_submit = 'OK - Lesezeichen löschen'
|
||||
delete_bookmark_submit = 'OK – Lesezeichen löschen'
|
||||
delete_bookmark_confirm = 'Soll dieses Lesezeichen wirklich gelöscht werden?'
|
||||
no_bookmarks = 'keine Lesezeichen gefunden'
|
||||
edit_bookmark = 'Lesezeichen:'
|
||||
|
@ -298,7 +318,7 @@ error_bookmark_word_too_long = 'das Wort "[word]" ist zu lang'
|
|||
error_bookmark_tags_limit_reached = 'Maximale Anzahl an Tags pro Lesezeichen überschritten'
|
||||
|
||||
[entry]
|
||||
edited_by = 'bearbeitet von [name], [time]'
|
||||
edited_by = 'bearbeitet von [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = 'ein View'
|
||||
several_views = '[views] Views'
|
||||
|
@ -355,6 +375,8 @@ subject_marking = 'Betreff:'
|
|||
message_marking = 'Nachricht:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(optional, durch Komma getrennt)'
|
||||
bbcode_help_heading = 'Formatierungshilfe'
|
||||
bbcode_help_skip_link = 'zur Eingabe springen'
|
||||
bbcode_bold_label = 'fett'
|
||||
bbcode_bold_title = 'Text fett formatieren'
|
||||
bbcode_bold_instruction = '[b]fetter Text[/b]'
|
||||
|
@ -387,9 +409,9 @@ bbcode_image_instr_right = 'rechts: [img=right]http://example.com/image.j
|
|||
bbcode_image_label_thumb = 'Thumbnail'
|
||||
bbcode_image_instr_thumb = 'Thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'Thumbnail links'
|
||||
bbcode_image_instr_thumb_left = 'Thumbnail links: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'Thumbnail links: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'Thumbnail rechts'
|
||||
bbcode_image_instr_thumb_right = 'Thumbnail rechts: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'Thumbnail rechts: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'Upload'
|
||||
bbcode_upload_title = 'Bild hoch laden'
|
||||
bbcode_upload_instruction = 'Bild hoch laden …'
|
||||
|
@ -412,7 +434,7 @@ sticky_none = 'Pinne den Thread nicht oben an'
|
|||
sticky_single_cat = 'Pinne den Thread in der ausgewählten Kategorie an'
|
||||
sticky_all_cats = 'Pinne den Thread in allen Kategorien an'
|
||||
sticky_thread = 'Pinne den Thread oben an'
|
||||
message_submit_button = 'OK - Eintragen'
|
||||
message_submit_button = 'OK – Eintragen'
|
||||
message_submit_title = 'Eintrag speichern'
|
||||
message_preview_button = 'Vorschau'
|
||||
message_preview_title = 'Vorschau bevor Eintrag gespeichert wird'
|
||||
|
@ -420,14 +442,14 @@ reply_to_posting_marking = 'Antwort auf den Eintrag von <strong>[name]</s
|
|||
minutes_left_to_edit = 'noch [minutes] Minuten, um diesen Eintrag zu bearbeiten'
|
||||
minutes_left_to_edit_reply = 'noch [minutes] Minuten, um diesen Eintrag zu bearbeiten, falls er nicht zwischenzeitlich beantwortet wurde'
|
||||
preview_headline = 'Vorschau:'
|
||||
error_repeated_posting = 'wiederholter Eintrag innerhalb von [minutes] Minuten - bitte einen Moment warten!'
|
||||
error_repeated_posting = 'wiederholter Eintrag innerhalb von [minutes] Minuten – bitte einen Moment warten!'
|
||||
error_name_like_subject = 'Name und Betreff sind identisch'
|
||||
error_name_reserved = 'der Name wird bereits von einem registrierten Benutzer verwendet'
|
||||
error_username_too_long = 'der Name ist zu lang'
|
||||
error_name_too_long = 'der Name ist zu lang'
|
||||
error_no_email_to_notify = 'keine E-Mail für die Benachrichtigung eingegeben'
|
||||
error_text_too_long = 'der Eintrag ist zu lang ([text_length] Zeichen - nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_subject_too_long = 'der Betreff ist zu lang'
|
||||
error_text_too_long = 'der Eintrag ist zu lang ([text_length] Zeichen – nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_tags_too_long = 'Tags zu lang'
|
||||
error_posting_unavailable = 'der Eintrag existiert nicht'
|
||||
|
||||
|
@ -437,7 +459,7 @@ delete_marked_hl = 'markierte Einträge löschen'
|
|||
delete_marked_confirm = 'Sicher, dass alle markierten Einträge und deren Antworten gelöscht werden sollen?'
|
||||
delete_spam_hl = 'Spam löschen'
|
||||
delete_spam_confirm = 'Sicher, dass alle als Spam gekennzeichneten Einträge gelöscht werden sollen?'
|
||||
delete_posting_submit = 'OK - Löschen'
|
||||
delete_posting_submit = 'OK – Löschen'
|
||||
report_spam_hl = 'Als Spam klassifizieren'
|
||||
report_spam_warning = 'Bitte den Eintrag nur als Spam melden, wenn es auch wirklich Spam ist! Die integrierten Spam-Filter berechnen die Wahrscheinlichkeit, dass ein Eintrag Spam ist, anhand von Trainingsdaten. Falsch klassifizierte Daten machen diese Bayes-basierten Filter unbrauchbar.'
|
||||
posting_already_spam = 'Dieser Eintrag ist bereits als Spam gekennzeichnet.'
|
||||
|
@ -461,17 +483,17 @@ unsubscribe_error_hl = 'Die Benachrichtigung konnte nicht ausgeschalt
|
|||
unsubscribe_error_message = 'Während der Verarbeitung der Anfrage zum abschalten der Benachrichtigung trat ein Fehler auf. Bitte informiere den Forenbetreiber per E-Mail über den Fehler. Bitte füge der E-Mail folgende Informationen hinzu: die ID des betreffenden Eintrags (lies sie aus dem Link in der E-Mail aus (URL-Parameter "unsubscribe")) und den Zeitpunkt, an dem diese Aktion scheiterte (füge, wenn möglich, den Namen deiner Zeitzone hinzu).'
|
||||
|
||||
[captcha]
|
||||
captcha_marking = 'Spamschutz-Maßnahme:'
|
||||
captcha_marking = 'Spamschutzmaßnahme:'
|
||||
captcha_expl_math = 'Bitte die beiden Zahlen addieren:'
|
||||
captcha_expl_image = 'Bitte die Buchstaben/Zahlen des Bildes eingeben:'
|
||||
captcha_image_alt = 'Wenn Sie das Bild nicht sehen können, müssen Sie sich zuerst registrieren/einloggen, um den Eintrag speichern zu können'
|
||||
captcha_image_alt_reg = 'Bitte den Foren-Administrator kontaktieren, wenn Sie das Bild nicht sehen können'
|
||||
captcha_check_failed = 'Spamschutz-Maßnahme nicht bestanden - bitte nochmal versuchen!'
|
||||
captcha_check_failed = 'Spamschutzmaßnahme nicht bestanden – bitte nochmal versuchen!'
|
||||
|
||||
[upload_image]
|
||||
image_upload_not_enabled = 'Der Bilder-Upload ist deaktiviert.'
|
||||
upload_image_hl = 'Bild hochladen'
|
||||
upload_image_button = 'OK - Hochladen'
|
||||
upload_image_button = 'OK – Hochladen'
|
||||
upload_error = 'Fehler beim Hochladen'
|
||||
upload_error_2 = 'kein Bild ausgewählt oder Bild größer als die vom Server verarbeitbare Dateigröße ([server_max_filesize])'
|
||||
invalid_file_format = 'ungültiges Bildformat'
|
||||
|
@ -485,14 +507,14 @@ browse_uploaded_images = 'hochgeladene Bilder durchsuchen …'
|
|||
back = '« zurück'
|
||||
no_images = 'keine Bilder vorhanden'
|
||||
delete_image_confirm = 'Dieses Bild löschen?'
|
||||
delete_image_button = 'OK - löschen'
|
||||
delete_image_button = 'OK – löschen'
|
||||
|
||||
[avatar]
|
||||
avatar_hl = 'Avatar'
|
||||
delete_avatar = 'Avatar löschen'
|
||||
upload_avatar_hl = 'Avatar hochladen'
|
||||
upload_avatar_notes = 'maximale Größe: [width]*[height] px, [filesize] KB'
|
||||
upload_image_button = 'OK - Hochladen'
|
||||
upload_image_button = 'OK – Hochladen'
|
||||
upload_error = 'Fehler beim hochladen!'
|
||||
upload_error_2 = 'kein Bild ausgewählt oder Bild größer als die vom Server verarbeitbare Dateigröße ([server_max_filesize])'
|
||||
invalid_file_format = 'ungültiges Dateiformat'
|
||||
|
@ -506,7 +528,7 @@ avatars_disabled = 'Avatare deaktiviert'
|
|||
move_posting_hl = 'Eintrag verschieben'
|
||||
move_posting_new_thread = 'Eigenständigen Thread aus diesem Eintrag und seinen Antworten machen'
|
||||
move_posting = 'Diesen Eintrag und seine Antworten an den Eintrag mit der ID [number] anhängen'
|
||||
move_posting_submit = 'OK - Eintrag verschieben'
|
||||
move_posting_submit = 'OK – Eintrag verschieben'
|
||||
invalid_posting_to_move = 'Ungültige ID'
|
||||
|
||||
[manage_postings]
|
||||
|
@ -540,12 +562,13 @@ code_invalid = 'Ungültiger Code!'
|
|||
|
||||
[pw_forgotten]
|
||||
new_pw_ok = 'Ein neues Passwort wurde erzeugt und versendet.'
|
||||
new_pw_failed = 'Der Bestätigungs-Link ist ungültig, es konnte kein neues Passwort erzeugt werden.'
|
||||
new_pw_failed = 'Der Bestätigungslink ist ungültig, es konnte kein neues Passwort erzeugt werden.'
|
||||
pw_forgotten_exp = 'Da das Passwort in einer Codierung gespeichert ist, die nicht rückgängig gemacht werden kann, muss ein neues Passwort generiert werden. Um Missbrauch zu vermeiden, wird zunächst eine E-Mail an die gespeicherte E-Mail-Adresse versendet. Diese muss durch einen mitgesendeten Link bestätigt werden, worauf dann ein neues Passwort generiert wird.'
|
||||
pwf_username = 'Benutzername:'
|
||||
pwf_email = 'E-Mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Benutzerliste'
|
||||
user_name = 'Benutzername'
|
||||
user_type = 'Typ'
|
||||
admin = 'Admin'
|
||||
|
@ -623,7 +646,7 @@ edit_user_hp = 'Homepage:'
|
|||
edit_user_location = 'Ort:'
|
||||
edit_user_profile = 'Profil:'
|
||||
edit_user_signature = 'Signatur:'
|
||||
edit_user_cat_selection = 'Persönliche Kategorie-Auswahl:'
|
||||
edit_user_cat_selection = 'Persönliche Kategorieauswahl:'
|
||||
edit_user_time_zone = 'Zeitzone:'
|
||||
edit_user_time_difference = 'Zusätzlicher Zeitunterschied in Stunden (z.B. +3 oder -5:30):'
|
||||
edit_user_default_time_zone_svr = 'Standard (Serverzeit)'
|
||||
|
@ -638,11 +661,11 @@ edit_user_where_to_open_links = 'Sollen Links <em>in Forumseinträgen</em> im
|
|||
where_to_open_links_forum_def = 'Benutze die Einstellung des Forums (Vorgabewert oder der vom Forumsadministrator gesetzte Wert)'
|
||||
where_to_open_links_same = 'Öffne alle Links im selben Browserfenster'
|
||||
where_to_open_links_external = 'Öffne Links zu anderen Websites in einem neuen Browserfenster oder -tab (abhängig von den Browsereinstellungen)'
|
||||
where_to_open_links_all = 'Öffne alle Links zu anderen Websites in einem neuen Browserfenster oder -tab (abhängig von den Browsereinstellungen)'
|
||||
where_to_open_links_all = 'Öffne alle Links in einem neuen Browserfenster oder -tab (abhängig von den Browsereinstellungen)'
|
||||
edit_user_notification = 'E-Mail-Benachrichtigung:'
|
||||
admin_mod_notif_posting = 'bei neuen Einträgen'
|
||||
admin_mod_notif_register = 'beim Registrieren neuer Benutzer'
|
||||
userdata_submit_button = 'OK - Speichern'
|
||||
userdata_submit_button = 'OK – Speichern'
|
||||
profile_saved = 'Profil gespeichert'
|
||||
pw_changed = 'Passwort geändert'
|
||||
remove_user_account = 'Account löschen'
|
||||
|
@ -684,6 +707,7 @@ register_user_email = 'E-Mail:'
|
|||
register_pw = 'Passwort:'
|
||||
register_honeypot_field = 'Dieses Feld bitte unausgefüllt lassen:'
|
||||
register_only_by_admin = 'Neue Benutzer können nur vom Administrator registriert werden.'
|
||||
register_link_to_login = 'zum Login'
|
||||
registered = 'Das Benutzerkonto wurde eingerichtet und der Aktivierungslink wurde an <strong>[var]</strong> gesendet. Bitte das Konto innerhalb eines Tages aktivieren.'
|
||||
registered_send_error = 'Das Benutzerkonto wurde eingerichtet aber der Aktivierungslink konnte nicht gesendet werden (Mailserver-Fehler). Bitte den Administrator kontaktieren um das Konto manuell zu aktivieren.'
|
||||
activation_failed = 'Aktivierung fehlgeschlagen!'
|
||||
|
@ -704,14 +728,14 @@ sender_address_caption = 'Absender E-Mail:'
|
|||
sender_confirmation_caption = 'Eine Kopie dieser Nachricht auch an meine E-Mail senden'
|
||||
subject_caption = 'Betreff:'
|
||||
message_caption = 'Nachricht:'
|
||||
message_submit_caption = 'OK - Versenden'
|
||||
message_submit_caption = 'OK – Versenden'
|
||||
email_sent = 'Die Nachricht wurde erfolgreich versendet.'
|
||||
error_message_no_text = 'keine Nachricht eingegeben'
|
||||
error_message_no_email = 'keine Absender-Adresse angegeben'
|
||||
error_message_no_email = 'keine Absenderadresse angegeben'
|
||||
error_message_no_subject = 'kein Betreff angegeben'
|
||||
error_email_invalid = 'die E-Mail-Adresse ist ungültig'
|
||||
error_email_subject_too_long = 'der Betreff ist zu lang'
|
||||
error_email_text_too_long = 'die Nachricht ist zu lang ([text_length] Zeichen - nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_email_text_too_long = 'die Nachricht ist zu lang ([text_length] Zeichen – nur [text_maxlength] Zeichen erlaubt)'
|
||||
error_email_spam_suspicion = 'Spam-Verdacht! Bitte Nachricht verändern (z.B. Links löschen)'
|
||||
|
||||
[admin]
|
||||
|
@ -719,7 +743,7 @@ enabled = 'aktiviert'
|
|||
disabled = 'deaktiviert'
|
||||
folder_alt = 'Ordner'
|
||||
file_alt = 'Datei'
|
||||
admin_confirm_password = 'Administrator-Passwort:'
|
||||
admin_confirm_password = 'Administratorpasswort:'
|
||||
error_password_wrong = 'Passwort falsch'
|
||||
|
||||
# Admin-Menü:
|
||||
|
@ -741,7 +765,7 @@ actual_installed_version = 'Die Versionsnummer Ihrer Installation: <stron
|
|||
|
||||
# Einstellungen:
|
||||
clear_chache = 'Cache löschen um Einstellungen auch auf bereits bestehende Einträge anzuwenden'
|
||||
settings_submit_button = 'OK - Einstellungen speichern'
|
||||
settings_submit_button = 'OK – Einstellungen speichern'
|
||||
settings_saved = 'die Einstellungen wurden gespeichert'
|
||||
advanced_settings_link = 'erweiterte Einstellungen'
|
||||
forum_name = 'Titel/Name'
|
||||
|
@ -751,7 +775,7 @@ forum_description_desc = 'eine kurze Beschreibung des Forums'
|
|||
forum_address = 'Adresse'
|
||||
forum_address_desc = 'URL des Forums in diesem Format: http://www.domain.tld/forum/'
|
||||
forum_email = 'E-Mail'
|
||||
forum_email_desc = 'wird als Kontakt-Adresse und Absender-Adresse für alle vom Forum versendeten E-Mails verwendet'
|
||||
forum_email_desc = 'wird als Kontaktadresse und Absenderadresse für alle vom Forum versendeten E-Mails verwendet'
|
||||
forum_target_name = 'Link-Ziel-Fenster'
|
||||
forum_target_name_desc = 'Die Angabe für <code>target</code> legt fest, wo ein Link aus einem Beitrag geöffnet werden soll. Das ist insbesondere wichtig, falls das Forum in einem <code>frame</code> eines Framesets oder in einem <code>iframe</code> angezeigt wird. Erlaubte Werte sind <code>_self</code> zum öffnen von Links im aktuellen Browserfenster oder -tab, <code>_parent</code> zum öffnen von Links im Eltern-Frame des aktuellen Frames eines Framesets, <code>_top</code> um komplett aus einem Frameset im aktuellen Browserfenster oder -tab auszubrechen oder ein frei gewählter Name eines existierenden <code>frame</code> oder <code>iframe</code>. Bei Angabe eines unbekannten Namens, mit dem Wert <code>_self</code> oder mit leerem Wert werden Links im aktuellen Browserfenster oder -tab geöffnet.'
|
||||
home_link = 'Home-Link'
|
||||
|
@ -762,19 +786,19 @@ default_language = 'Sprache'
|
|||
default_language_desc = 'standardmäßige Sprache des Forums'
|
||||
default_time_zone = 'Zeitzone'
|
||||
default_time_zone_desc = 'standardmäßige Zeitzone'
|
||||
default_time_difference = 'Zeitzonen-Einstellung nicht verfügbar. Alternativ kann der Zeitunterschied zwischen Serverzeit und Zeit des Forums angegeben werden (in Minuten, z.B. 240 or -360):'
|
||||
default_time_difference = 'Zeitzoneneinstellung nicht verfügbar. Alternativ kann der Zeitunterschied zwischen Serverzeit und Zeit des Forums angegeben werden (in Minuten, z.B. 240 or -360):'
|
||||
default_theme = 'Theme'
|
||||
default_theme_desc = 'standardmäßiges Theme (Layoutvorlage) des Forums'
|
||||
threads_per_page = 'Threads pro Seite'
|
||||
threads_per_page_desc = 'Wieviele Threads sollen pro Seite angezeigt werden?'
|
||||
reset_read_state = 'Gelesen-Status zurücksetzen'
|
||||
reset_read_state_desc = 'Auf welche Weise soll der Gelesen-Status zurückgesetzt werden?'
|
||||
reset_read_state = 'Gelesenstatus zurücksetzen'
|
||||
reset_read_state_desc = 'Auf welche Weise soll der Gelesenstatus zurückgesetzt werden?'
|
||||
read_state_no_reset = 'Status dauerhaft speichern'
|
||||
read_state_numbered_reset = 'Status für eine bestimmte Anzahl von Beiträgen speichern'
|
||||
read_state_timeout_reset = 'Status für die Dauer von x Tagen speichern'
|
||||
read_state_locktime_reset = 'Status bis zur automatischen Sperrung der Beiträge speichern'
|
||||
read_state_value = 'Wert für das Zurücksetzen des Gelesen-Status\''
|
||||
read_state_value_desc = 'Auf welche Anzahl von Beiträgen oder von Tagen soll der Gelesen-Status begrenzt werden? Für das entfernen des Status\' bei der automatischen Sperrung des Threads wird der für jene Einstellung vorgesehene Wert verwendet.'
|
||||
read_state_value = 'Wert für das Zurücksetzen des Gelesenstatus\''
|
||||
read_state_value_desc = 'Auf welche Anzahl von Beiträgen oder von Tagen soll der Gelesenstatus begrenzt werden? Für das entfernen des Status\' bei der automatischen Sperrung des Threads wird der für jene Einstellung vorgesehene Wert verwendet.'
|
||||
auto_lock_old_threads = 'Automatisches Sperren alter Threads'
|
||||
auto_lock_old_threads_desc = 'Threads automatisch sperren, deren letzte Antworten älter als wieviele Tage sind? (0=aus)'
|
||||
accession = 'Zugangsberechtigung'
|
||||
|
@ -869,7 +893,7 @@ delete_category_hl = 'Kategorie "[category]" löschen'
|
|||
delete_category_compl = 'Kategorie und Einträge löschen'
|
||||
del_cat_keep_entries = 'Kategorie löschen aber Einträge behalten'
|
||||
del_cat_move_entries = 'Kategorie löschen aber die Einträge behalten und in diese Kategorie verschieben:'
|
||||
delete_category_submit = 'OK - Kategorie löschen'
|
||||
delete_category_submit = 'OK – Kategorie löschen'
|
||||
|
||||
# Smilies:
|
||||
edit_smilies_smiley = 'Smiley:'
|
||||
|
@ -898,13 +922,14 @@ page_access_reg_users = 'nur registrierte Benutzer'
|
|||
page_access_public = 'öffentlich'
|
||||
no_pages = 'keine Seiten vorhanden'
|
||||
add_page_link = 'Seite hinzufügen'
|
||||
edit_page_submit = 'OK - Seite speichern'
|
||||
edit_page_submit = 'OK – Seite speichern'
|
||||
page_doesnt_exist = 'Die Seite ist nicht vorhanden.'
|
||||
delete_page_confirm = 'Soll diese Seite wirklich gelöscht werden?'
|
||||
delete_page_submit = 'OK - Seite löschen'
|
||||
delete_page_submit = 'OK – Seite löschen'
|
||||
error_no_page_title = 'kein Seitentitel'
|
||||
|
||||
# Benutzerverwaltung:
|
||||
user_list_header = 'Benutzerliste'
|
||||
user_name_empty = 'kein Benutzername eingegeben'
|
||||
num_registerd_users = '[number] registrierte Benutzer'
|
||||
user_id = 'ID'
|
||||
|
@ -936,8 +961,8 @@ delete_avatar = 'Avatar löschen'
|
|||
delete_user_confirmation = 'Sicher, dass dieser Benutzer gelöscht werden soll?'
|
||||
delete_users_confirmation = 'Sicher, dass diese Benutzer gelöscht werden sollen?'
|
||||
delete_entries_of_user_confirm = 'Sicher, dass alle Einträge von <strong>[user]</strong> gelöscht werden sollen? Es werden dabei auch die Antworten anderer Benutzer gelöscht!'
|
||||
delete_submit = 'OK - Löschen'
|
||||
register_exp = 'Es muss kein Passwort angegeben werden - es wird dann ein zufälliges Passwort generiert. In diesem Fall muss das Passwort an die angegebene E-Mail-Adresse gesendet werden.'
|
||||
delete_submit = 'OK – Löschen'
|
||||
register_exp = 'Es muss kein Passwort angegeben werden – es wird dann ein zufälliges Passwort generiert. In diesem Fall muss das Passwort an die angegebene E-Mail-Adresse gesendet werden.'
|
||||
register_username = 'Benutzername:'
|
||||
register_email = 'E-Mail:'
|
||||
register_pw = 'Passwort:'
|
||||
|
@ -954,17 +979,27 @@ no_users_in_selection = 'keine Benutzer in der Auswahl'
|
|||
# Uploadverwaltung
|
||||
upload_administration = 'Verwaltung der Uploads'
|
||||
mark_upload_for_removal = 'zum löschen vormerken'
|
||||
mark_upload_for_managing = 'für Verwaltung markieren'
|
||||
no_uploads_found = 'Es wurden keine hochgeladenen Dateien gefunden.'
|
||||
delete_upload_confirmation = 'Sicher, dass dieser Upload gelöscht werden soll?'
|
||||
delete_uploads_confirmation = 'Sicher, dass diese Uploads gelöscht werden sollen?'
|
||||
check_for_unrecorded_uploads = 'erfasse Uploads'
|
||||
check_for_unrecorded_uploads_desc = 'Prüfe, ob Uploads vorhanden sind, die noch nicht in der Liste der Uploads erfasst sind. Falls welche gefunden werden, werden sie in der Liste eingetragen.'
|
||||
upload_add_db_entry_button = 'in der Datenbank aufnehmen'
|
||||
upload_database_entry_alt = 'Für dieses Bild existiert ein Datenbankeintrag'
|
||||
upload_database_no_entry_alt = 'Für dieses Bild existiert kein Datenbankeintrag'
|
||||
upload_filter_not_managed_images ='nicht verwaltete Bilder'
|
||||
upload_filter_managed_images = 'verwaltete Bilder'
|
||||
upload_filter_all_images = 'alle Bilder'
|
||||
|
||||
|
||||
# Spamschutz:
|
||||
captcha = 'CAPTCHA'
|
||||
captcha_desc = 'Welche Formulare sollen mit welchem CAPTCHA-Typ geschützt werden (betrifft nur nicht registrierte Benutzer)?'
|
||||
captcha_graphical_desc = 'Das graphische CAPTCHA benötigt die GD Lib und es sollte mindestens eine TTF-Schrift verwendet werden. Die Schrift-Dateien (*.ttf) müssen in das Verzeichnis modules/captcha/fonts/ kopiert werden. Schriften gibt es z.B. auf www.dafont.com.'
|
||||
captcha_posting = 'Eintrags-Formular:'
|
||||
captcha_graphical_desc = 'Das graphische CAPTCHA benötigt die GD Lib und es sollte mindestens eine TTF-Schrift verwendet werden. Die Schriftdateien (*.ttf) müssen in das Verzeichnis modules/captcha/fonts/ kopiert werden. Schriften gibt es z.B. auf www.dafont.com.'
|
||||
captcha_posting = 'Eintragsformular:'
|
||||
captcha_email = 'E-Mail-Formular:'
|
||||
captcha_register = 'Registrier-Formular:'
|
||||
captcha_register = 'Registrierungsformular:'
|
||||
captcha_disabled = 'aus'
|
||||
captcha_mathematical = 'mathematisch'
|
||||
captcha_graphical = 'graphisch'
|
||||
|
@ -972,21 +1007,18 @@ gr_captcha_not_available = 'graphisches CAPTCHA nicht verfügbar (GD Lib
|
|||
gr_captcha_no_font = 'keine Schrift verfügbar, CAPTCHA kann nicht ideal angezeigt werden'
|
||||
b8 = 'B8'
|
||||
b8_desc = 'Bayes-basierter Spamschutz <a href="https://nasauber.de/opensource/b8/">B8</a> mit Foren-spezifischen Trainingsdaten'
|
||||
b8_entry_check_enable = 'Eintrags-Formular prüfen'
|
||||
b8_entry_check_enable = 'Eintragsformular prüfen'
|
||||
b8_mail_check_enable = 'E-Mail-Formular prüfen'
|
||||
b8_auto_training_enable = 'Automatisch Trainingsdaten erzeugen (Nur nach ausreichendem manuellem Training mit Spam und Ham Einträgen sinnvoll möglich)'
|
||||
b8_spam_probability_threshold = 'Grenzwert zwischen 0 % und 100 % zur Spam Erkennung, hierbei entspricht z.B. 80 % der Sicherheitswahrscheinlichkeit für den Fehler 1. Art (80 % bedeutet, von 100 Einträgen werden statistisch gesehen 20 Einträge als Spam klassifiziert, die kein Spam sind)'
|
||||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = 'Externer Dienst zum Spamschutz <a href="http://www.stopforumspam.com/">Stop Forum Spam</a> zur Überprüfung von E-Mail-Adressen beim Registrieren'
|
||||
stop_forum_spam_enable = 'Stop Forum Spam aktivieren'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = 'Spamschutz <a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>'
|
||||
bad_behavior_enable = 'Bad Behavior aktivieren'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = 'Externer Dienst zum Spamschutz <a href="http://akismet.com/">Akismet</a> - hierfür wird ein <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> benötigt (funktioniert nicht ohne oder mit ungültigem API Key!). '
|
||||
akismet_desc = 'Externer Dienst zum Spamschutz <a href="http://akismet.com/">Akismet</a> – hierfür wird ein <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> benötigt (funktioniert nicht ohne oder mit ungültigem API Key!). '
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
akismet_save_spam = 'Spam speichern (als Spam gekennzeichnet und nicht angezeigt)?'
|
||||
akismet_entry = 'Eintrags-Formular prüfen'
|
||||
akismet_entry = 'Eintragsformular prüfen'
|
||||
akismet_mail = 'E-Mail-Formular prüfen'
|
||||
banned_ips = 'gesperrte IPs'
|
||||
banned_ips_desc = 'IP-Adressen, die keinen Zugang zum Forum haben sollen. IP-Bereiche (z.B. 10.10.1.*) und CIDR-Notation (z.B. 10.10.1.32/27) möglich. Eine IP-Adresse pro Zeile eintragen.'
|
||||
|
@ -994,7 +1026,7 @@ banned_user_agents = 'gesperrte User-Agents'
|
|||
banned_user_agents_desc = 'nicht akzeptierte Zeichenketten in User-Agents. Eine Zeichkette pro Zeile eintragen.'
|
||||
not_accepted_words = 'nicht akzeptierte Wörter'
|
||||
not_accepted_words_desc = 'Wörter/Domains, die nicht akzeptiert werden. Ein Wort pro Zeile eintragen.'
|
||||
spam_protection_submit = 'OK - Speichern'
|
||||
spam_protection_submit = 'OK – Speichern'
|
||||
error_own_ip_banned = 'eigene IP gesperrt!'
|
||||
error_own_user_agent_banned = 'eigenen User-Agent gesperrt!'
|
||||
spam_protection_saved = 'die Angaben wurden gespeichert'
|
||||
|
@ -1009,10 +1041,10 @@ auto_delete_spam_timespan = 'Spam automatisch nach wieviel Stunden lösche
|
|||
reset_forum = 'Forum zurücksetzen'
|
||||
delete_postings = 'alle Einträge löschen'
|
||||
delete_userdata = 'alle Benutzerdaten löschen (außer eigenem Admin-Account)'
|
||||
reset_forum_submit = 'OK - Forum zurücksetzen'
|
||||
reset_forum_submit = 'OK – Forum zurücksetzen'
|
||||
uninstall_forum = 'Forum deinstallieren'
|
||||
uninstall_forum_exp = 'Löscht alle Forums-Datenbanktabellen. Das Forum wird dann nicht mehr funktionieren!'
|
||||
uninstall_forum_submit = 'OK - Forum deinstallieren'
|
||||
uninstall_forum_submit = 'OK – Forum deinstallieren'
|
||||
error_no_selection_made = 'keine Auswahl getroffen'
|
||||
|
||||
# Update:
|
||||
|
@ -1020,7 +1052,7 @@ update_current_version = 'aktuelle Version: <strong>[version]</strong>'
|
|||
update_instructions_hl = 'Update durchführen'
|
||||
update_instructions = 'es wird empfohlen, das Forum während des Updates außer Betrieb zu setzen ("Betriebsstatus" in den <a href="index.php?mode=admin&action=settings">Einstellungen</a>)'
|
||||
update_instructions = 'neue Version von <a href="http://mylittleforum.net/">mylittleforum.net</a> herunterladen'
|
||||
update_instructions = 'Skript-Paket entpacken.'
|
||||
update_instructions = 'Skriptpaket entpacken.'
|
||||
update_instructions = 'Die entsprechende Update-Datei aus dem Unterverzeichnis "update" auf den Server in das Unterverzeichnis "update" hochladen.'
|
||||
update_instructions = 'Die Datei "VERSION" aus dem Unterverzeichnis "config" in das Unterverzeichnis "config" auf den Server hochladen.'
|
||||
update_instructions = 'diese Seite neu laden und die Update-Datei sollte unten erscheinen'
|
||||
|
@ -1031,10 +1063,11 @@ update_available_files = 'verfügbare Update-Datei(en)'
|
|||
update_no_files_available = 'keine Update-Dateien verfügbar'
|
||||
update_file_title = 'Update-Datei ausführen'
|
||||
update_confirm = 'Sicher, dass diese Update-Datei ausgeführt werden soll?'
|
||||
update_submit = 'OK - Update ausführen'
|
||||
update_submit = 'OK – Update ausführen'
|
||||
update_successful = 'Die Datenbank wurde erfolgreich aktualisiert.'
|
||||
update_items_note = 'Bitte jetzt die folgenden Dateien/Verzeichnisse der neuen Version ([version]) hochladen:'
|
||||
update_download = 'Falls nicht verfügbar, können diese Dateien [[hier]] heruntergeladen werden.'
|
||||
update_reenabling_notice = 'Bitte zu beachten, dass das Forum aktuell deaktiviert ist und <a href="index.php?mode=admin&action=settings">in den Einstellungen</a> wieder eingeschaltet werden muss.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Antwort auf "[original_subject]"'
|
||||
|
@ -1205,32 +1238,33 @@ inst_admin_email = 'E-Mail'
|
|||
inst_admin_email_desc = 'E-Mail-Adresse des Foren-Administrators'
|
||||
inst_admin_pw = 'Passwort'
|
||||
inst_admin_pw_desc = 'Passwort um sich als Administrator einzuloggen'
|
||||
inst_admin_pw_conf = 'Passwort-Bestätigung'
|
||||
inst_admin_pw_conf = 'Passwortbestätigung'
|
||||
inst_admin_pw_conf_desc = 'Passwort wiederholen'
|
||||
inst_db_host = 'Datenbank-Host'
|
||||
inst_db_host_desc = 'meistens "localhost"'
|
||||
inst_db_user = 'Datenbank-Benutzername'
|
||||
inst_db_user = 'Datenbankbenutzername'
|
||||
inst_db_user_desc = 'Benutzername für die Datenbank'
|
||||
inst_db_pw = 'Datenbank-Passwort'
|
||||
inst_db_pw = 'Datenbankpasswort'
|
||||
inst_db_pw_desc = 'Zugangspasswort für die Datenbank'
|
||||
inst_db_name = 'Datenbank-Name'
|
||||
inst_db_name = 'Datenbankname'
|
||||
inst_db_name_desc = 'Name der Datenbank'
|
||||
inst_table_prefix = 'Tabellen-Präfix'
|
||||
inst_table_prefix = 'Tabellenpräfix'
|
||||
inst_table_prefix_desc = 'Präfix für die Tabellenbezeichnungen'
|
||||
inst_advanced_options = 'erweiterte Optionen'
|
||||
inst_advanced_options_desc = 'für Experten - normalerweise muss hier nichts geändert werden'
|
||||
inst_advanced_options_desc = 'für Experten – normalerweise muss hier nichts geändert werden'
|
||||
inst_advanced_database = 'Datenbank erstellen'
|
||||
inst_advanced_database_desc = 'nur wenn die angegebene Datenbank nicht vorhanden ist und Rechte zur Erstellung vorhanden sind'
|
||||
inst_advanced_conf_file = 'kein Überschreiben der Konfigurationsdatei'
|
||||
inst_advanced_conf_file_desc = 'nur falls die Konfigurationsdatei bereits manuell bearbeitet wurde'
|
||||
create_database = 'angegebene Datenbank erstellen'
|
||||
dont_overwrite_settings = 'Datenbank-Konfigurationsdatei nicht überschreiben'
|
||||
dont_overwrite_settings = 'Datenbankkonfigurationsdatei nicht überschreiben'
|
||||
create_db_error = 'Die Datenbank konnte nicht erstellt werden'
|
||||
error_create_admin = 'Das Administratoren-Konto konnte nicht erstellt werden'
|
||||
error_db_connection = 'Datenbank-Verbindungsfehler - bitte Host, Benutzer und Passwort überprüfen'
|
||||
error_db_inexistent = 'die angegebene Datenbank ist nicht vorhanden - bitte Datenbank-Name überprüfen'
|
||||
error_create_admin = 'Das Administratorenkonto konnte nicht erstellt werden'
|
||||
error_db_connection = 'Datenbankverbindungsfehler – bitte Host, Benutzer und Passwort überprüfen'
|
||||
error_db_inexistent = 'die angegebene Datenbank ist nicht vorhanden – bitte Datenbankname überprüfen'
|
||||
error_sql_file_doesnt_exist = 'Installations-SQL-Datei (install.sql) nicht gefunden'
|
||||
error_overwrite_config_file = 'die Datei <strong>config/db_settings.php</strong> konnte nicht überschrieben werden (bitte mit CHMOD 666 versuchen, momentane Einstellung ist [CHMOD])'
|
||||
error_sql = 'SQL-Fehler'
|
||||
forum_install_ok = 'OK - Forum installieren'
|
||||
error_update_settings = 'Konnte die Forumseinstellung nicht ändern'
|
||||
forum_install_ok = 'OK – Forum installieren'
|
||||
error_conf_pw = 'Passwort und Wiederholung stimmen nicht überein'
|
||||
|
|
|
@ -1,10 +1,28 @@
|
|||
################################################################################
|
||||
# File per la lingua italiana di my little forum 2.4 #
|
||||
# File per la lingua italiana di my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Antonio Arras 2009-09-03 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = it
|
||||
language_code = 'it'
|
||||
language_name_system = 'italian'
|
||||
language_name_own = 'italiano'
|
||||
charset = utf-8
|
||||
locale = it_IT.utf8
|
||||
locale = it_IT
|
||||
|
@ -13,8 +31,8 @@ locale = ita
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'dd/MM/YYYY, HH.mm'
|
||||
time_format_full = 'EEEE dd MMMM YYYY, H.mm'
|
||||
forum_time = 'Orario: [time]'
|
||||
forum_time_with_time_zone = 'Orario: [time] ([time_zone])'
|
||||
unknown_user = 'sconosciuto'
|
||||
|
@ -39,8 +57,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'prossima pagina'
|
||||
previous_page_link_title = 'pagina precedente'
|
||||
posted_by = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'Inviato da <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'Inviato da [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'Inviato da [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'clicca per andare al posting originale di [name]'
|
||||
error_headline = 'Errore!'
|
||||
no_authorisation = 'Non si dispone dell\'autorizzazione necessaria!'
|
||||
|
@ -188,6 +206,7 @@ open_whole_thread = 'Apri l\'intero argomento'
|
|||
change_category_link = 'Mostra i messaggi nella categoria "[category]"'
|
||||
mark_linktitle = 'Seleziona messaggio'
|
||||
unmark_linktitle = 'Deseleziona messaggio'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Elimina i messaggi selezionati'
|
||||
manage_postings_link = 'Gestisci messaggi'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
|
@ -202,6 +221,8 @@ more_smilies_label = 'altro ...'
|
|||
more_smilies_title = 'altri smilies'
|
||||
close = 'chiudi'
|
||||
no_postings_user = 'Nessun messaggio'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ricerca'
|
||||
search_fulltext = 'tutto il testo'
|
||||
search_tags = 'tags'
|
||||
|
@ -226,7 +247,7 @@ posting_hours_ago = '[hours] ore, [minutes] minuti fa'
|
|||
posting_one_day_ago = '1 giorno, [hours] ore, [minutes] min. fa'
|
||||
posting_several_days_ago = '[days] giorni fa'
|
||||
tag_cloud_hl = 'Recenti tags'
|
||||
sidebar = 'Sidebar'
|
||||
sidebar = 'Barra laterale'
|
||||
toggle_sidebar = 'Mostra / nascondi sidebar'
|
||||
options = 'Opzioni'
|
||||
administrator_title = 'Amministratore'
|
||||
|
@ -297,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'modificato da [name], [time]'
|
||||
edited_by = 'modificato da [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Tags:'
|
||||
one_view = '1 vista'
|
||||
several_views = '[views] viste'
|
||||
|
@ -354,6 +375,8 @@ subject_marking = 'Oggetto:'
|
|||
message_marking = 'Messaggio:'
|
||||
tags_marking = 'Tags:'
|
||||
tags_note = '(opzionali, separati dalla virgola)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'grosseto'
|
||||
bbcode_bold_title = 'Impostare il testo in grosseto'
|
||||
bbcode_bold_instruction = '[b]Esempio[/b]'
|
||||
|
@ -386,12 +409,12 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '<!-- TODO ->upload'
|
||||
bbcode_upload_title = '<!-- TODO ->upload image'
|
||||
bbcode_upload_instruction = '<!-- TODO ->upload image ...'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = '<!-- TODO -->upload'
|
||||
bbcode_upload_title = '<!-- TODO -->upload image'
|
||||
bbcode_upload_instruction = '<!-- TODO -->upload image ...'
|
||||
bbcode_tex_label = 'TeX'
|
||||
bbcode_tex_title = '<!-- TODO ->insert TeX code'
|
||||
bbcode_tex_instruction = '[tex]TeX code[/tex]'
|
||||
|
@ -545,6 +568,7 @@ pwf_username = 'Nome utente:'
|
|||
pwf_email = 'E-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Elenco utenti'
|
||||
user_name = 'Nome utente'
|
||||
user_type = 'Tipo'
|
||||
admin = 'Amministratore'
|
||||
|
@ -610,7 +634,7 @@ edit_pw = 'Cambia password'
|
|||
edit_user_contacting = '<!-- TODO -->Contacting:'
|
||||
edit_user_contacting_disabled = '<!-- TODO -->Restricted to administrators and moderators'
|
||||
edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'Nome:'
|
||||
edit_user_gender = 'Sesso:'
|
||||
gender_not_specified = 'not specified'
|
||||
|
@ -683,6 +707,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Password:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Gli utenti possono essere registrati esclusivamente dall\'amministratore del forum.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'L\'account è stato registrato con successo e la sua chiave d\'attivazione è stata spedita a <strong>[var]</strong>. L\'account deve essere attivato entro un giorno.'
|
||||
registered_send_error = '<!-- TODO -->The account has been registered but the activation key could not been sent (mail server not available). Please contact the forum administrator and ask for manual account activation.'
|
||||
activation_failed = 'L\'attivazione dell\'account è fallita.'
|
||||
|
@ -731,11 +756,11 @@ spam_protection_link = 'Protezione Anti-Spam'
|
|||
update_link = 'Aggiornamento'
|
||||
reset_uninstall_link = 'Reseta o disinstalla forum'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -904,6 +929,7 @@ delete_page_submit = 'OK - ELIMINA PAGINA'
|
|||
error_no_page_title = 'Nessun titolo'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Elenco utenti'
|
||||
user_name_empty = 'Nessun nome utente inserito'
|
||||
num_registerd_users = '[number] utenti registrati'
|
||||
user_id = 'ID'
|
||||
|
@ -930,7 +956,7 @@ email_list = 'Lista e-mail degli utenti registrati'
|
|||
reset_terms_of_use = '<!-- TODO -->reset acceptance of the terms of use'
|
||||
reset_data_privacy_statement = '<!-- TODO -->reset acceptance of the privacy statement'
|
||||
clear_userdata = 'Pulisci la base dati degli utenti'
|
||||
edit_user_avatar = '<!-- TODO -->Avatar:'
|
||||
edit_user_avatar = 'Avatar:'
|
||||
delete_avatar = 'Elimina avatar'
|
||||
delete_user_confirmation = 'Confermi l\'eliminazione di questo utente?'
|
||||
delete_users_confirmation = 'Confermi l\'eliminazione dei seguenti utenti?'
|
||||
|
@ -953,9 +979,18 @@ no_users_in_selection = 'Nessun utente selezionato'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -978,9 +1013,6 @@ b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Vali
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> Protezione anti-spam.'
|
||||
bad_behavior_enable = 'Abilita Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> Servizio protezione anti-spam. Per utilizzarno necessiti di <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (non funziona senza o con una API Key errata!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
|
@ -1034,14 +1066,15 @@ update_submit = 'OK - ESEGUI AGGIORNAMENTO'
|
|||
update_successful = 'La base dati è stata aggiornata con successo.'
|
||||
update_items_note = 'Si prega di aggiornare ora i files/cartelle del nuovo forum (versione [version]) sul tuo server:'
|
||||
update_download = 'Se non possiedi questi files, puoi scaricarti [[qui]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Rispondi a "[original_subject]"'
|
||||
email_text = """Ciao [recipient],
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
questo è un messaggio informativo generato automaticamente. Avete ricevuto questa e-mail perché avete attivato la funzione di notifica. Si prega di non rispondere a questa e-mail, ma di rispondere alla discussione specifica.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
Se non si desidera più essere informati sulle risposte alla propria voce, si prega di utilizzare il seguente link per annullare la notifica.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] ha risposto al tuo messaggio \"[original_subject]\":
|
||||
|
@ -1057,7 +1090,7 @@ Indirizzo del messaggio (URL): [posting_address]
|
|||
[original_text]"""
|
||||
|
||||
email_text_delayed_addition = """---
|
||||
Questa notifica è stata ritardata a causa dall'abilitazione manuale del messaggio. This is an automatically generated email, please do not reply to this email."""
|
||||
Questa notifica è stata ritardata a causa dall'abilitazione manuale del messaggio. Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
admin_email_subject = 'Nuovo argomento nel forum: [subject]'
|
||||
admin_email_text = """Nuovo argomento di [name]
|
||||
|
@ -1067,7 +1100,7 @@ Oggetto: [subject]
|
|||
|
||||
Indirizzo del messaggio (URL): [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
admin_email_text_reply = """Risposta di [name]
|
||||
Oggetto: [subject]
|
||||
|
||||
|
@ -1075,9 +1108,10 @@ Oggetto: [subject]
|
|||
|
||||
Indirizzo del messaggio (URL): [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
admin_reg_user_email_subj = 'Registrazione nel Forum'
|
||||
admin_reg_user_email_text = """Ciao [name],
|
||||
|
||||
benvenuto nel Forum!
|
||||
|
||||
Ecco i dati di accesso per accedervi:
|
||||
|
@ -1090,16 +1124,17 @@ Collegati direttamente al seguente link:
|
|||
|
||||
La password può essere cambiata dopo l'accesso.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
admin_activate_user_email_subj = 'Registrazione nel Forum'
|
||||
admin_activate_user_email_text = """Ciao [name],
|
||||
|
||||
benvenuto nel Forum!
|
||||
|
||||
Link to log in directly:
|
||||
Link per accedere direttamente:
|
||||
[login_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
new_user_email_sj = 'Registrazione al Forum'
|
||||
new_user_email_txt = """Ciao [name],
|
||||
|
@ -1108,16 +1143,17 @@ benvenuto nel Forum!
|
|||
per confermare la tua iscrizione, procedere all'attivazione cliccando sul seguente link:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_user_notif_sj = 'Nuova iscrizione al Forum'
|
||||
new_user_notif_txt = """Ciao [recipient],
|
||||
|
||||
un nuovo utente si è iscritto al Forum.
|
||||
Nome utente: [name]
|
||||
E-mail: [email]
|
||||
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_user_notif_txt_locked = """Ciao [recipient],
|
||||
un nuovo utente si è iscritto al forum.
|
||||
Nome utente: [name]
|
||||
|
@ -1125,22 +1161,23 @@ E-mail: [email]
|
|||
|
||||
IMPORTANTE: Questo utente necessita di essere sbloccato per accedere al forum!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
edit_address_email_sj = 'Attivazione account dopo cambio dell\'indirizzo e-mail'
|
||||
edit_address_email_txt = """Ciao [name],
|
||||
l'indirizzo e-mail è stato sostituito. Necessiti ora di essere riattivato cliccando sul seguente link:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
pwf_activating_email_sj = 'Richiesta di nuova password'
|
||||
pwf_activating_email_txt = """Ciao [name],
|
||||
questa e-mail è stata spedita dal forum ([forum_address]) perché c'è stata una richiesta di nuova password. Si prega di cliccare al seguente link per ottenere una nuova password. Al seguente link sarà generata una nuova passaword che riceverai per e-mail. Se questa e-mail è stata spedita per errore (o per richiesta di quelcun altro) si prega di ignorarla ed eliminarla.
|
||||
|
||||
Link per confermare la richiesta:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
new_pw_email_sj = 'Nuovi dati utente nel forum'
|
||||
new_pw_email_txt = """Hi [name],
|
||||
new_pw_email_txt = """Ciao [name],
|
||||
ecco i nuovi tuoi dati:
|
||||
|
||||
Nome utente: [name]
|
||||
|
@ -1151,7 +1188,7 @@ Clicca qui per accedere direttamente al forum:
|
|||
|
||||
La password può essere cambiata dopo l'accesso.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1168,20 +1205,19 @@ Oggetto: [subject]
|
|||
|
||||
--
|
||||
Questa e-mail è stata spedita dal forum [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
email_notify_inactive_user_subject = 'Notifica di inattività [name]'
|
||||
email_notify_inactive_user_text = """Ciao [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
abbiamo notato che l'ultimo accesso al forum di [forum_address] risale a più di [inactive_time_span] anni fa.
|
||||
Il GDPR non consente l'archiviazione illimitata dei dati degli utenti. In base al GDPR, cancelliamo gli account degli utenti inattivi a intervalli regolari.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
Per evitare che l'account venga cancellato da noi, è sufficiente effettuare il login al forum entro i prossimi [days_until_delete] giorni.
|
||||
In caso contrario, cancelleremo l'account. I tuoi messaggi saranno conservati, ma saranno assegnati a un utente anonimo che ha scelto a caso il tuo nome utente.
|
||||
|
||||
Kind regards
|
||||
Cordiali saluti
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Questo è un messaggio informativo generato automaticamente, si prega di non rispondere a questa e-mail."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installazione'
|
||||
|
@ -1230,5 +1266,6 @@ error_db_inexistent = 'La base dati specificata non esiste - si preg
|
|||
error_sql_file_doesnt_exist = 'Il file d\'installazione SQL (<code>install/install.sql</code>) non esiste'
|
||||
error_overwrite_config_file = 'Nessun permesso di sovrascrittura sul file <code>config/db_settings.php</code> (impostare CHMOD 666, l\'impostazione corrente è [CHMOD])'
|
||||
error_sql = 'Errore SQL'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - INSTALLA FORUM'
|
||||
error_conf_pw = 'Le password di amministrazione non coincidono'
|
||||
|
|
|
@ -1,9 +1,25 @@
|
|||
###################################################
|
||||
# Norwegian language file for my little forum 2.4 #
|
||||
###################################################
|
||||
################################################################################
|
||||
# Norwegian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = no
|
||||
language_code = 'no'
|
||||
language_name_system = 'norwegian'
|
||||
language_name_own = 'norsk'
|
||||
charset = utf-8
|
||||
locale = nb_NO.utf8
|
||||
locale = nb_NO@euro
|
||||
|
@ -12,8 +28,8 @@ locale = nor
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d.m.Y, H.i
|
||||
time_format_full = l j. F Y, \\k\\l. H:i
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'EEEE d. MMMM YYYY, \'kl.\' HH:mm'
|
||||
forum_time = 'Forumtid: [time]'
|
||||
forum_time_with_time_zone = 'Forumtid: [time] ([time_zone])'
|
||||
unknown_user = 'ukjent'
|
||||
|
@ -38,8 +54,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'neste side'
|
||||
previous_page_link_title = 'forrige side'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'klikk for å se den originale meldingen skrevet av [name]'
|
||||
error_headline = 'Feil!'
|
||||
no_authorisation = 'Ingen tillatelse!'
|
||||
|
@ -187,6 +203,7 @@ open_whole_thread = 'Åpne hele tråden'
|
|||
change_category_link = 'Vis innlegg i kategorien "[category]"'
|
||||
mark_linktitle = 'Marker innlegg'
|
||||
unmark_linktitle = 'Fjern markering'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Slett markerte innlegg'
|
||||
manage_postings_link = 'Administrer innlegg'
|
||||
non_activated_users_link = '[counter] ikke aktiverte bruker(e)'
|
||||
|
@ -201,6 +218,8 @@ more_smilies_label = 'mer …'
|
|||
more_smilies_title = 'flere smil'
|
||||
close = 'lukk'
|
||||
no_postings_user = 'Ingen innlegg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Søk'
|
||||
search_fulltext = 'fulltekst'
|
||||
search_tags = 'merkelapper'
|
||||
|
@ -296,7 +315,7 @@ error_bookmark_word_too_long = 'Ordet "[word]" er for langt'
|
|||
error_bookmark_tags_limit_reached = 'Tagg-grensen nådd for favoritt'
|
||||
|
||||
[entry]
|
||||
edited_by = 'redigert av [name], [time]'
|
||||
edited_by = 'redigert av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Merkelapper:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visninger'
|
||||
|
@ -353,6 +372,8 @@ subject_marking = 'Emne:'
|
|||
message_marking = 'Melding:'
|
||||
tags_marking = 'Merkelapper:'
|
||||
tags_note = '(valgfritt, separer merkelappene med komma)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'fet'
|
||||
bbcode_bold_title = 'Fet tekstformatering'
|
||||
bbcode_bold_instruction = '[b]Tekst[/b]'
|
||||
|
@ -385,9 +406,9 @@ bbcode_image_instr_right = 'høyre: [img=right]http://eksempel.com/bilde.
|
|||
bbcode_image_label_thumb = 'miniatyrbilde'
|
||||
bbcode_image_instr_thumb = 'miniatyrbilde: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'miniatyrbilde venstre'
|
||||
bbcode_image_instr_thumb_left = 'miniatyrbilde venstre: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'miniatyrbilde venstre: [img=thumbnail-left]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'miniatyrbilde høyre'
|
||||
bbcode_image_instr_thumb_right = 'miniatyrbilde hæyre: [img=thumbnail]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'miniatyrbilde hæyre: [img=thumbnail-right]http://eksempel.com/bilde.jpg[/img]'
|
||||
bbcode_upload_label = 'last opp'
|
||||
bbcode_upload_title = 'Last opp bilde'
|
||||
bbcode_upload_instruction = 'Last opp bilde …'
|
||||
|
@ -544,6 +565,7 @@ pwf_username = 'Brukernavn:'
|
|||
pwf_email = 'E-post:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'Brukernavn'
|
||||
user_type = 'Type'
|
||||
admin = 'Admin'
|
||||
|
@ -682,6 +704,7 @@ register_user_email = 'E-post:'
|
|||
register_pw = 'Passord:'
|
||||
register_honeypot_field = 'La dette feltet være tomt:'
|
||||
register_only_by_admin = 'Brukere kan bare registreres av forumadministratoren.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontoen ble registrert og aktiveringsnøkkelen er sendt til <strong>[var]</strong>. Kontoen må aktiveres innen én dag.'
|
||||
registered_send_error = 'Kontoen ble registrert, men aktiveringsnøkkelen kunne ikke sendes (e-postserveren var ikke tilgjengelig). Kontakt forumadministratoren for å få kontoen aktivert manuelt.'
|
||||
activation_failed = 'Aktivering av kontoen mislykted.'
|
||||
|
@ -742,6 +765,7 @@ actual_installed_version = 'Versjonsnummeret på din installasjon: <stron
|
|||
# forum settings:
|
||||
clear_chache = 'Tøm cache (bufferfil) for å gjøre endringene gjeldende for eksisterende innlegg'
|
||||
settings_submit_button = 'OK - Lagre innstillinger'
|
||||
settings_saved = '<!-- TODO -->Settings saved'
|
||||
advanced_settings_link = 'Avanserte innstillinger'
|
||||
forum_name = 'Forumnavn'
|
||||
forum_name_desc = 'Vil (blant annet) bli vist i toppmenyen'
|
||||
|
@ -904,6 +928,7 @@ delete_page_submit = 'OK - Slett side'
|
|||
error_no_page_title = 'Ingen tittel'
|
||||
|
||||
# user administration:
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'Du har ikke skrevet inn et brukernavn'
|
||||
num_registerd_users = '[number] registrerte brukere'
|
||||
user_id = 'ID'
|
||||
|
@ -954,9 +979,18 @@ no_users_in_selection = 'Ingen brukere i utvalget'
|
|||
# upload management
|
||||
upload_administration = 'Administrer opplastninger'
|
||||
mark_upload_for_removal = 'marker for fjerning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Fant ingen opplastede filer.'
|
||||
delete_upload_confirmation = 'Er du sikker på at du vil slette denne opplastingen?'
|
||||
delete_uploads_confirmation = 'Er du sikker på at du vil slette følgende opplastinger?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -979,9 +1013,6 @@ b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Vali
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a>-spambeskyttelse'
|
||||
stop_forum_spam_enable = 'aktiver Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>-spambeskyttelse.'
|
||||
bad_behavior_enable = 'aktiver Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a>-spambeskyttelsesservice. For å bruke den trenger du en <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> (vil ikke fungere uten eller med en ugyldig API-nøkkel!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
|
@ -1035,6 +1066,7 @@ update_submit = 'OK - Kjør oppdatering'
|
|||
update_successful = 'Databasen ble oppdatert.'
|
||||
update_items_note = 'Last opp følgende filer fra den nye forumpakken (version [version]) til serveren din:'
|
||||
update_download = 'Dersom du ikke har disse filene kan de lastes ned [[her]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar på "[original_subject]"'
|
||||
|
@ -1068,7 +1100,7 @@ Emne: [subject]
|
|||
|
||||
Lenke til innlegget: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
admin_email_text_reply = """Svar fra [name]
|
||||
Emne: [subject]
|
||||
|
||||
|
@ -1076,9 +1108,10 @@ Emne: [subject]
|
|||
|
||||
Lenke til innlegget: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
admin_reg_user_email_subj = 'Forumregistrering'
|
||||
admin_reg_user_email_text = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
Her er tilgangsdataene du bruker for å logge inn:
|
||||
|
@ -1091,57 +1124,65 @@ Lenke for direkte innlogging:
|
|||
|
||||
Passordet kan endres etter at du har logget inn.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
admin_activate_user_email_subj = 'Forumregistering'
|
||||
admin_activate_user_email_text = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
Link to log in directly:
|
||||
Lenke for direkte innlogging:
|
||||
[login_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
new_user_email_sj = 'Forumregistrering'
|
||||
new_user_email_txt = """Hei [name],
|
||||
|
||||
velkommen til forumet!
|
||||
|
||||
for å aktivere kontoen din, klikk på denne lenken:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_user_notif_sj = 'Ny bruker på forumet'
|
||||
new_user_notif_txt = """Hei [recipient],
|
||||
|
||||
en ny bruker har registrert seg på forumet.
|
||||
Brukernavn: [name]
|
||||
E-post: [email]
|
||||
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_user_notif_txt_locked = """Hei [recipient],
|
||||
|
||||
en ny bruker har registrert seg på forumet.
|
||||
Brukernavn: [name]
|
||||
E-post: [email]
|
||||
|
||||
VIKTIG: Denne brukeren må låses opp før han eller hun kan logge inn!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
edit_address_email_sj = 'Kontoaktivering etter endring av e-postadresse'
|
||||
edit_address_email_txt = """Hei [name],
|
||||
|
||||
e-postadressen din er endret. Du må nå aktivere kontoen din ved å klikke på denne lenken:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
pwf_activating_email_sj = 'Forespørsel om nytt passord'
|
||||
pwf_activating_email_txt = """Hei [name],
|
||||
|
||||
denne e-posten er sendt fra forumet ([forum_address]) fordi du har bedt om et nytt passord. Klikk på lenken under for å bekrefte forespørselen din. Når du klikker på lenken vil et nytt passord bli generert og sendt til deg på e-post. Dersom denne e-posten har blitt sendt til deg ved en feiltakelse (enten av deg eller noen andre) så kan du bare ignorere den.
|
||||
|
||||
Lenke for å bekrefte forespørselen din:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
new_pw_email_sj = 'Nye brukerdata for forumet'
|
||||
new_pw_email_txt = """Hei [name],
|
||||
|
||||
here er dine nye brukerdata:
|
||||
|
||||
Brukernavn: [name]
|
||||
|
@ -1152,7 +1193,7 @@ Klikk her for å logge inn direkte:
|
|||
|
||||
Passordet kan endres etter at du har logget inn.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1169,20 +1210,19 @@ Emne: [subject]
|
|||
|
||||
--
|
||||
Denne e-posten er sendt til deg via [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
email_notify_inactive_user_subject = 'Melding om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hei [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
Vi har lagt merke til at din siste innlogging på forumet på [forum_address] er mer enn [inactive_time_span] år siden.
|
||||
GDPR tillater ikke ubegrenset lagring av brukerdata. I henhold til GDPR sletter vi inaktive brukerkontoer med jevne mellomrom.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
For å forhindre at kontoen slettes av oss, må du bare logge inn på forumet i løpet av de neste [days_until_delete] dagene.
|
||||
Hvis ikke sletter vi kontoen din. Innleggene dine vil bli beholdt, men de vil bli tildelt en anonym bruker som har valgt brukernavnet ditt tilfeldig.
|
||||
|
||||
Kind regards
|
||||
Vennlig hilsen
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Dette er en automatisk generert informasjonsmelding, vennligst ikke svar på denne e-posten."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installering'
|
||||
|
@ -1231,5 +1271,6 @@ error_db_inexistent = 'Den spesifiserte databasen eksisterer ikke -
|
|||
error_sql_file_doesnt_exist = 'Installasjons-SQL-filen (install.sql) eksisterer ikke'
|
||||
error_overwrite_config_file = 'Ingen tillatelser til å overskrive filen <code>config/db_settings.php</code> (endre CHMOD til 666, nåværende er [CHMOD])'
|
||||
error_sql = 'SQL-feil'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installer forum'
|
||||
error_conf_pw = 'Administrasjonspassordene matchet ikke'
|
||||
|
|
|
@ -1,11 +1,17 @@
|
|||
################################################################################
|
||||
# Russian language file for my little forum 2.4 #
|
||||
# Translated from English by Victor Urusov aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# Russian language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Русский языковой файл для my little forum 2.4 #
|
||||
# Перевод c английского сделал Виктор Урусов aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - не меняйте и не переводите названия разделов типа "[general]" и "[entry]"! #
|
||||
# - метки-заполнители в квадратных скобках (типа "[name]") будут заменены на #
|
||||
|
@ -15,10 +21,18 @@
|
|||
# - тексты, состоящие из нескольких строк (сообщения E-Mail) заключены в #
|
||||
# тройные кавычки (например, """Превед, #
|
||||
# кагдила?77""") #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated from English by Victor Urusov aka Urfin® #
|
||||
# < urfin77 at yandex dot ru > #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = ru
|
||||
language_code = 'ru'
|
||||
language_name_system = 'russian'
|
||||
language_name_own = 'русский'
|
||||
charset = utf-8
|
||||
locale = ru
|
||||
locale = ru_RU
|
||||
|
@ -26,8 +40,8 @@ locale = rus
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = Y-m-d, H:i
|
||||
time_format = 'dd.MM.YYYY, H:mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, H:mm'
|
||||
forum_time = 'Время форума: [time]'
|
||||
forum_time_with_time_zone = 'Время форума: [time] ([time_zone])'
|
||||
unknown_user = 'неизвестный'
|
||||
|
@ -52,8 +66,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'следующая страница'
|
||||
previous_page_link_title = 'предыдущая страница'
|
||||
posted_by = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'написал <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'написал [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'написал [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'кликните, чтобы перейти к посту, который написал [name]'
|
||||
error_headline = 'Ошибочка!'
|
||||
no_authorisation = 'Не автоирзован!'
|
||||
|
@ -201,9 +215,10 @@ open_whole_thread = 'Открыть всю тему'
|
|||
change_category_link = 'Показать сообщения в категории "[category]"'
|
||||
mark_linktitle = 'Отметить сообщение'
|
||||
unmark_linktitle = 'Снять отметку'
|
||||
unclassified_linktitle = 'Объявление не засекречено'
|
||||
delete_marked_link = 'Удалить отмеченные'
|
||||
manage_postings_link = 'Управление сообщениями'
|
||||
non_activated_users_link = '[counter] non-activated user(s)'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
show_spam_link = 'Показать спам ([number])'
|
||||
hide_spam_link = 'Скрыть спам'
|
||||
delete_spam_link = 'Удалить спам'
|
||||
|
@ -215,6 +230,8 @@ more_smilies_label = 'ещё'
|
|||
more_smilies_title = 'ещё смайлики'
|
||||
close = 'закрыть'
|
||||
no_postings_user = 'Нет сообщений.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Поиск'
|
||||
search_fulltext = 'весь текст'
|
||||
#search_fulltext_or = 'весь текст (или)'
|
||||
|
@ -250,8 +267,8 @@ search_user = 'Искать пользователя:'
|
|||
search_user_default_value = 'Искать пользователя …'
|
||||
no_users = 'Пользователей не найдено.'
|
||||
no_text_title = 'Пустое сообщение / отсутствует текст'
|
||||
no_text = '- Тут ничего нет! -'
|
||||
no_text_alt = 'Пустое сообщение'
|
||||
no_text = '- Тут ничего нет! -'
|
||||
error_invalid_form = 'Сессия просрочена! Пожалуйста, скопируйте текст и залогиньтесь снова, или отправьте содержимое формы повторно как гость.'
|
||||
error_form_sent_too_fast = 'Форма была отправлена слишком быстро - пожалуйста, подождите несколько секунд и повторите отправку (работает защита от автоматического заполнения форм)'
|
||||
error_form_sent_too_slow = 'Форма уже не актуальна - пожалуйста, скопируйте текст и обновите страницу'
|
||||
|
@ -311,7 +328,7 @@ error_bookmark_word_too_long = 'Слово "[word]" слишком длинн
|
|||
error_bookmark_tags_limit_reached = 'Превышен лимит тэгов для закладки'
|
||||
|
||||
[entry]
|
||||
edited_by = 'исправил [name], в [time]'
|
||||
edited_by = 'исправил [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Тэги:'
|
||||
one_view = '1 просмотр'
|
||||
several_views = '[views] просмотров'
|
||||
|
@ -368,6 +385,8 @@ subject_marking = 'Тема:'
|
|||
message_marking = 'Сообщение:'
|
||||
tags_marking = 'Тэги:'
|
||||
tags_note = '(не обязательно, разделяются запятыми)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'жирный'
|
||||
bbcode_bold_title = 'Выделить текст жирным'
|
||||
bbcode_bold_instruction = '[b]жирный текст[/b]'
|
||||
|
@ -376,7 +395,7 @@ bbcode_italic_title = 'Выделить текст курсивом'
|
|||
bbcode_italic_instruction = '[i]курсив[/i]'
|
||||
bbcode_color_label = 'цвет'
|
||||
bbcode_color_title = 'Цвет текста'
|
||||
bbcode_color_instruction = '[color=#rgb]colored text[/color]'
|
||||
bbcode_color_instruction = '[color=#rgb]цветной текст[/color]'
|
||||
bbcode_link_label = 'ссылка'
|
||||
bbcode_link_title = 'Вставить гиперссылку'
|
||||
bbcode_link_instruction = '[link=http://example.com/]текст ссылки[/link] / [link]http://example.com/[/link]'
|
||||
|
@ -388,7 +407,7 @@ bbcode_size_instruction_small = '[size=small]мелкие буквы[/size]'
|
|||
bbcode_size_instruction_large = '[size=large]крупные буквы[/size]'
|
||||
bbcode_list_label = 'список'
|
||||
bbcode_list_title = 'Вставить список'
|
||||
bbcode_list_instruction = '[list][*]list item[/list]'
|
||||
bbcode_list_instruction = '[list][*]элемент списка[/list]'
|
||||
bbcode_image_label = 'картинка'
|
||||
bbcode_image_title = 'Вставить картинку'
|
||||
bbcode_image_label_default = 'без выравнивания'
|
||||
|
@ -400,9 +419,9 @@ bbcode_image_instr_right = 'с выравниванием по право
|
|||
bbcode_image_label_thumb = 'миниатюра'
|
||||
bbcode_image_instr_thumb = 'вставка миниатюры: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'миниатюра с выравниванием по левому краю'
|
||||
bbcode_image_instr_thumb_left = 'вставка миниатюры с выравниванием по левому краю: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'вставка миниатюры с выравниванием по левому краю: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'миниатюра с выравниванием по правому краю'
|
||||
bbcode_image_instr_thumb_right = 'вставка миниатюры с выравниванием по правому краю: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'вставка миниатюры с выравниванием по правому краю: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'загрузить'
|
||||
bbcode_upload_title = 'Загрузить картинку'
|
||||
bbcode_upload_instruction = 'Загрузить картинку …'
|
||||
|
@ -495,7 +514,7 @@ insert_image = 'Вставить картинку'
|
|||
insert_image_exp = 'Кликните на картинку, чтобы вставить её в ваше сообщение.'
|
||||
insert_image_exp_no_js = 'Для вставки картинки в ваше сообщение можно использовать следующий код:'
|
||||
browse_uploaded_images = 'Просмотр загруженных картинок …'
|
||||
back = '« back'
|
||||
back = '« назад'
|
||||
no_images = 'Нет доступных картинок.'
|
||||
delete_image_confirm = 'Удалить эту картинку?'
|
||||
delete_image_button = 'OK - Удалить'
|
||||
|
@ -559,6 +578,7 @@ pwf_username = 'Пользователь:'
|
|||
pwf_email = 'Адрес e-mail:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Список пользователей'
|
||||
user_name = 'Пользователь'
|
||||
user_type = 'Тип'
|
||||
admin = 'Администратор'
|
||||
|
@ -698,6 +718,7 @@ register_user_email = 'E-mail:'
|
|||
register_pw = 'Пароль:'
|
||||
register_honeypot_field = 'Оставьте это поле пустым:'
|
||||
register_only_by_admin = 'Пользователь может быть зарегистрирован только Администратором форума.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Учётная запись была зарегистрирована и ключ активации выслан на <strong>[var]</strong>. Учётная запись должна быть активирована в течение суток.'
|
||||
registered_send_error = 'Учётная запись была зарегистрирована, но ключ активации не может быть выслан (почтовый сервер недоступен). Пожалуйста, свяжитесь с Администратором форума и попросите его вручную активировать вашу учётную запись.'
|
||||
activation_failed = 'Не получилось активировать учётную запись.'
|
||||
|
@ -728,7 +749,6 @@ error_email_invalid = 'Адрес e-mail неправильный'
|
|||
error_email_subject_too_long = 'Заголовок письма слишком длинный'
|
||||
error_email_text_too_long = 'Текст письма слишком длинный ([text_length] символов - разрешено только [text_maxlength] символов)'
|
||||
error_email_spam_suspicion = 'Подозрение на спам! Пожалуйста, измените текст письма (например, удалите ссылки)'
|
||||
#error_mailserver = 'Попытка отправить письмо не удалась!'
|
||||
|
||||
[admin]
|
||||
enabled = 'включен'
|
||||
|
@ -921,6 +941,7 @@ delete_page_submit = 'Удалить'
|
|||
error_no_page_title = 'Отсутствует заголовок'
|
||||
|
||||
# управление пользователями:
|
||||
user_list_header = 'Список пользователей'
|
||||
user_name_empty = 'Не указано имя пользователя'
|
||||
num_registerd_users = '[number] зарегистрированных пользователей'
|
||||
user_id = 'ID'
|
||||
|
@ -952,9 +973,8 @@ delete_avatar = 'Удалить аватар'
|
|||
delete_user_confirmation = 'Вы уверены, что хотите удалить этого пользователя?'
|
||||
delete_users_confirmation = 'Вы уверены, что хотите удалить следующих пользователей?'
|
||||
delete_entries_of_user_confirm = 'Вы уверены, что хотите удалить все сообщения пользователя <strong>[user]</strong>? Комментарии других пользователей к ним также будут удалены!'
|
||||
delete_submit = 'Удалить'
|
||||
delete_submit = 'Да, Удалить'
|
||||
register_exp = 'Вы можете оставить поля для ввода пароля пустыми, при этом должен быть сгенерирован случайный пароль. В этом случае пользовательские данные должны быть отправлены на указанный адрес электронной почты.'
|
||||
delete_submit = 'Да, удалить'
|
||||
register_username = 'Имя пользователя:'
|
||||
register_email = 'E-mail:'
|
||||
register_pw = 'Пароль:'
|
||||
|
@ -971,9 +991,18 @@ no_users_in_selection = 'Пользователи не выбраны'
|
|||
# upload management
|
||||
upload_administration = 'Управление загрузкой'
|
||||
mark_upload_for_removal = 'отметить для удаления'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Загруженных файлов не найдено.'
|
||||
delete_upload_confirmation = 'Вы уверены в том, что хотите удалить эту загрузку?'
|
||||
delete_uploads_confirmation = 'Вы уверены в том, что хотите удалить следующие загрузки?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# защита от спама:
|
||||
captcha = 'КАПЧА'
|
||||
|
@ -996,9 +1025,6 @@ b8_spam_probability_threshold = 'Порог для классификации
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = 'защита от спама <a href="http://www.stopforumspam.com/">Stop Forum Spam</a>'
|
||||
stop_forum_spam_enable = 'включить Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = 'Защита от спама <a href="http://bad-behavior.ioerror.us/">Bad Behavior</a>.'
|
||||
bad_behavior_enable = 'включить Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = 'Служба защиты от спама <a href="http://akismet.com/">Akismet</a>. Для её использование вам потребуется <a href="http://wordpress.com/api-keys/">ключ Wordpress API Key</a> (не будет работать без ключа или с неправильным ключом API Key!).'
|
||||
akismet_key = 'Wordpress API Key:'
|
||||
|
@ -1052,14 +1078,15 @@ update_submit = 'Выполнить'
|
|||
update_successful = 'База данных была успешно обновлена.'
|
||||
update_items_note = 'Теперь загрузите на ваш сервер следующие файлы и папки из нового пакета обновления форума (версии [version]):'
|
||||
update_download = 'Если у вас ещё нет этих файлов, вы можете загрузить [[отсюда]].'
|
||||
update_reenabling_notice = 'Пожалуйста, обратите внимание, что форум в настоящее время отключен, и вы должны снова включить его в <a href="index.php?mode=admin&action=settings">настройках</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Ответ на "[original_subject]"'
|
||||
email_text = """Здравствуйте, [recipient],
|
||||
email_text = """Здравствуйте, [recipient]!
|
||||
|
||||
this is an automatically generated information message. You receive this email, because you have enabled the notification function. Please do not reply to this email but respond to the specific thread.
|
||||
Это автоматически сгенерированное информационное сообщение. Вы получаете это письмо, потому что включили функцию уведомления. Пожалуйста, не отвечайте на это письмо, а отвечайте в конкретной теме.
|
||||
|
||||
If you do not want to get informed about replies to your entry anymore, please use the following link to unsubscribe from the notification.
|
||||
Если вы больше не хотите получать информацию об ответах на вашу запись, пожалуйста, воспользуйтесь следующей ссылкой, чтобы отписаться от уведомлений.
|
||||
[unsubscribe_address]
|
||||
|
||||
[name] ответил на сообщение \"[original_subject]\":
|
||||
|
@ -1085,7 +1112,7 @@ admin_email_text = """Новое сообщение от [name]
|
|||
|
||||
URL этого сообщения: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
admin_email_text_reply = """Ответ от [name]
|
||||
Тема: [subject]
|
||||
|
||||
|
@ -1093,9 +1120,10 @@ admin_email_text_reply = """Ответ от [name]
|
|||
|
||||
URL этого сообщения: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
admin_reg_user_email_subj = 'Регистрация на форуме'
|
||||
admin_reg_user_email_text = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Регистрационные данные для доступа:
|
||||
|
@ -1108,57 +1136,65 @@ admin_reg_user_email_text = """Здравствуйте, [name]!
|
|||
|
||||
После входа пароль можно будет изменить.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
admin_activate_user_email_subj = 'Регистрация на форуме'
|
||||
admin_activate_user_email_text = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Link to log in directly:
|
||||
Ссылка для прямого входа в систему:
|
||||
[login_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
new_user_email_sj = 'Регистрация на форуме'
|
||||
new_user_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Добро пожаловать на форум!
|
||||
|
||||
Для активации вашей учётной записи проследуйте по ссылке:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_user_notif_sj = 'Регистрация нового пользователя'
|
||||
new_user_notif_txt = """Здравствуйте, [recipient]!
|
||||
|
||||
На форуме зарегистрировался новый пользователь:
|
||||
Имя пользователя: [name]
|
||||
Адрес электронной почты: [email]
|
||||
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_user_notif_txt_locked = """Здравствуйте, [recipient]!
|
||||
|
||||
На форуме зарегистрировался новый пользователь:
|
||||
Имя пользователя: [name]
|
||||
Адрес e-mail: [email]
|
||||
|
||||
ВНИМАНИЕ! Для того, чтобы этот пользователь мог войти на форум, его необходимо разблокировать!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
edit_address_email_sj = 'Активация учётной записи после смены адреса e-mail'
|
||||
edit_address_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Адрес e-mail был изменён. Сейчас вам необходимо снова активировать вашу учётную запись, перейдя по ссылке:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
pwf_activating_email_sj = 'Запрос нового пароля'
|
||||
pwf_activating_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Это письмо было отправлено вам с форума ([forum_address]), так как был запрошен новый пароль. Для подтверждения запроса перейдите по нижеприведенной ссылке, для вас будет сгенерирован и выслан новый пароль. Если данное письмо было получено вами по ошибке (вашей, или чьей-то ещё), просто проигнорируйте его.
|
||||
|
||||
Ссылка для подтверждения запроса:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
new_pw_email_sj = 'Новые пользовательские данные для форума'
|
||||
new_pw_email_txt = """Здравствуйте, [name]!
|
||||
|
||||
Ваши новые данные:
|
||||
|
||||
Имя пользователя: [name]
|
||||
|
@ -1169,7 +1205,7 @@ new_pw_email_txt = """Здравствуйте, [name]!
|
|||
|
||||
После входа пароль можно будет изменить.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1186,20 +1222,19 @@ Subject: [subject]
|
|||
|
||||
--
|
||||
Это письмо было отправлено вам с форума [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
email_notify_inactive_user_subject = 'Уведомление о бездействии [name]'
|
||||
email_notify_inactive_user_text = """Здравствуйте, [name]!
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
Мы заметили, что последний раз вы заходили на форум по адресу [forum_address] более [промежуток_времени_неактивности] лет назад.
|
||||
GDPR ЕС не допускает неограниченного хранения пользовательских данных. В соответствии с GDPR, мы регулярно удаляем неактивные учетные записи пользователей.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
Чтобы предотвратить удаление аккаунта, просто зайдите на форум в течение следующих [days_until_delete] дней.
|
||||
В противном случае мы удалим вашу учетную запись. Ваши сообщения сохранятся, но будут присвоены анонимному пользователю, выбравшему ваше имя пользователя случайным образом.
|
||||
|
||||
Kind regards
|
||||
С уважением
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Это автоматически сгенерированное информационное сообщение, пожалуйста, не отвечайте на него."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Установка'
|
||||
|
@ -1248,5 +1283,6 @@ error_db_inexistent = 'Указанная база данных не
|
|||
error_sql_file_doesnt_exist = 'Установочный файл SQL (install.sql) не существует'
|
||||
error_overwrite_config_file = 'Отсутствуют права для перезаписи файла <code>config/db_settings.php</code> (установлены CHMOD [CHMOD], измените их на CHMOD 666)'
|
||||
error_sql = 'Ошибка SQL'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Установить'
|
||||
error_conf_pw = 'Пароль Администратора неправильный'
|
||||
|
|
1308
lang/spanish.lang
|
@ -1,7 +1,5 @@
|
|||
################################################################################
|
||||
# Swedish language file for my little forum 2.4.6 #
|
||||
# Transladed from English by Rövarn, rovarn at gmail dot com #
|
||||
# Enhanced translation by Tommy Nilsson - tommy@svenska-lok.se #
|
||||
# Swedish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
|
@ -12,12 +10,20 @@
|
|||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file fomat: #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Transladed from English by Rövarn, rovarn at gmail dot com #
|
||||
# Enhanced translation by Tommy Nilsson - tommy@svenska-lok.se #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = sv
|
||||
language_code = 'sv'
|
||||
language_name_system = 'swedish'
|
||||
language_name_own = 'svensk'
|
||||
charset = utf-8
|
||||
locale = sv_SE.utf8
|
||||
locale = sv_SE
|
||||
|
@ -25,8 +31,8 @@ locale = sv
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'YYYY-MM-dd, HH.mm'
|
||||
time_format_full = 'EEEE, dd MMMM YYYY, HH.mm'
|
||||
forum_time = 'Forum tid: [time]'
|
||||
forum_time_with_time_zone = 'Forum tidszon: [time] ([time_zone])'
|
||||
unknown_user = 'Okänd'
|
||||
|
@ -51,8 +57,8 @@ next_page_link = 'Nästa sida »'
|
|||
previous_page_link = '« Föregående sida'
|
||||
next_page_link_title = 'Nästa sida'
|
||||
previous_page_link_title = 'Föregående sida'
|
||||
posted_by = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'av <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'av [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'av [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'Klicka för att komma till ursprungsinlägget av: [name]'
|
||||
error_headline = 'Fel!'
|
||||
no_authorisation = 'Ej behörig!'
|
||||
|
@ -200,6 +206,7 @@ open_whole_thread = 'Öppna hela tråden'
|
|||
change_category_link = 'Visa inlägg i kategori "[category]"'
|
||||
mark_linktitle = 'Markera inlägg'
|
||||
unmark_linktitle = 'Avmarkera inlägg'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'Radera markerade inlägg'
|
||||
manage_postings_link = 'Redigera inlägg'
|
||||
non_activated_users_link = '[counter] inaktiverade användare'
|
||||
|
@ -214,6 +221,8 @@ more_smilies_label = 'Fler …'
|
|||
more_smilies_title = 'Fler smajlisar'
|
||||
close = 'Stäng'
|
||||
no_postings_user = 'Inga inlägg.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Sök'
|
||||
search_fulltext = 'Fulltext'
|
||||
search_tags = 'Sökord'
|
||||
|
@ -309,7 +318,7 @@ error_bookmark_word_too_long = 'Ordet "[word]" för för långt'
|
|||
error_bookmark_tags_limit_reached = 'Övre gränsen för antal taggar har nåtts för bokmärke'
|
||||
|
||||
[entry]
|
||||
edited_by = 'Redigerad av [name], [time]'
|
||||
edited_by = 'Redigerad av [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'Sökord:'
|
||||
one_view = '1 visning'
|
||||
several_views = '[views] visningar'
|
||||
|
@ -366,6 +375,8 @@ subject_marking = 'Ämne:'
|
|||
message_marking = 'Inlägg:'
|
||||
tags_marking = 'Sökord:'
|
||||
tags_note = '(valfritt, separera med kommatecken)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'Fet'
|
||||
bbcode_bold_title = 'Fetstil'
|
||||
bbcode_bold_instruction = '[b]Text[/b]'
|
||||
|
@ -398,9 +409,9 @@ bbcode_image_instr_right = 'Högerjusterad: [img=right]http://example.com
|
|||
bbcode_image_label_thumb = 'Miniatyr'
|
||||
bbcode_image_instr_thumb = 'Miniatyr: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = 'Miniatyr vänster'
|
||||
bbcode_image_instr_thumb_left = 'Miniatyr vänster: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = 'Miniatyr vänster: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = 'Miniatyr höger'
|
||||
bbcode_image_instr_thumb_right = 'Miniatyr höger: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = 'Miniatyr höger: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'Ladda'
|
||||
bbcode_upload_title = 'Ladda upp och infoga bild'
|
||||
bbcode_upload_instruction = 'Ladda bild …'
|
||||
|
@ -427,7 +438,7 @@ message_submit_button = 'OK - Skicka'
|
|||
message_submit_title = 'Spara inlägg'
|
||||
message_preview_button = 'Förhandsgranska'
|
||||
message_preview_title = 'Förhandsgranska inlägg före Du postar'
|
||||
reply_to_posting_marking = 'Svara på <strong>[name]</strong>'s inlägg'
|
||||
reply_to_posting_marking = 'Svara på <strong>[name]</strong>\'s inlägg'
|
||||
minutes_left_to_edit = 'Du har [minutes] minuter kvar att redigera inlägget!'
|
||||
minutes_left_to_edit_reply = 'Du har [minutes] minuter kvar att redigera inlägget om ingen postar svar innan!'
|
||||
preview_headline = 'Förhandsvisa'
|
||||
|
@ -557,6 +568,7 @@ pwf_username = 'Användarnamn:'
|
|||
pwf_email = 'E-post:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Användarlista'
|
||||
user_name = 'Användarnamn'
|
||||
user_type = 'Typ'
|
||||
admin = 'Administratör'
|
||||
|
@ -695,6 +707,7 @@ register_user_email = 'E-post:'
|
|||
register_pw = 'Lösenord:'
|
||||
register_honeypot_field = 'Lämna detta fältet tomt:'
|
||||
register_only_by_admin = 'Nya användare kan bara registreras av forumets administratörer.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Kontot har blivit registrerat och en aktiveringsnyckel har blivit skickad till <strong>[var]</strong>. Kontot måste aktiveras inom ett dygn.'
|
||||
registered_send_error = 'Kontot har blivit registrerat men aktiveringsnyckeln kunde inte skickas (mail server är inte tillgänglig). Vänligen kontakta forumets administratör och be om manuell aktivering av kontot.'
|
||||
activation_failed = 'Aktivering av kontot misslyckades.'
|
||||
|
@ -916,6 +929,7 @@ delete_page_submit = 'OK - Radera sidan'
|
|||
error_no_page_title = 'Ingen titel!'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Användarlista'
|
||||
user_name_empty = 'Inget användarnamn angett'
|
||||
num_registerd_users = '[number] registrerade användare'
|
||||
user_id = 'ID'
|
||||
|
@ -965,9 +979,18 @@ no_users_in_selection = 'Inga användare finns i detta urval'
|
|||
# upload management
|
||||
upload_administration = 'Hantering av uppladdade filer'
|
||||
mark_upload_for_removal = 'Märk för borttagning'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = 'Hittade inga uppladdade filer.'
|
||||
delete_upload_confirmation = 'Är du säker på att du vill radera den här uppladdade filen?'
|
||||
delete_uploads_confirmation = 'Är du säker på att du vill radera de följande uppladdade filerna?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -990,9 +1013,6 @@ b8_spam_probability_threshold = 'Gränsvärde för klassificering av spam. Kor
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<a href="http://www.stopforumspam.com/">Stop Forum Spam</a> Spamskydd som kontrollerar E-postadresser vid registrering'
|
||||
stop_forum_spam_enable = 'Aktivera Stop Forum Spam'
|
||||
bad_behavior = 'Bad Behavior'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Bad Behavior</a> Spamskydd.'
|
||||
bad_behavior_enable = 'Aktivera Bad Behavior'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> Tjänst som skyddar mot spam. Du behöver en <a href="http://wordpress.com/api-keys/">Wordpress API Nyckel</a> (fungerar inte utan en giltig API Nyckel!).'
|
||||
akismet_key = 'Wordpress API Nyckel:'
|
||||
|
@ -1046,6 +1066,7 @@ update_submit = 'OK - Uppdatera'
|
|||
update_successful = 'Databasen har uppdaterats.'
|
||||
update_items_note = 'Ladda upp följande filer/mappar från den hämtade uppdaterineg (version [version]) till servern:'
|
||||
update_download = 'Om Du inte laddat ner filerna kan Du göra det här: [[here]].'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'Svar på "[original_subject]"'
|
||||
|
@ -1079,7 +1100,7 @@ admin_email_text = """Nytt inlägg av [name]
|
|||
|
||||
Länk till inlägget: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
admin_email_text_reply = """Svar av [name]
|
||||
Ämne: [subject]
|
||||
|
||||
|
@ -1087,9 +1108,10 @@ admin_email_text_reply = """Svar av [name]
|
|||
|
||||
Länk till inlägget: [posting_address]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
admin_reg_user_email_subj = 'Registrering på forum'
|
||||
admin_reg_user_email_text = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
Här är dina användaruppgifter för att logga in:
|
||||
|
@ -1102,58 +1124,65 @@ Logga in direkt med denna länk:
|
|||
|
||||
Lösenordet kan ändras efter att Du loggat in!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
|
||||
admin_activate_user_email_subj = 'Registrering på forum'
|
||||
admin_activate_user_email_text = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
Logga in direkt med denna länk:
|
||||
[login_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande.."""
|
||||
|
||||
new_user_email_sj = 'Registrering på forum'
|
||||
new_user_email_txt = """Hej [name],
|
||||
|
||||
Välkommen till forumet!
|
||||
|
||||
För att aktivera kontot, vänligen följ aktiveringslänken:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_user_notif_sj = 'Ny användare registrerad'
|
||||
new_user_notif_txt = """Hej [recipient],
|
||||
|
||||
En ny användare har registrerat sig på forumet.
|
||||
Användarnamn: [name]
|
||||
E-post: [email]
|
||||
|
||||
[user_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_user_notif_txt_locked = """Hej [recipient],
|
||||
|
||||
En ny användare har registrerat sig på forumet.
|
||||
Användarnamn: [name]
|
||||
E-post: [email]
|
||||
|
||||
VIKTIGT: Denna användare måste aktiveras!
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
edit_address_email_sj = 'Kontoaktivering efter byte av E-postadress'
|
||||
edit_address_email_txt = """Hej [name],
|
||||
|
||||
E-postadressen har ändrats, Du måste återaktivera kontot via länken:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
pwf_activating_email_sj = 'Begäran om nytt lösenord'
|
||||
pwf_activating_email_txt = """Hej [name],
|
||||
|
||||
Detta mail har skickats från [forum_address] eftersom ett nytt lösenord har begärts, klicka på länken för att bekräfta begäran. Ett nytt lösenord kommer då att skapas och skickas till dig. Om Du själv inte begärt byte av lösenord ber vi dig bortse från detta mail och lämna det utan åtgärd.
|
||||
|
||||
Aktiveringslänk:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
new_pw_email_sj = 'Nya användaruppgifter till forumet'
|
||||
new_pw_email_txt = """Hej [name],
|
||||
|
||||
Här är dina nya användaruppgifter:
|
||||
|
||||
Användarnamn: [name]
|
||||
|
@ -1164,7 +1193,7 @@ Logga in via länken:
|
|||
|
||||
Lösenordet kan ändras efter att Du loggat in.
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
contact_email_txt = """[message]
|
||||
|
||||
--
|
||||
|
@ -1181,20 +1210,19 @@ contact_notification_txt = """Detta mail har skickats med din E-postadres
|
|||
|
||||
--
|
||||
Detta mail har skickats från [forum_address]."""
|
||||
# <!-- TODO --> #
|
||||
email_notify_inactive_user_subject = 'Inactivity notification [name]'
|
||||
email_notify_inactive_user_text = """Hello [name],
|
||||
email_notify_inactive_user_subject = 'Meddelande om inaktivitet [name]'
|
||||
email_notify_inactive_user_text = """Hej [name],
|
||||
|
||||
we have noticed that your last log-in to the forum at [forum_address] is more than [inactive_time_span] years ago.
|
||||
The GDPR does not permit an unlimited storing of user data. According to the GDPR, we delete inactive user accounts in regular intervals.
|
||||
vi har märkt att din senaste inloggning på forumet på [forum_adress] är mer än [inaktiv_tidsperiod] år sedan.
|
||||
Dataskyddsförordningen tillåter inte obegränsad lagring av användardata. I enlighet med GDPR raderar vi inaktiva användarkonton med jämna mellanrum.
|
||||
|
||||
To prevent the account from being deleted by us, just log-in to the forum within the next [days_until_delete] days.
|
||||
Otherwise, we will delete your account. Your postings will be retained, but will be assigned to an anonymous user having randomly chosen your username.
|
||||
För att förhindra att kontot raderas av oss behöver du bara logga in på forumet inom de närmaste [days_until_delete] dagarna.
|
||||
Annars kommer vi att radera ditt konto. Dina inlägg kommer att sparas, men de kommer att tilldelas en anonym användare som slumpmässigt har valt ditt användarnamn.
|
||||
|
||||
Kind regards
|
||||
Vänliga hälsningar
|
||||
|
||||
--
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
Detta är ett automatiskt genererat informationsmeddelande, vänligen svara inte på detta e-postmeddelande."""
|
||||
|
||||
[install]
|
||||
installation_title = 'Installation'
|
||||
|
@ -1243,5 +1271,6 @@ error_db_inexistent = 'Specificerad databas existerar inte - kontrol
|
|||
error_sql_file_doesnt_exist = 'SQL\'s installationsfil (install.sql) existerar inte'
|
||||
error_overwrite_config_file = 'Saknar rättighet att skriva till fil <code>config/db_settings.php</code> (ställ in CHMOD 666, nuvarande är [CHMOD])'
|
||||
error_sql = 'SQL fel'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'OK - Installera forum'
|
||||
error_conf_pw = 'Administratörslösenorden stämmer inte överens'
|
||||
|
|
|
@ -1,9 +1,25 @@
|
|||
################################################################################
|
||||
# Tamil language file for my little forum 2.4 #
|
||||
# Tamil language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = ta
|
||||
language_code = 'ta'
|
||||
language_name_system = 'tamil'
|
||||
language_name_own = 'தமிழ்'
|
||||
charset = utf-8
|
||||
locale = ta_IN.utf8
|
||||
locale = ta_IN
|
||||
|
@ -11,8 +27,8 @@ locale = ta
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = Y-m-d, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'YYYY-MM-dd, hh:mm a'
|
||||
time_format_full = 'EEEE, MMMM dd, YYYY, hh:mm a'
|
||||
forum_time = 'கருத்தரங்கின் நேரம்: [time]'
|
||||
forum_time_with_time_zone = 'கருத்தரங்கின் நேரம்: [time] ([time_zone])'
|
||||
unknown_user = 'தெரியாதவர்'
|
||||
|
@ -37,8 +53,8 @@ next_page_link = '»'
|
|||
previous_page_link = '«'
|
||||
next_page_link_title = 'அடுத்த பக்கம்'
|
||||
previous_page_link_title = 'முந்தய பக்கம்'
|
||||
posted_by = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">,</span> [time]'
|
||||
posted_by_location = 'இப்படிக்கு <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'இப்படிக்கு [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = '[name]னுடைய அசல் தகவலுக்கு செல்ல'
|
||||
error_headline = 'தவரு!'
|
||||
no_authorisation = 'அங்கிகாரம் இல்லை!'
|
||||
|
@ -186,6 +202,7 @@ open_whole_thread = 'அனைத்து திரட்டை
|
|||
change_category_link = '"[category]" பிரிவில் உள்ள போஸ்டிங்கை காண்பி'
|
||||
mark_linktitle = 'குறியிடபட்ட போஸ்டிங்ஸ்'
|
||||
unmark_linktitle = 'குறியிடபடாத போஸ்டிங்ஸ்'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'குறியிடபட்ட போஸ்டிங்ஸ் அழிக்க'
|
||||
manage_postings_link = 'போஸ்டிங்கை மேற்பார்வையிடு'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
|
@ -200,6 +217,8 @@ more_smilies_label = 'மேலும்...'
|
|||
more_smilies_title = 'மேலும் சிரிப்பு முகங்கள்'
|
||||
close = 'மூடு'
|
||||
no_postings_user = 'போஸ்டிங்ஸ் இல்லை.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'தேடு'
|
||||
search_fulltext = 'முழு உரை'
|
||||
search_tags = 'அடையாள முத்திரை'
|
||||
|
@ -295,7 +314,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = 'புதுப்பித்தவர் [name], [time]'
|
||||
edited_by = 'புதுப்பித்தவர் [name]<span class="interpunction">, </span>'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
one_view = '1 காட்ச்சி'
|
||||
several_views = '[views] காட்ச்சிகள்'
|
||||
|
@ -352,6 +371,8 @@ subject_marking = 'பாடம்:'
|
|||
message_marking = 'தகவல்:'
|
||||
tags_marking = 'அடையாள முத்திரை:'
|
||||
tags_note = '(விரும்பினால், "," வைத்து பிரிக்கவும்)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'தடிப்பமாக'
|
||||
bbcode_bold_title = 'தடிப்பமான உரை நடை'
|
||||
bbcode_bold_instruction = '[b]உரை[/b]'
|
||||
|
@ -384,9 +405,9 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'மேலேற்றுக'
|
||||
bbcode_upload_title = 'படத்தை மேலேற்றுக'
|
||||
bbcode_upload_instruction = 'படத்தை மேலேற்றுக …'
|
||||
|
@ -400,7 +421,7 @@ bbcode_code_instruction_inline = '<!-- TODO -->[inlinecode]code[/inlinecode]'
|
|||
bbcode_code_label_general = '<!-- TODO -->code block'
|
||||
bbcode_code_instruction_general = '<!-- TODO -->[code]code[/code]'
|
||||
bbcode_code_label_specific = '<!-- TODO -->code block [language]'
|
||||
bbcode_code_instruction_spec = '<!-- TODO -->[code=[language]]code[/code]'
|
||||
bbcode_code_instruction_spec = '<!-- TODO -->[code=[language]]code[/code]'
|
||||
insert_smiley_title = 'சிரிப்பு முகங்களை செருகுக'
|
||||
email_notific_reply_thread = 'இந்த திரட்டின் பதில்களை மின்-அசலின் மூலம் தெரியப்படுத்தவும்'
|
||||
email_notific_reply_post = 'இந்த போஸ்டின் பதில்களை மின்-அசலின் மூலம் தெரியப்படுத்தவும்'
|
||||
|
@ -543,6 +564,7 @@ pwf_username = 'பயன் படுத்துபவர
|
|||
pwf_email = 'மின்-அசல்:'
|
||||
|
||||
[user]
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name = 'பயன் படுத்துபவர் பெயர்'
|
||||
user_type = 'வகை'
|
||||
admin = 'நிர்வாகி'
|
||||
|
@ -681,6 +703,7 @@ register_user_email = 'மின்-அசல்:'
|
|||
register_pw = 'மறைவு சொல்:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'பொது மன்ற நிர்வாகியின் மூலமே பயன் படுத்துபவர் சேர முடியும்.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்கள் <strong>[var]</strong> அநுப்பப்பட்டுவிட்டது. மேலும் உங்கள் பொது மன்ற கணக்கு ஒரு நாளுக்குள் செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டும்.'
|
||||
registered_send_error = 'உங்கள் கணக்கு உருவாக்கப்பட்டுவிட்டது மறறும் அதற்கான செயல்படுத்தும் சாவி இணைப்பை உங்களுக்கு அநுப்பப்பமுடியவில்லை (அஞ்சல் சேவை மைய்யம் இயங்கவில்லை). கணக்கை செயல்பாட்டிற்கு கொண்டுவரப்படவேண்டுமானால் தயவு செய்து பொது மன்ற நிர்வாகியை அநுகவும்.'
|
||||
activation_failed = 'கணக்கை செயல்பாட்டிற்கு கொண்டுவர முடியவில்லை.'
|
||||
|
@ -729,11 +752,11 @@ spam_protection_link = 'ஸ்பேம் காப்பு'
|
|||
update_link = 'புதுப்பிக்க'
|
||||
reset_uninstall_link = 'நிலையை மீட்டு அல்லது பொது மன்றத்தை நீக்குக'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -783,7 +806,7 @@ all_users = 'அனைத்து'
|
|||
register_permission = 'பயன் படுத்துபவரை பதிவு செய்'
|
||||
register_permission_desc = 'பயன் படுத்துபவர் அவர்களாகவே பதிவு செய்துகொள்ல முடியுமா?'
|
||||
register_self = 'தானே'
|
||||
register_self_locked = 'தானே அனால் புதிய கணக்கை நிர்வாகி or a துணை நிர்வாகி திறந்து விடவேண்டும்'
|
||||
register_self_locked = '<!-- TODO -->தானே அனால் புதிய கணக்கை நிர்வாகி or a துணை நிர்வாகி திறந்து விடவேண்டும்'
|
||||
register_only_admin = 'நிர்வாகியால் மட்டும்'
|
||||
user_area = 'பயன் படுத்துபவர் பகுதி'
|
||||
user_area_desc = 'பயன் படுத்துபவர் பகுதியில்(பயன் படுத்துபவர் பட்டியல், விபரங்கள்) அநைவரும் அநுகலாம்?'
|
||||
|
@ -902,6 +925,7 @@ delete_page_submit = 'சரி - பக்கத்தை அழ
|
|||
error_no_page_title = 'தலைப்பு இல்லை'
|
||||
|
||||
# பயன் படுத்துபவர் நிர்வாகம்:
|
||||
user_list_header = '<!-- TODO -->User list'
|
||||
user_name_empty = 'பயன் படுத்துபவர் பெயர் நுழைக்கவில்லை'
|
||||
num_registerd_users = '[number] பதிவு செய்தவர்'
|
||||
user_id = 'ID'
|
||||
|
@ -951,9 +975,18 @@ no_users_in_selection = 'தெரிவு செய்யப்ப
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -976,9 +1009,6 @@ b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Vali
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'தவறான நடத்தை'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">தவறான நடத்தை</a> நம்பத்தகாதவரிடமிருந்து பாதுகாப்பு.'
|
||||
bad_behavior_enable = 'தவறான நடத்தையை காண்பிக்கச் செய்'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> நம்பத்தகாதவரிடமிருந்து பாதுகாப்தற்கான சேவை. இந்த சேவையை பயனபடுத்த, உங்களுக்கு <a href="http://wordpress.com/api-keys/">Wordpress API Key</a> தேவைப்படுகிறது (API சாவி இல்லாமலோ அல்லது செல்லாததோ ஆனால் இது வேலை செய்யாது!).'
|
||||
akismet_key = 'Wordpress API சாவி:'
|
||||
|
@ -1018,6 +1048,7 @@ update_instructions_hl = 'எப்படி புதுப்பி
|
|||
update_instructions = 'பொது மன்றத்தினை புதுப்பிக்கவேண்டுமானால், பொது மன்றத்தினை செயலிழக்கச்செய்யுமாறு அறிவுறுத்தப்படுகிறது(பொது மன்றத்தினை செயல்பட வை எனற குறிகளை நீக்கு <a href="index.php?mode=admin&action=settings">forum settings</a>)'
|
||||
update_instructions = 'தற்போதைய பதிப்பை பெற <a href="http://mylittleforum.net/">mylittleforum.net</a>'
|
||||
update_instructions = 'ஸ்கிரிப்ட் பையை அவிழ்த்து,புதுப்பிப்பதற்கான கோப்பை "update" என்ற துணை உறையில் பார்க்கவும் மேலும் இந்த கோப்பை உங்கள் சேவை மைய்யத்தின் "update" உறைக்கு நகற்த்துக.'
|
||||
update_instructions = '<!-- TODO -->Look for the according update file in the subfolder "update" and upload this file into the folder "update" on your server'
|
||||
update_instructions = '<!-- TODO -->Look for the file "VERSION" in the subfolder "config" and upload this file into the folder "config" on your server'
|
||||
update_instructions = 'இந்த பக்கங்களை மீண்டும் கொண்டுவந்தால் புதுப்பிப்பதற்கான கோப்பை கீழே பார்க்கலாம்'
|
||||
update_instructions = 'கோப்பின்மீது அழுத்தவும் மேலும் வரக்கூடிய உத்தறவுகளை பின்பற்றவும்'
|
||||
|
@ -1031,6 +1062,7 @@ update_submit = 'சரி - புதுப்பிக்க
|
|||
update_successful = 'டேடாபேஸ் புதுப்பிக்கமுடியவில்லை.'
|
||||
update_items_note = 'தயவு செய்து இந்த புதிய பொது மன்றத்தின் (பதிப்பு [version]) உறை / கோப்பை உங்கள் சேவை மைய்யத்திற்கு நகற்த்துக :'
|
||||
update_download = 'நீங்கள் இன்னும் இந்த கோப்புகளை பொறவில்லையேல் அநுகவும் [[here]] .'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = 'பதில் "[original_subject]"'
|
||||
|
@ -1075,6 +1107,7 @@ admin_email_text_reply = """பதிலளித்தவர் [name]
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'பொது மன்றத்தின் விண்ணப்ப படிவம்'
|
||||
admin_reg_user_email_text = """வணக்கம் [name],
|
||||
|
||||
பொது மன்றத்திற்கு வருக!
|
||||
|
||||
பொது மன்றத்தினுள் நுழைவதற்கான விஷயங்கள்:
|
||||
|
@ -1091,6 +1124,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
admin_activate_user_email_subj = 'Forum registration'
|
||||
admin_activate_user_email_text = """Hi [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
Link to log in directly:
|
||||
|
@ -1100,6 +1134,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
new_user_email_sj = 'பொது மன்றத்தின் விண்ணப்ப படிவம்'
|
||||
new_user_email_txt = """வணக்கம் [name],
|
||||
|
||||
welcome to the forum!
|
||||
|
||||
உங்களுடைய கணக்கை தூண்ட இந்த இணைப்பை பின்பற்றவும்:
|
||||
|
@ -1108,6 +1143,7 @@ welcome to the forum!
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'புதிய சந்தாதாரர்'
|
||||
new_user_notif_txt = """வணக்கம் [recipient],
|
||||
|
||||
புதிய சந்தாதாரர் பொது மன்றத்தில் சேர்ந்திருக்கிறார்.
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
மின் அஞ்சல் : [email]
|
||||
|
@ -1116,6 +1152,7 @@ new_user_notif_txt = """வணக்கம் [recipient],
|
|||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_txt_locked = """வணக்கம் [recipient],
|
||||
|
||||
புதிய சந்தாதாரர் பொது மன்றத்தில் சேர்ந்திருக்கிறார்.
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
மின் அஞ்சல்: [email]
|
||||
|
@ -1125,18 +1162,22 @@ new_user_notif_txt_locked = """வணக்கம் [recipient],
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'மின் அஞ்சல் விலாசம் மாற்றப்பட்டவுடன் கணக்கு பயன்பாட்டுக்கு வறும்'
|
||||
edit_address_email_txt = """வணக்கம் [name],
|
||||
|
||||
மின் அஞ்சல விலாசம் மாற்றப்படவேண்டும். மேலும் நீங்கள் இந்த [activate_link] இணைப்பை பயன்படுத்தி உங்கள் கணக்கை மீண்டும் புதுப்பிக்கவும்:
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'புதிய மறைவு சொல்லுக்கான வேண்டுகோள்'
|
||||
pwf_activating_email_txt = """வணக்கம் [name],
|
||||
|
||||
புதிய மறைவு சொல்லுக்கான வேண்டுகோளினால், இந்த மின் அஞ்சல் பொது மன்றத்திலிருந்து அநுப்பப்பட்டது ([forum_address]).தயவு செய்து கீழுள்ள இணைப்பை அழுத்தி உங்களின் வேண்டுகோளை உறுதிசெய்க. இந்த இணைப்பை பின்தொடர்ந்தால்,உங்களுக்கான புதிய மறைவு சொல் உருவாக்கப்பட்டு அநுப்பப்படும். தவறுதலாக இந்த மின் அஞ்சல் அநுப்பப்பட்டிறுக்குமேயானால் தயவு செய்து புறக்கணிக்கவும்.
|
||||
|
||||
Link to confirm your request:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'பொது மன்றத்திற்கான புதிய சந்தாதாரின் விபரம்'
|
||||
new_pw_email_txt = """வணக்கம் [name],
|
||||
|
||||
புதிய சந்தாதாரின் விபரம்:
|
||||
|
||||
பயன்படுத்துபவர் பெயர்: [name]
|
||||
|
@ -1226,5 +1267,6 @@ error_db_inexistent = 'கு்றிப்பிட்ட டே
|
|||
error_sql_file_doesnt_exist = 'நிறுவுதலுக்கு தேவையான SQL கோப்பு (install.sql) காணவில்லை'
|
||||
error_overwrite_config_file = 'கோப்பின் மறுபடியும் எழுத அநுமதி இல்லை <code>config/db_settings.php</code> (set CHMOD 666, current is [CHMOD])'
|
||||
error_sql = 'SQL தவறு'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'ஆம் - பொது மன்றத்தை நிறுவுக'
|
||||
error_conf_pw = 'நிர்வாகியின் மறைவு சொல்ல் பொறுந்தவில்லை'
|
||||
|
|
|
@ -1,12 +1,29 @@
|
|||
################################################################################
|
||||
# Turkish language file for my little forum 2.4 #
|
||||
# Turkish language file for my little forum 2 #
|
||||
#------------------------------------------------------------------------------#
|
||||
# - strings to display on the site or an e-mail are enclosed in single quotes #
|
||||
# - don't modify or translate the section names like "[general]" or "[entry]"! #
|
||||
# - placeholders in square brackets (e.g. "[name]") will be replaced by values #
|
||||
# automatically - don't modify or translate them! #
|
||||
# - words in double square brackets (e.g. "click [[here]]") are transformed #
|
||||
# into hyperlinks - should be translated (e.g. "haga click [[aquí]]") #
|
||||
# - strings that span more than one line (E-Mail texts) are enclosed in triple #
|
||||
# quotes (e.g. """Hi, #
|
||||
# how are you?""") #
|
||||
# - more details about the file format: #
|
||||
# http://www.smarty.net/docs/en/config.files.tpl #
|
||||
#------------------------------------------------------------------------------#
|
||||
# #
|
||||
# Translated by Özgür Kazanççı < ozgur dot kazancci at info dot uvt dot ro > #
|
||||
# 2010-02-08 #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
[default]
|
||||
language = tr
|
||||
language_code = 'tr'
|
||||
language_name_system = 'turkish'
|
||||
language_name_own = 'türkçe'
|
||||
charset = utf-8
|
||||
#locale = tr_TR.utf8
|
||||
#locale = tr_TR
|
||||
|
@ -14,8 +31,8 @@ charset = utf-8
|
|||
locale_charset = utf-8
|
||||
word_delimiters = ' '
|
||||
dir = ltr
|
||||
time_format = d-m-Y, H:i
|
||||
time_format_full = l, F d, Y, H:i
|
||||
time_format = 'dd.MM.YYYY, HH:mm'
|
||||
time_format_full = 'dd MMMM YYYY, HH:mm'
|
||||
forum_time = 'Forum zamanı: [time]'
|
||||
forum_time_with_time_zone = 'Forum zamanı: [time] ([time_zone])'
|
||||
unknown_user = 'bilinmeyen'
|
||||
|
@ -40,8 +57,8 @@ next_page_link = 'Sonraki sayfa »'
|
|||
previous_page_link = '« Önceki sayfa'
|
||||
next_page_link_title = 'sonraki sayfa'
|
||||
previous_page_link_title = 'önceki sayfa'
|
||||
posted_by = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[time]'
|
||||
posted_by_location = 'gönderen: <strong>[name]</strong>[email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>[time]'
|
||||
posted_by = 'gönderen: [name][email_hp]<span class="interpunction">, </span>'
|
||||
posted_by_location = 'gönderen: [name][email_hp]<span class="interpunction">, </span>[location]<span class="interpunction">, </span>'
|
||||
original_posting_linktitle = 'asıl [name] orijinal izlenime geçmek için tıklayınız'
|
||||
error_headline = 'Hata!'
|
||||
no_authorisation = 'Yetki yok!'
|
||||
|
@ -95,7 +112,7 @@ expand_fold_thread_linktitle = 'Konuları genişlet / katla'
|
|||
category_title = 'Kategori'
|
||||
all_categories = 'Tüm kategoriler'
|
||||
my_category_selection = 'Seçimim'
|
||||
page_title = 'Sayfa'
|
||||
browse_page_title = 'Sayfa'
|
||||
thread_entry_back_link = 'Forum ana sayfasına geri dön'
|
||||
thread_entry_back_title = 'Forum ana sayfası'
|
||||
reply_link = 'Yanıt gönder'
|
||||
|
@ -189,6 +206,7 @@ open_whole_thread = 'Başlığı tamamiyle aç'
|
|||
change_category_link = '"[category]" kategorisindeki mesajları göster'
|
||||
mark_linktitle = 'Mesajı işaretle'
|
||||
unmark_linktitle = 'Mesaj işaretini kaldır'
|
||||
unclassified_linktitle = '<!-- TODO -->Posting is unclassified'
|
||||
delete_marked_link = 'İşaretli mesajları sil'
|
||||
manage_postings_link = 'Mesajları düzenle'
|
||||
non_activated_users_link = '<!-- TODO -->[counter] non-activated user(s)'
|
||||
|
@ -203,6 +221,8 @@ more_smilies_label = 'daha...'
|
|||
more_smilies_title = 'daha fazla simgeler'
|
||||
close = 'kapat'
|
||||
no_postings_user = 'Gönderim yok.'
|
||||
search_term = '<!-- TODO -->Search term'
|
||||
search_category = '<!-- TODO -->Search in category'
|
||||
search_submit_button = 'Ara'
|
||||
search_fulltext = 'tüm metin'
|
||||
search_tags = 'konular'
|
||||
|
@ -252,7 +272,7 @@ user_locked_message = 'Hesabınız şimdilik kilitli.'
|
|||
forum_disabled = 'Forum şimdilik aktif değil.'
|
||||
cookie_deleted = 'Çerezler silindi.'
|
||||
ajax_preview_title = 'Önizleme göster'
|
||||
bbcode_link_link = 'Metnin bağlantısı (opsiyonel):'
|
||||
bbcode_link_text = 'Metnin bağlantısı (opsiyonel):'
|
||||
bbcode_link_url = 'Link bağlantısı (URL):'
|
||||
bbcode_image_url = 'Resim adresi (URL):'
|
||||
bbcode_tex_code = '<!-- TODO -->TeX formula (e.g. \sqrt{x}):'
|
||||
|
@ -298,7 +318,7 @@ error_bookmark_word_too_long = '<!-- TODO -->The word "[word]" is too long'
|
|||
error_bookmark_tags_limit_reached = '<!-- TODO -->Tags limit reached for bookmark'
|
||||
|
||||
[entry]
|
||||
edited_by = '[name] tarafından, [time] tarihinde düzenlendi'
|
||||
edited_by = '[name] tarafından<span class="interpunction">, </span>'
|
||||
tags_marking = 'Konular:'
|
||||
one_view = '1 kez okundu'
|
||||
several_views = '[views] kez okundu'
|
||||
|
@ -355,6 +375,8 @@ subject_marking = 'Konu:'
|
|||
message_marking = 'Mesaj:'
|
||||
tags_marking = 'Konular:'
|
||||
tags_note = '(opsiyonel, virgül ile ayrılmış biçimde)'
|
||||
bbcode_help_heading = '<!-- TODO -->Formatting help'
|
||||
bbcode_help_skip_link = '<!-- TODO -->skip to input'
|
||||
bbcode_bold_label = 'koyu'
|
||||
bbcode_bold_title = 'Metni koyu biçimlendir'
|
||||
bbcode_bold_instruction = '[b]bold text[/b]'
|
||||
|
@ -387,9 +409,9 @@ bbcode_image_instr_right = '<!-- TODO -->right: [img=right]http://example
|
|||
bbcode_image_label_thumb = '<!-- TODO -->thumbnail'
|
||||
bbcode_image_instr_thumb = '<!-- TODO -->thumbnail: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_left = '<!-- TODO -->thumbnail left'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_left = '<!-- TODO -->thumbnail left: [img=thumbnail-left]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_label_thumb_right = '<!-- TODO -->thumbnail right'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail]http://example.com/image.jpg[/img]'
|
||||
bbcode_image_instr_thumb_right = '<!-- TODO -->thumbnail right: [img=thumbnail-right]http://example.com/image.jpg[/img]'
|
||||
bbcode_upload_label = 'yükle'
|
||||
bbcode_upload_title = 'Resim yükle'
|
||||
bbcode_upload_instruction = 'Resim yükle …'
|
||||
|
@ -546,6 +568,7 @@ pwf_username = 'Kullanıcı:'
|
|||
pwf_email = 'E-posta:'
|
||||
|
||||
[user]
|
||||
user_list_header = 'Kullanıcı listesi'
|
||||
user_name = 'Kullanıcı'
|
||||
user_type = 'Tip'
|
||||
admin = 'Yönetici'
|
||||
|
@ -614,7 +637,7 @@ edit_user_contacting_registered = '<!-- TODO -->Restricted to registered users'
|
|||
edit_user_contacting_public = '<!-- TODO -->Unrestricted'
|
||||
edit_user_real_name = 'İsim:'
|
||||
edit_user_gender = 'Cinsiyet:'
|
||||
gender_not_specified = 'not specified'
|
||||
gender_not_specified = 'belirtilmemiş'
|
||||
male = 'erkek'
|
||||
female = 'bayan'
|
||||
edit_user_birthday = 'Doğum tarihi:'
|
||||
|
@ -645,7 +668,7 @@ admin_mod_notif_register = 'yeni bir kullanıcı kayıt olduğu zaman'
|
|||
userdata_submit_button = 'Tamam - Kaydet'
|
||||
profile_saved = 'Profil kaydedildi'
|
||||
pw_changed = 'Şifre değiştirildi'
|
||||
remove_user_account = '<!-- TODO -->Delete account'
|
||||
remove_user_account = 'Hesap silme'
|
||||
remove_user_account_link = '<!-- TODO -->Delete your user account'
|
||||
|
||||
[remove_user_account]
|
||||
|
@ -684,6 +707,7 @@ register_user_email = 'E-posta:'
|
|||
register_pw = 'Şifre:'
|
||||
register_honeypot_field = '<!-- TODO -->Leave this field empty:'
|
||||
register_only_by_admin = 'Kullanıcılar sadece forum yöneticileri tarafından kayıt edilebilir.'
|
||||
register_link_to_login = '<!-- TODO -->Go to login'
|
||||
registered = 'Hesabınız kaydedildi ve <strong>[var]</strong> adresine aktivasyon iletisi gönderildi. Lütfen hesabınızı en geç bir gün içinde aktif ediniz.'
|
||||
registered_send_error = 'Hesabınız kaydedildi fakat aktivasyon anahtarı gönderilemedi. (mail sunucusu mevcut değil). Lütfen forum yöneticisiyle irtibata geçip hesabınızı manüel olarak aktif ettiriniz.'
|
||||
activation_failed = 'Hesabın aktivasyonu başarısız.'
|
||||
|
@ -732,11 +756,11 @@ spam_protection_link = 'Spam koruma'
|
|||
update_link = 'Güncelleme'
|
||||
reset_uninstall_link = 'Forumu sıfırla veya kaldır'
|
||||
upload_administr_link = '<!-- TODO -->manage uploads'
|
||||
releases_info_header = '<!-- TODO -->Actual available release'
|
||||
releases_info_header = '<!-- TODO -->Currently available release'
|
||||
releases_list_link = '<!-- TODO -->Check the releases list for the actual available version.'
|
||||
warning_header = '<!-- TODO -->Warning'
|
||||
warning_install_script_exists = '<!-- TODO -->For security reasons, it is recommended to delete (or rename) the <code>install/index.php</code> script!'
|
||||
actual_installed_version_header = '<!-- TODO -->Actual installed version'
|
||||
actual_installed_version_header = '<!-- TODO -->Currently installed version'
|
||||
actual_installed_version = '<!-- TODO -->The version number of your installation: <strong>[current_version_string]</strong>'
|
||||
|
||||
# forum settings:
|
||||
|
@ -847,7 +871,7 @@ rss_feed = 'RSS İçeriği'
|
|||
rss_feed_desc = 'RSS İçeriği aktif edilsin mi (sadece eğer erişim izni "herkes" için ise)?'
|
||||
rss_feed_enabled = 'RSS İçeriği aktif'
|
||||
forum_enabled_marking = 'Forum aktif'
|
||||
forum_enabled_desc = Forumu erişilemez (kapalı) yapabilmek için veya foruma sistem güncellemesi yapmadan önce bu seçeneği kaldırınız. Yönetici olarak giriş yapanlar için halen etkin olacak.'
|
||||
forum_enabled_desc = 'Forumu erişilemez (kapalı) yapabilmek için veya foruma sistem güncellemesi yapmadan önce bu seçeneği kaldırınız. Yönetici olarak giriş yapanlar için halen etkin olacak.'
|
||||
forum_enabled = 'forum aktif'
|
||||
forum_disabled_message = 'Erişilemez (kapalı) forumlar için yayınlanacak mesaj:'
|
||||
category_name = 'Kategori'
|
||||
|
@ -905,6 +929,7 @@ delete_page_submit = 'Tamam - Sayfayı sil'
|
|||
error_no_page_title = 'Başlık yok'
|
||||
|
||||
# user administration:
|
||||
user_list_header = 'Kullanıcı listesi'
|
||||
user_name_empty = 'Kullanıcı adı girilmedi'
|
||||
num_registerd_users = '[number] kayıtlı kullanıcılar'
|
||||
user_id = 'ID'
|
||||
|
@ -954,9 +979,18 @@ no_users_in_selection = 'Belirli bir kullanıcı yok'
|
|||
# upload management
|
||||
upload_administration = '<!-- TODO -->Upload management'
|
||||
mark_upload_for_removal = '<!-- TODO -->mark for removal'
|
||||
mark_upload_for_managing = '<!-- TODO -->mark for managing'
|
||||
no_uploads_found = '<!-- TODO -->Found no uploaded files.'
|
||||
delete_upload_confirmation = '<!-- TODO -->Are you sure you want to delete this upload?'
|
||||
delete_uploads_confirmation = '<!-- TODO -->Are you sure you want to delete the following uploads?'
|
||||
check_for_unrecorded_uploads = '<!-- TODO -->record uploads'
|
||||
check_for_unrecorded_uploads_desc = '<!-- TODO -->Check whether there are any uploads that are not yet included in the list of uploads. If any are found, they are entered in the list.'
|
||||
upload_add_db_entry_button = '<!-- TODO -->record to database'
|
||||
upload_database_entry_alt = '<!-- TODO -->There is a database entry for this image'
|
||||
upload_database_no_entry_alt = '<!-- TODO -->There is no database entry for this image'
|
||||
upload_filter_not_managed_images ='<!-- TODO -->not managed images'
|
||||
upload_filter_managed_images = '<!-- TODO -->managed images'
|
||||
upload_filter_all_images = '<!-- TODO -->all images'
|
||||
|
||||
# spam protection:
|
||||
captcha = 'CAPTCHA'
|
||||
|
@ -979,9 +1013,6 @@ b8_spam_probability_threshold = '<!-- TODO -->Threshold to classify spam. Vali
|
|||
stop_forum_spam = 'Stop Forum Spam'
|
||||
stop_forum_spam_desc = '<!-- TODO --><a href="http://www.stopforumspam.com/">Stop Forum Spam</a> spam protection'
|
||||
stop_forum_spam_enable = '<!-- TODO -->enable Stop Forum Spam'
|
||||
bad_behavior = 'Kötü Eylem'
|
||||
bad_behavior_desc = '<a href="http://bad-behavior.ioerror.us/">Kötü Eylem</a> spam koruması.'
|
||||
bad_behavior_enable = 'Kötü Eylem aktif'
|
||||
akismet = 'Akismet'
|
||||
akismet_desc = '<a href="http://akismet.com/">Akismet</a> spam koruma servisi. Kullanabilmek için <a href="http://wordpress.com/api-keys/">Wordpress API anahtarı gerekli</a> (Yanlış veya olmayan bir API anahtarıyla çalışamaz!).'
|
||||
akismet_key = 'Wordpress API Anahtarı:'
|
||||
|
@ -1035,6 +1066,7 @@ update_submit = 'Tamam - Güncelle'
|
|||
update_successful = 'Veritabanı başarıyla güncelleştirildi.'
|
||||
update_items_note = 'Lütfen şimdi yeni forum paketinin (version [version]) şu dosyalarını/klasörlerini sunucunuza yükleyin:'
|
||||
update_download = 'Eğer henüz bu dosyalara sahip değilseniz [[buradan]] yükleyebilirsiniz.'
|
||||
update_reenabling_notice = '<!--TODO-->Please be aware, that the forum is currently deactivated and you must reenable it in <a href="index.php?mode=admin&action=settings">the settings</a>.'
|
||||
|
||||
[emails]
|
||||
email_subject = '"[original_subject]" üzerine yanıt'
|
||||
|
@ -1079,6 +1111,7 @@ Gönderim bağlantısı (URL): [posting_address]
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
admin_reg_user_email_subj = 'Forum kaydı'
|
||||
admin_reg_user_email_text = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
Giriş yapabilmeniz için erişim bilgileriniz şöyledir:
|
||||
|
@ -1095,6 +1128,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
admin_activate_user_email_subj = 'Forum kaydı'
|
||||
admin_activate_user_email_text = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
Link to log in directly:
|
||||
|
@ -1104,6 +1138,7 @@ This is an automatically generated information message, please do not reply to t
|
|||
|
||||
new_user_email_sj = 'Forum kaydı'
|
||||
new_user_email_txt = """Merhaba [name],
|
||||
|
||||
foruma hoş geldiniz!
|
||||
|
||||
hesabınızı aktif etmek için lütfen aşağıdaki bağlantıyı takip edin:
|
||||
|
@ -1112,6 +1147,7 @@ hesabınızı aktif etmek için lütfen aşağıdaki bağlantıyı takip edin:
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_user_notif_sj = 'Yeni kullanıcı kaydı'
|
||||
new_user_notif_txt = """Merhaba [recipient],
|
||||
|
||||
foruma yeni bir kullanıcı abone oldu.
|
||||
Kullanıcı adı: [name]
|
||||
E-posta: [email]
|
||||
|
@ -1129,19 +1165,23 @@ E-posta: [email]
|
|||
This is an automatically generated information message, please do not reply to this email."""
|
||||
edit_address_email_sj = 'E-posta değişiminden sonra hesap aktivasyonu'
|
||||
edit_address_email_txt = """Merhaba [name],
|
||||
|
||||
e-posta adresiniz değişti. Hesabınızı aşağıdaki bağlantıya tıklayarak tekrar aktif etmelisiniz:
|
||||
[activate_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
pwf_activating_email_sj = 'Yeni parola talebi'
|
||||
pwf_activating_email_txt = """Merhaba [name],
|
||||
|
||||
bu e-posta, yeni bir parola talebinden dolayı ([forum_address]) forumundan gönderildi. Lütfen yeni parolanızın oluşturulması ve size gönderilmesi için aşağıdaki bağlantıya tıklayın. Eğer bu e-posta bilginiz dışında bir yanlışlıktan ötürü (sizden veya herhangi birinden) geldiyse önemsemeyin.
|
||||
|
||||
Talebinizi onaylamak için bağlantı:
|
||||
[activating_link]
|
||||
|
||||
This is an automatically generated information message, please do not reply to this email."""
|
||||
new_pw_email_sj = 'Yeni kullanıcı bilginiz'
|
||||
new_pw_email_txt = """Merhaba [name],
|
||||
|
||||
yeni kullanıcı bilgileriniz şöyledir:
|
||||
|
||||
Kullanıcı adı: [name]
|
||||
|
@ -1231,5 +1271,6 @@ error_db_inexistent = 'Belirtilen veritabanı bulunamadı - lütfen
|
|||
error_sql_file_doesnt_exist = 'Kuruluma ait SQL dosyası (install.sql) bulunamadı'
|
||||
error_overwrite_config_file = '<code>config/db_settings.php</code> dosyasına yazılamıyor. (dosyayı CHMOD 666 yapınız, mevcut ayar [CHMOD])'
|
||||
error_sql = 'SQL hatası'
|
||||
error_update_settings = '<!-- TODO -->Could not change the forum setting'
|
||||
forum_install_ok = 'Tamam - Forumu yükle'
|
||||
error_conf_pw = 'Yönetici şifreleri uyuşmuyor'
|
||||
|
|
|
@ -1,151 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
Bad Behavior - detects and blocks unwanted Web accesses
|
||||
Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Michael Hampton
|
||||
|
||||
Bad Behavior is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Please report any problems to bad . bots AT ioerror DOT us
|
||||
https://bad-behavior.ioerror.us/
|
||||
*/
|
||||
|
||||
define('BB2_CWD', dirname(__FILE__));
|
||||
|
||||
// Settings you can adjust for Bad Behavior.
|
||||
// Most of these are unused in non-database mode.
|
||||
// DO NOT EDIT HERE; instead make changes in settings.ini.
|
||||
// These settings are used when settings.ini is not present.
|
||||
$bb2_settings_defaults = array(
|
||||
'log_table' => 'bad_behavior',
|
||||
'display_stats' => false,
|
||||
'strict' => false,
|
||||
'verbose' => false,
|
||||
'logging' => true,
|
||||
'httpbl_key' => '',
|
||||
'httpbl_threat' => '25',
|
||||
'httpbl_maxage' => '30',
|
||||
'offsite_forms' => false,
|
||||
'reverse_proxy' => false,
|
||||
'reverse_proxy_header' => 'X-Forwarded-For',
|
||||
'reverse_proxy_addresses' => array(),
|
||||
);
|
||||
|
||||
// Bad Behavior callback functions.
|
||||
|
||||
// Return current time in the format preferred by your database.
|
||||
function bb2_db_date() {
|
||||
return gmdate('Y-m-d H:i:s'); // Example is MySQL format
|
||||
}
|
||||
|
||||
// Return affected rows from most recent query.
|
||||
function bb2_db_affected_rows() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Escape a string for database usage
|
||||
function bb2_db_escape($string) {
|
||||
// return mysql_real_escape_string($string);
|
||||
return $string; // No-op when database not in use.
|
||||
}
|
||||
|
||||
// Return the number of rows in a particular query.
|
||||
function bb2_db_num_rows($result) {
|
||||
if ($result !== FALSE)
|
||||
return count($result);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Run a query and return the results, if any.
|
||||
// Should return FALSE if an error occurred.
|
||||
// Bad Behavior will use the return value here in other callbacks.
|
||||
function bb2_db_query($query) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Return all rows in a particular query.
|
||||
// Should contain an array of all rows generated by calling mysql_fetch_assoc()
|
||||
// or equivalent and appending the result of each call to an array.
|
||||
function bb2_db_rows($result) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Create the SQL query for inserting a record in the database.
|
||||
// See example for MySQL elsewhere.
|
||||
function bb2_insert($settings, $package, $key)
|
||||
{
|
||||
return "--";
|
||||
}
|
||||
|
||||
// Return emergency contact email address.
|
||||
function bb2_email() {
|
||||
return "example@example.com"; // You need to change this.
|
||||
}
|
||||
|
||||
// retrieve whitelist
|
||||
function bb2_read_whitelist() {
|
||||
return @parse_ini_file(dirname(BB2_CORE) . "/whitelist.ini");
|
||||
}
|
||||
|
||||
// retrieve settings from database
|
||||
// Settings are hard-coded for non-database use
|
||||
function bb2_read_settings() {
|
||||
global $bb2_settings_defaults;
|
||||
$settings = @parse_ini_file(dirname(__FILE__) . "/settings.ini");
|
||||
if (!$settings) $settings = array();
|
||||
return @array_merge($bb2_settings_defaults, $settings);
|
||||
}
|
||||
|
||||
// write settings to database
|
||||
function bb2_write_settings($settings) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// installation
|
||||
function bb2_install() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Screener
|
||||
// Insert this into the <head> section of your HTML through a template call
|
||||
// or whatever is appropriate. This is optional we'll fall back to cookies
|
||||
// if you don't use it.
|
||||
function bb2_insert_head() {
|
||||
global $bb2_javascript;
|
||||
echo $bb2_javascript;
|
||||
}
|
||||
|
||||
// Display stats? This is optional.
|
||||
function bb2_insert_stats($force = false) {
|
||||
$settings = bb2_read_settings();
|
||||
|
||||
if ($force || $settings['display_stats']) {
|
||||
$blocked = bb2_db_query("SELECT COUNT(*) FROM " . $settings['log_table'] . " WHERE `key` NOT LIKE '00000000'");
|
||||
if ($blocked !== FALSE) {
|
||||
echo sprintf('<p><a href="https://bad-behavior.ioerror.us/">%1$s</a> %2$s <strong>%3$s</strong> %4$s</p>', __('Bad Behavior'), __('has blocked'), $blocked[0]["COUNT(*)"], __('access attempts in the last 7 days.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return the top-level relative path of wherever we are (for cookies)
|
||||
// You should provide in $url the top-level URL for your site.
|
||||
function bb2_relative_path() {
|
||||
//$url = parse_url(get_bloginfo('url'));
|
||||
//return $url['path'] . '/';
|
||||
return '/';
|
||||
}
|
||||
|
||||
// Calls inward to Bad Behavor itself.
|
||||
require_once(BB2_CWD . "/bad-behavior/core.inc.php");
|
||||
bb2_install(); // FIXME: see above
|
||||
|
||||
bb2_start(bb2_read_settings());
|
|
@ -1,65 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Functions called when a request has been denied
|
||||
// This part can be gawd-awful slow, doesn't matter :)
|
||||
|
||||
require_once(BB2_CORE . "/responses.inc.php");
|
||||
|
||||
function bb2_housekeeping($settings, $package)
|
||||
{
|
||||
if (!$settings['logging']) return;
|
||||
|
||||
// FIXME Yes, the interval's hard coded (again) for now.
|
||||
$query = "DELETE FROM `" . $settings['log_table'] . "` WHERE `date` < DATE_SUB('" . bb2_db_date() . "', INTERVAL 7 DAY)";
|
||||
bb2_db_query($query);
|
||||
|
||||
// Waste a bunch more of the spammer's time, sometimes.
|
||||
if (rand(1,1000) == 1) {
|
||||
$query = "OPTIMIZE TABLE `" . $settings['log_table'] . "`";
|
||||
bb2_db_query($query);
|
||||
}
|
||||
}
|
||||
|
||||
function bb2_display_denial($settings, $package, $key, $previous_key = false)
|
||||
{
|
||||
define('DONOTCACHEPAGE', true); // WP Super Cache
|
||||
if (!$previous_key) $previous_key = $key;
|
||||
if ($key == "e87553e1") {
|
||||
// FIXME: lookup the real key
|
||||
}
|
||||
// Create support key
|
||||
$ip = explode(".", $package['ip']);
|
||||
$ip_hex = "";
|
||||
foreach ($ip as $octet) {
|
||||
$ip_hex .= str_pad(dechex($octet), 2, 0, STR_PAD_LEFT);
|
||||
}
|
||||
$support_key = implode("-", str_split("$ip_hex$key", 4));
|
||||
|
||||
// Get response data
|
||||
$response = bb2_get_response($previous_key);
|
||||
header("HTTP/1.1 " . $response['response'] . " Bad Behavior");
|
||||
header("Status: " . $response['response'] . " Bad Behavior");
|
||||
$request_uri = $_SERVER["REQUEST_URI"];
|
||||
if (!$request_uri) $request_uri = $_SERVER['SCRIPT_NAME']; // IIS
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<!--< html xmlns="http://www.w3.org/1999/xhtml">-->
|
||||
<head>
|
||||
<title>HTTP Error <?php echo $response['response']; ?></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Error <?php echo $response['response']; ?></h1>
|
||||
<p>We're sorry, but we could not fulfill your request for
|
||||
<?php echo htmlspecialchars($request_uri) ?> on this server.</p>
|
||||
<p><?php echo $response['explanation']; ?></p>
|
||||
<p>Your technical support key is: <strong><?php echo $support_key; ?></strong></p>
|
||||
<p>You can use this key to <a href="https://www.ioerror.us/bb2-support-key?key=<?php echo $support_key; ?>">fix this problem yourself</a>.</p>
|
||||
<p>If you are unable to fix the problem yourself, please contact <a href="mailto:<?php echo htmlspecialchars(str_replace("@", "+nospam@nospam.", bb2_email())); ?>"><?php echo htmlspecialchars(str_replace("@", " at ", bb2_email())); ?></a> and be sure to provide the technical support key shown above.</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
function bb2_log_denial($settings, $package, $key, $previous_key=false)
|
||||
{
|
||||
if (!$settings['logging']) return;
|
||||
bb2_db_query(bb2_insert($settings, $package, $key));
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Look up address on various blackhole lists.
|
||||
// These should not be used for GET requests under any circumstances!
|
||||
// FIXME: Note that this code is no longer in use
|
||||
function bb2_blackhole($package) {
|
||||
// Can't use IPv6 addresses yet
|
||||
if (@is_ipv6($package['ip'])) return false;
|
||||
|
||||
// Workaround for "MySQL server has gone away"
|
||||
bb2_db_query("SET @@session.wait_timeout = 90");
|
||||
|
||||
// Only conservative lists
|
||||
$bb2_blackhole_lists = array(
|
||||
"sbl-xbl.spamhaus.org", // All around nasties
|
||||
// "dnsbl.sorbs.net", // Old useless data.
|
||||
// "list.dsbl.org", // Old useless data.
|
||||
// "dnsbl.ioerror.us", // Bad Behavior Blackhole
|
||||
);
|
||||
|
||||
// Things that shouldn't be blocked, from aggregate lists
|
||||
$bb2_blackhole_exceptions = array(
|
||||
"sbl-xbl.spamhaus.org" => array("127.0.0.4"), // CBL is problematic
|
||||
"dnsbl.sorbs.net" => array("127.0.0.10",), // Dynamic IPs only
|
||||
"list.dsbl.org" => array(),
|
||||
"dnsbl.ioerror.us" => array(),
|
||||
);
|
||||
|
||||
// Check the blackhole lists
|
||||
$ip = $package['ip'];
|
||||
$find = implode('.', array_reverse(explode('.', $ip)));
|
||||
foreach ($bb2_blackhole_lists as $dnsbl) {
|
||||
$result = gethostbynamel($find . "." . $dnsbl . ".");
|
||||
if (!empty($result)) {
|
||||
// Got a match and it isn't on the exception list
|
||||
$result = @array_diff($result, $bb2_blackhole_exceptions[$dnsbl]);
|
||||
if (!empty($result)) {
|
||||
return '136673cd';
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_httpbl($settings, $package) {
|
||||
// Can't use IPv6 addresses yet
|
||||
if (@is_ipv6($package['ip'])) return false;
|
||||
|
||||
if (@!$settings['httpbl_key']) return false;
|
||||
|
||||
// Workaround for "MySQL server has gone away"
|
||||
bb2_db_query("SET @@session.wait_timeout = 90");
|
||||
|
||||
$find = implode('.', array_reverse(explode('.', $package['ip'])));
|
||||
$result = gethostbynamel($settings['httpbl_key'].".${find}.dnsbl.httpbl.org.");
|
||||
if (!empty($result)) {
|
||||
$ip = explode('.', $result[0]);
|
||||
if ($ip[0] == 127 && ($ip[3] & 7) && $ip[2] >= $settings['httpbl_threat'] && $ip[1] <= $settings['httpbl_maxage']) {
|
||||
return '2b021b1f';
|
||||
}
|
||||
// Check if search engine
|
||||
if ($ip[3] == 0) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,195 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_blacklist($package) {
|
||||
|
||||
// Blacklisted user agents
|
||||
// These user agent strings occur at the beginning of the line.
|
||||
$bb2_spambots_0 = array(
|
||||
"-", // brute force password attempts, malicious botnet
|
||||
"8484 Boston Project", // video poker/porn spam
|
||||
"ArchiveTeam", // ignores robots.txt and hammers server
|
||||
"adwords", // referrer spam
|
||||
"autoemailspider", // spam harvester
|
||||
"blogsearchbot-martin", // from honeypot
|
||||
"BrowserEmulator/", // open proxy software
|
||||
"CherryPicker", // spam harvester
|
||||
"core-project/", // FrontPage extension exploits
|
||||
"Diamond", // delivers spyware/adware
|
||||
"Digger", // spam harvester
|
||||
"ecollector", // spam harvester
|
||||
"EmailCollector", // spam harvester
|
||||
"Email Siphon", // spam harvester
|
||||
"EmailSiphon", // spam harvester
|
||||
"Forum Poster", // forum spambot
|
||||
"grub crawler", // misc comment/email spam
|
||||
"HttpProxy", // misc comment/email spam
|
||||
"Internet Explorer", // XMLRPC exploits seen
|
||||
"ISC Systems iRc", // spam harvester
|
||||
"Jakarta Commons", // customised spambots
|
||||
"Java 1.", // unidentified robots
|
||||
"Java/1.", // unidentified robots
|
||||
"libwww-perl", // unidentified robots
|
||||
"LWP", // unidentified robots
|
||||
"lwp", // unidentified robots
|
||||
"Microsoft Internet Explorer/", // too old; assumed robot
|
||||
"Microsoft URL", // unidentified robots
|
||||
"Missigua", // spam harvester
|
||||
"MJ12bot/v1.0.8", // malicious botnet
|
||||
"Morfeus", // vulnerability scanner
|
||||
"Movable Type", // customised spambots
|
||||
// msnbot is using this fake user agent string now
|
||||
//"Mozilla ", // malicious software
|
||||
"Mozilla/0", // malicious software
|
||||
"Mozilla/1", // malicious software
|
||||
"Mozilla/2", // malicious software
|
||||
"Mozilla/3", // malicious software
|
||||
"Mozilla/4.0(", // from honeypot
|
||||
"Mozilla/4.0+(compatible;+", // suspicious harvester
|
||||
"Mozilla/4.0 (Hydra)", // brute force tool
|
||||
"MSIE", // malicious software
|
||||
"MVAClient", // automated hacking attempts
|
||||
"Nessus", // vulnerability scanner
|
||||
"NutchCVS", // unidentified robots
|
||||
"Nutscrape/", // misc comment spam
|
||||
"OmniExplorer", // spam harvester
|
||||
"Opera/9.64(", // comment spam bot
|
||||
"PMAFind", // vulnerability scanner
|
||||
"psycheclone", // spam harvester
|
||||
"PussyCat ", // misc comment spam
|
||||
"PycURL", // misc comment spam
|
||||
"Python-urllib", // commonly abused
|
||||
"revolt", // vulnerability scanner
|
||||
// WP 2.5 now has Flash; FIXME
|
||||
// "Shockwave Flash", // spam harvester
|
||||
"sqlmap/", // SQL injection
|
||||
"Super Happy Fun ", // spam harvester
|
||||
"TrackBack/", // trackback spam
|
||||
"user", // suspicious harvester
|
||||
"User Agent: ", // spam harvester
|
||||
"User-Agent: ", // spam harvester
|
||||
"w3af", // vulnerability scanner
|
||||
"WebSite-X Suite", // misc comment spam
|
||||
"Winnie Poh", // Automated Coppermine hacks
|
||||
"Wordpress", // malicious software
|
||||
"\"", // malicious software
|
||||
);
|
||||
|
||||
// These user agent strings occur anywhere within the line.
|
||||
$bb2_spambots = array(
|
||||
"\r", // A really dumb bot
|
||||
"<sc", // XSS exploit attempts
|
||||
"; Widows ", // misc comment/email spam
|
||||
": ;", // shellshock
|
||||
":;", // shellshock
|
||||
"a href=", // referrer spam
|
||||
"ArchiveBot", // ignores robots.txt and hammers server
|
||||
"Bad Behavior Test", // Add this to your user-agent to test BB
|
||||
"compatible ; MSIE", // misc comment/email spam
|
||||
"compatible-", // misc comment/email spam
|
||||
"DTS Agent", // misc comment/email spam
|
||||
"Email Extractor", // spam harvester
|
||||
"Firebird/", // too old; assumed robot
|
||||
"Gecko/2525", // revisit this in 500 years
|
||||
"grub-client", // search engine ignores robots.txt
|
||||
"hanzoweb", // very badly behaved crawler
|
||||
"Havij", // SQL injection tool
|
||||
"Indy Library", // misc comment/email spam
|
||||
"Ming Mong", // brute force tool
|
||||
"MSIE 7.0; Windows NT 5.2", // Cyveillance
|
||||
"Murzillo compatible", // comment spam bot
|
||||
".NET CLR 1)", // free poker, etc.
|
||||
".NET CLR1", // spam harvester
|
||||
"Netsparker", // vulnerability scanner
|
||||
"Nikto/", // vulnerability scanner
|
||||
"Perman Surfer", // old and very broken harvester
|
||||
"POE-Component-Client", // free poker, etc.
|
||||
"Teh Forest Lobster", // brute force tool
|
||||
"Turing Machine", // www.anonymizer.com abuse
|
||||
"Ubuntu/9.25", // comment spam bot
|
||||
"unspecified.mail", // stealth harvesters
|
||||
"User-agent: ", // spam harvester/splogger
|
||||
"WebaltBot", // spam harvester
|
||||
"WISEbot", // spam harvester
|
||||
"WISEnutbot", // spam harvester
|
||||
"Win95", // too old; assumed robot
|
||||
"Win98", // too old; assumed robot
|
||||
"WinME", // too old; assumed robot
|
||||
"Win 9x 4.90", // too old; assumed robot
|
||||
"Windows 3", // too old; assumed robot
|
||||
"Windows 95", // too old; assumed robot
|
||||
"Windows 98", // too old; assumed robot
|
||||
"Windows NT 4", // too old; assumed robot
|
||||
"Windows NT;", // too old; assumed robot
|
||||
//"Windows NT 4.0;)", // wikispam bot
|
||||
"Windows NT 5.0;)", // wikispam bot
|
||||
"Windows NT 5.1;)", // wikispam bot
|
||||
"Windows XP 5", // spam harvester
|
||||
"WordPress/4.01", // pingback spam
|
||||
"Xedant Human Emulator",// spammer script engine
|
||||
"ZmEu", // exploit scanner
|
||||
"\\\\)", // spam harvester
|
||||
);
|
||||
|
||||
// These are regular expression matches.
|
||||
$bb2_spambots_regex = array(
|
||||
"/^[A-Z]{10}$/", // misc email spam
|
||||
"/[bcdfghjklmnpqrstvwxz ]{8,}/",
|
||||
// "/(;\){1,2}$/", // misc spammers/harvesters
|
||||
"/MSIE.*Windows XP/", // misc comment spam
|
||||
"/MSIE [2345]/", // too old; assumed robot
|
||||
);
|
||||
|
||||
// Blacklisted URL strings
|
||||
// These strings are considered case-insensitive.
|
||||
$bb2_spambots_url = array(
|
||||
"0x31303235343830303536", // Havij
|
||||
"../", // path traversal
|
||||
"..\\", // path traversal
|
||||
"%60information_schema%60", // SQL injection probe
|
||||
"+%2F*%21", // SQL injection probe
|
||||
"%27--", // SQL injection
|
||||
"%27 --", // SQL injection
|
||||
"%27%23", // SQL injection
|
||||
"%27 %23", // SQL injection
|
||||
"benchmark%28", // SQL injection probe
|
||||
"insert+into+", // SQL injection
|
||||
"r3dm0v3", // SQL injection probe
|
||||
"select+1+from", // SQL injection probe
|
||||
"union+all+select", // SQL injection probe
|
||||
"union+select", // SQL injection probe
|
||||
"waitfor+delay+", // SQL injection probe
|
||||
"w00tw00t", // vulnerability scanner
|
||||
);
|
||||
|
||||
// Do not edit below this line.
|
||||
|
||||
@$ua = $package['headers_mixed']['User-Agent'];
|
||||
@$uri = $package['request_uri'];
|
||||
|
||||
foreach ($bb2_spambots_0 as $spambot) {
|
||||
$pos = strpos($ua, $spambot);
|
||||
if ($pos !== FALSE && $pos == 0) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots as $spambot) {
|
||||
if (strpos($ua, $spambot) !== FALSE) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots_regex as $spambot) {
|
||||
if (preg_match($spambot, $ua)) {
|
||||
return "17f4e8c8";
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($bb2_spambots_url as $spambot) {
|
||||
if (stripos($uri, $spambot) !== FALSE) {
|
||||
return "96c0bd29";
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Analyze user agents claiming to be Konqueror
|
||||
|
||||
function bb2_konqueror($package)
|
||||
{
|
||||
// CafeKelsa is a dev project at Yahoo which indexes job listings for
|
||||
// Yahoo! HotJobs. It identifies as Konqueror so we skip these checks.
|
||||
if (stripos($package['headers_mixed']['User-Agent'], "YahooSeeker/CafeKelsa") === FALSE || match_cidr($package['ip'], "209.73.160.0/19") === FALSE) {
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Lynx
|
||||
|
||||
function bb2_lynx($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Mozilla
|
||||
|
||||
function bb2_mozilla($package)
|
||||
{
|
||||
// First off, workaround for Google Desktop, until they fix it FIXME
|
||||
// Google Desktop fixed it, but apparently some old versions are
|
||||
// still out there. :(
|
||||
// Always check accept header for Mozilla user agents
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "Google Desktop") === FALSE && strpos($package['headers_mixed']['User-Agent'], "PLAYSTATION 3") === FALSE) {
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be MSIE
|
||||
|
||||
function bb2_msie($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
|
||||
// MSIE does NOT send "Windows ME" or "Windows XP" in the user agent
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "Windows ME") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Windows XP") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Windows 2000") !== FALSE || strpos($package['headers_mixed']['User-Agent'], "Win32") !== FALSE) {
|
||||
return "a1084bad";
|
||||
}
|
||||
|
||||
// MSIE does NOT send Connection: TE but Akamai does
|
||||
// Bypass this test when Akamai detected
|
||||
// The latest version of IE for Windows CE also uses Connection: TE
|
||||
if (!array_key_exists('Akamai-Origin-Hop', $package['headers_mixed']) && strpos($package['headers_mixed']['User-Agent'], "IEMobile") === FALSE && @preg_match('/\bTE\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "2b90f772";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Opera
|
||||
|
||||
function bb2_opera($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Safari
|
||||
|
||||
function bb2_safari($package)
|
||||
{
|
||||
if (!array_key_exists('Accept', $package['headers_mixed'])) {
|
||||
return "17566707";
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Analyze requests claiming to be from CloudFlare
|
||||
|
||||
require_once(BB2_CORE . "/roundtripdns.inc.php");
|
||||
|
||||
function bb2_cloudflare($package)
|
||||
{
|
||||
// Disabled due to https://bugs.php.net/bug.php?id=53092
|
||||
// if (!bb2_roundtripdns($package['cloudflare'], "cloudflare.com")) {
|
||||
// return '70e45496';
|
||||
// }
|
||||
return false;
|
||||
}
|
|
@ -1,152 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Enforce adherence to protocol version claimed by user-agent.
|
||||
|
||||
function bb2_protocol($settings, $package)
|
||||
{
|
||||
// We should never see Expect: for HTTP/1.0 requests
|
||||
if (array_key_exists('Expect', $package['headers_mixed']) && stripos($package['headers_mixed']['Expect'], "100-continue") !== FALSE && !strcmp($package['server_protocol'], "HTTP/1.0")) {
|
||||
return "a0105122";
|
||||
}
|
||||
|
||||
// Is it claiming to be HTTP/1.1? Then it shouldn't do HTTP/1.0 things
|
||||
// Blocks some common corporate proxy servers in strict mode
|
||||
if ($settings['strict'] && !strcmp($package['server_protocol'], "HTTP/1.1")) {
|
||||
if (array_key_exists('Pragma', $package['headers_mixed']) && strpos($package['headers_mixed']['Pragma'], "no-cache") !== FALSE && !array_key_exists('Cache-Control', $package['headers_mixed'])) {
|
||||
return "41feed15";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_cookies($settings, $package)
|
||||
{
|
||||
// Enforce RFC 2965 sec 3.3.5 and 9.1
|
||||
// The only valid value for $Version is 1 and when present,
|
||||
// the user agent MUST send a Cookie2 header.
|
||||
// First-gen Amazon Kindle is broken; Amazon has been notified 9/24/08
|
||||
// NOTE: RFC 2965 is obsoleted by RFC 6265. Current software MUST NOT
|
||||
// use Cookie2 or $Version in Cookie.
|
||||
if (@strpos($package['headers_mixed']['Cookie'], '$Version=0') !== FALSE && !array_key_exists('Cookie2', $package['headers_mixed']) && strpos($package['headers_mixed']['User-Agent'], "Kindle/") === FALSE) {
|
||||
return '6c502ff1';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function bb2_misc_headers($settings, $package)
|
||||
{
|
||||
@$ua = $package['headers_mixed']['User-Agent'];
|
||||
|
||||
if (!strcmp($package['request_method'], "POST") && empty($ua)) {
|
||||
return "f9f2b8b9";
|
||||
}
|
||||
|
||||
// Broken spambots send URLs with various invalid characters
|
||||
// Some broken browsers send the #vector in the referer field :(
|
||||
// Worse yet, some Javascript client-side apps do the same in
|
||||
// blatant violation of the protocol and good sense.
|
||||
// if (strpos($package['request_uri'], "#") !== FALSE || strpos($package['headers_mixed']['Referer'], "#") !== FALSE) {
|
||||
if ($settings['strict'] && strpos($package['request_uri'], "#") !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
// A pretty nasty SQL injection attack on IIS servers
|
||||
if (strpos($package['request_uri'], ";DECLARE%20@") !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
|
||||
// Range: field exists and begins with 0
|
||||
// Real user-agents do not start ranges at 0
|
||||
// NOTE: this blocks the whois.sc bot. No big loss.
|
||||
// Exceptions: MT (not fixable); LJ (refuses to fix; may be
|
||||
// blocked again in the future); Facebook
|
||||
if ($settings['strict'] && array_key_exists('Range', $package['headers_mixed']) && strpos($package['headers_mixed']['Range'], "=0-") !== FALSE) {
|
||||
if (strncmp($ua, "MovableType", 11) && strncmp($ua, "URI::Fetch", 10) && strncmp($ua, "php-openid/", 11) && strncmp($ua, "facebookexternalhit", 19)) {
|
||||
return "7ad04a8a";
|
||||
}
|
||||
}
|
||||
|
||||
// Content-Range is a response header, not a request header
|
||||
if (array_key_exists('Content-Range', $package['headers_mixed'])) {
|
||||
return '7d12528e';
|
||||
}
|
||||
|
||||
// Lowercase via is used by open proxies/referrer spammers
|
||||
// Exceptions: Clearswift uses lowercase via (refuses to fix;
|
||||
// may be blocked again in the future)
|
||||
if ($settings['strict'] &&
|
||||
array_key_exists('via', $package['headers']) &&
|
||||
strpos($package['headers']['via'],'Clearswift') === FALSE &&
|
||||
strpos($ua,'CoralWebPrx') === FALSE) {
|
||||
return "9c9e4979";
|
||||
}
|
||||
|
||||
// pinappleproxy is used by referrer spammers
|
||||
if (array_key_exists('Via', $package['headers_mixed'])) {
|
||||
if (stripos($package['headers_mixed']['Via'], "pinappleproxy") !== FALSE || stripos($package['headers_mixed']['Via'], "PCNETSERVER") !== FALSE || stripos($package['headers_mixed']['Via'], "Invisiware") !== FALSE) {
|
||||
return "939a6fbb";
|
||||
}
|
||||
}
|
||||
|
||||
// TE: if present must have Connection: TE
|
||||
// RFC 2616 14.39
|
||||
// Blocks Microsoft ISA Server 2004 in strict mode. Contact Microsoft
|
||||
// to obtain a hotfix.
|
||||
if ($settings['strict'] && array_key_exists('Te', $package['headers_mixed'])) {
|
||||
if (!preg_match('/\bTE\b/', $package['headers_mixed']['Connection'])) {
|
||||
return "582ec5e4";
|
||||
}
|
||||
}
|
||||
|
||||
if (array_key_exists('Connection', $package['headers_mixed'])) {
|
||||
// Connection: keep-alive and close are mutually exclusive
|
||||
if (preg_match('/\bKeep-Alive\b/i', $package['headers_mixed']['Connection']) && preg_match('/\bClose\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Close shouldn't appear twice
|
||||
if (preg_match('/\bclose,\s?close\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Keey-Alive shouldn't appear twice either
|
||||
if (preg_match('/\bkeep-alive,\s?keep-alive\b/i', $package['headers_mixed']['Connection'])) {
|
||||
return "a52f0448";
|
||||
}
|
||||
// Keep-Alive format in RFC 2068; some bots mangle these headers
|
||||
if (stripos($package['headers_mixed']['Connection'], "Keep-Alive: ") !== FALSE) {
|
||||
return "b0924802";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Headers which are not seen from normal user agents; only malicious bots
|
||||
if (array_key_exists('X-Aaaaaaaaaaaa', $package['headers_mixed']) || array_key_exists('X-Aaaaaaaaaa', $package['headers_mixed'])) {
|
||||
return "b9cc1d86";
|
||||
}
|
||||
// Proxy-Connection does not exist and should never be seen in the wild
|
||||
// http://lists.w3.org/Archives/Public/ietf-http-wg-old/1999JanApr/0032.html
|
||||
// http://lists.w3.org/Archives/Public/ietf-http-wg-old/1999JanApr/0040.html
|
||||
if ($settings['strict'] && array_key_exists('Proxy-Connection', $package['headers_mixed'])) {
|
||||
return "b7830251";
|
||||
}
|
||||
|
||||
if (array_key_exists('Referer', $package['headers_mixed'])) {
|
||||
// Referer, if it exists, must not be blank
|
||||
if (empty($package['headers_mixed']['Referer'])) {
|
||||
return "69920ee5";
|
||||
}
|
||||
|
||||
// Referer, if it exists, must contain a :
|
||||
// While a relative URL is technically valid in Referer, all known
|
||||
// legitimate user-agents send an absolute URL
|
||||
if (strpos($package['headers_mixed']['Referer'], ":") === FALSE) {
|
||||
return "45b35e30";
|
||||
}
|
||||
}
|
||||
|
||||
// "uk" is not a language (ISO 639) nor a country (ISO 3166)
|
||||
// oops, yes it is :( Please shoot any Ukrainian spammers you see.
|
||||
// if (preg_match('/\buk\b/', $package['headers_mixed']['Accept-Language'])) {
|
||||
// return "35ea7ffa";
|
||||
// }
|
||||
|
||||
return false;
|
||||
}
|
|
@ -1,236 +0,0 @@
|
|||
<?php if (!defined('BB2_CWD')) die("I said no cheating!");
|
||||
define('BB2_VERSION', "2.2.24");
|
||||
|
||||
// Bad Behavior entry point is bb2_start()
|
||||
// If you're reading this, you are probably lost.
|
||||
// Go read the bad-behavior-generic.php file.
|
||||
|
||||
define('BB2_CORE', dirname(__FILE__));
|
||||
|
||||
require_once(BB2_CORE . "/functions.inc.php");
|
||||
|
||||
// Kill 'em all!
|
||||
function bb2_banned($settings, $package, $key, $previous_key=false)
|
||||
{
|
||||
// Some spambots hit too hard. Slow them down a bit.
|
||||
sleep(2);
|
||||
|
||||
require_once(BB2_CORE . "/banned.inc.php");
|
||||
bb2_display_denial($settings, $package, $key, $previous_key);
|
||||
bb2_log_denial($settings, $package, $key, $previous_key);
|
||||
if (is_callable('bb2_banned_callback')) {
|
||||
bb2_banned_callback($settings, $package, $key);
|
||||
}
|
||||
// Penalize the spammers some more
|
||||
bb2_housekeeping($settings, $package);
|
||||
die();
|
||||
}
|
||||
|
||||
function bb2_approved($settings, $package)
|
||||
{
|
||||
// Dirk wanted this
|
||||
if (is_callable('bb2_approved_callback')) {
|
||||
bb2_approved_callback($settings, $package);
|
||||
}
|
||||
|
||||
// Decide what to log on approved requests.
|
||||
if (($settings['verbose'] && $settings['logging']) || empty($package['user_agent'])) {
|
||||
bb2_db_query(bb2_insert($settings, $package, "00000000"));
|
||||
}
|
||||
}
|
||||
|
||||
// If this is reverse-proxied or load balanced, obtain the actual client IP
|
||||
function bb2_reverse_proxy($settings, $headers_mixed)
|
||||
{
|
||||
// Detect if option is on when it should be off
|
||||
$header = uc_all($settings['reverse_proxy_header']);
|
||||
if (!array_key_exists($header, $headers_mixed)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$addrs = @array_reverse(preg_split("/[\s,]+/", $headers_mixed[$header]));
|
||||
// Skip our known reverse proxies and private addresses
|
||||
if (!empty($settings['reverse_proxy_addresses'])) {
|
||||
foreach ($addrs as $addr) {
|
||||
if (!match_cidr($addr, $settings['reverse_proxy_addresses']) && !is_rfc1918($addr)) {
|
||||
return $addr;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($addrs as $addr) {
|
||||
if (!is_rfc1918($addr)) {
|
||||
return $addr;
|
||||
}
|
||||
}
|
||||
}
|
||||
// If we got here, someone is playing a trick on us.
|
||||
return false;
|
||||
}
|
||||
|
||||
// FIXME: Bug #12. But this code doesn't currently work.
|
||||
function bb2_unpack_php_post_array($key, $value)
|
||||
{
|
||||
$unpacked = array();
|
||||
foreach ($value as $k => $v) {
|
||||
$i = $key. '[' . $k . ']';
|
||||
if (is_array($v))
|
||||
$v = bb2_unpack_php_post_array($i, $v);
|
||||
$unpacked[$i] = $v;
|
||||
}
|
||||
return $unpacked;
|
||||
}
|
||||
|
||||
// Let God sort 'em out!
|
||||
function bb2_start($settings)
|
||||
{
|
||||
// Gather up all the information we need, first of all.
|
||||
$headers = bb2_load_headers();
|
||||
// Postprocess the headers to mixed-case
|
||||
// TODO: get the world to stop using PHP as CGI
|
||||
$headers_mixed = array();
|
||||
foreach ($headers as $h => $v) {
|
||||
$headers_mixed[uc_all($h)] = $v;
|
||||
}
|
||||
|
||||
// IPv6 - IPv4 compatibility mode hack
|
||||
$_SERVER['REMOTE_ADDR'] = preg_replace("/^::ffff:/", "", $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
// Reconstruct the HTTP entity, if present.
|
||||
$request_entity = array();
|
||||
if (isset($_SERVER['REQUEST_METHOD']) && (!strcasecmp($_SERVER['REQUEST_METHOD'], "POST") || !strcasecmp($_SERVER['REQUEST_METHOD'], "PUT"))) {
|
||||
foreach ($_POST as $h => $v) {
|
||||
if (is_array($v)) {
|
||||
// Workaround, see Bug #12
|
||||
$v = "Array";
|
||||
}
|
||||
$request_entity[$h] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
$request_uri = $_SERVER["REQUEST_URI"];
|
||||
if (!$request_uri) $request_uri = $_SERVER['SCRIPT_NAME']; // IIS
|
||||
|
||||
if ($settings['reverse_proxy'] && $ip = bb2_reverse_proxy($settings, $headers_mixed)) {
|
||||
$headers['X-Bad-Behavior-Remote-Address'] = $_SERVER['REMOTE_ADDR'];
|
||||
$headers_mixed['X-Bad-Behavior-Remote-Address'] = $_SERVER['REMOTE_ADDR'];
|
||||
} else {
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
@$package = array('ip' => $ip, 'headers' => $headers, 'headers_mixed' => $headers_mixed, 'request_method' => $_SERVER['REQUEST_METHOD'], 'request_uri' => $request_uri, 'server_protocol' => $_SERVER['SERVER_PROTOCOL'], 'request_entity' => $request_entity, 'user_agent' => $_SERVER['HTTP_USER_AGENT'], 'is_browser' => false,);
|
||||
|
||||
$result = bb2_screen($settings, $package);
|
||||
if ($result && !defined('BB2_TEST')) bb2_banned($settings, $package, $result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
function bb2_screen($settings, $package)
|
||||
{
|
||||
// Please proceed to the security checkpoint, have your identification
|
||||
// and boarding pass ready, and prepare to be nakedized or fondled.
|
||||
|
||||
// CloudFlare-specific checks not handled by reverse proxy code
|
||||
// Thanks to butchs at Simple Machines
|
||||
if (array_key_exists('Cf-Connecting-Ip', $package['headers_mixed'])) {
|
||||
require_once(BB2_CORE . "/cloudflare.inc.php");
|
||||
$r = bb2_cloudflare($package);
|
||||
if ($r !== false && $r != $package['ip']) return $r;
|
||||
}
|
||||
|
||||
// First check the whitelist
|
||||
require_once(BB2_CORE . "/whitelist.inc.php");
|
||||
if (!bb2_run_whitelist($package)) {
|
||||
// Now check the blacklist
|
||||
require_once(BB2_CORE . "/blacklist.inc.php");
|
||||
if ($r = bb2_blacklist($package)) return $r;
|
||||
|
||||
// Check the http:BL
|
||||
require_once(BB2_CORE . "/blackhole.inc.php");
|
||||
if ($r = bb2_httpbl($settings, $package)) {
|
||||
if ($r == 1) return false; // whitelisted
|
||||
return $r;
|
||||
}
|
||||
|
||||
// Check for common stuff
|
||||
require_once(BB2_CORE . "/common_tests.inc.php");
|
||||
if ($r = bb2_protocol($settings, $package)) return $r;
|
||||
if ($r = bb2_cookies($settings, $package)) return $r;
|
||||
if ($r = bb2_misc_headers($settings, $package)) return $r;
|
||||
|
||||
// Specific checks
|
||||
@$ua = $package['user_agent'];
|
||||
// Search engine checks come first
|
||||
if (stripos($ua, "bingbot") !== FALSE || stripos($ua, "msnbot") !== FALSE || stripos($ua, "MS Search") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_msnbot($package)) {
|
||||
if ($r == 1) return false; // whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Googlebot") !== FALSE || stripos($ua, "Mediapartners-Google") !== FALSE || stripos($ua, "Google Web Preview") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_google($package)) {
|
||||
if ($r == 1) return false; // whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Yahoo! Slurp") !== FALSE || stripos($ua, "Yahoo! SearchMonkey") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_yahoo($package)) {
|
||||
if ($r == 1) return false; // whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
} elseif (stripos($ua, "Baidu") !== FALSE) {
|
||||
require_once(BB2_CORE . "/searchengine.inc.php");
|
||||
if ($r = bb2_baidu($package)) {
|
||||
if ($r == 1) return false; // whitelisted
|
||||
return $r;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// MSIE checks
|
||||
if (stripos($ua, "; MSIE") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if (stripos($ua, "Opera") !== FALSE) {
|
||||
if ($r = bb2_opera($package)) return $r;
|
||||
} else {
|
||||
if ($r = bb2_msie($package)) return $r;
|
||||
}
|
||||
} elseif (stripos($ua, "Konqueror") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_konqueror($package)) return $r;
|
||||
} elseif (stripos($ua, "Opera") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_opera($package)) return $r;
|
||||
} elseif (stripos($ua, "Safari") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_safari($package)) return $r;
|
||||
} elseif (stripos($ua, "Lynx") !== FALSE) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_lynx($package)) return $r;
|
||||
} elseif (stripos($ua, "MovableType") !== FALSE) {
|
||||
require_once(BB2_CORE . "/movabletype.inc.php");
|
||||
if ($r = bb2_movabletype($package)) return $r;
|
||||
} elseif (stripos($ua, "Mozilla") !== FALSE && stripos($ua, "Mozilla") == 0) {
|
||||
$package['is_browser'] = true;
|
||||
require_once(BB2_CORE . "/browser.inc.php");
|
||||
if ($r = bb2_mozilla($package)) return $r;
|
||||
}
|
||||
|
||||
// More intensive screening applies to POST requests
|
||||
if (!strcasecmp('POST', $package['request_method'])) {
|
||||
require_once(BB2_CORE . "/post.inc.php");
|
||||
if ($r = bb2_post($settings, $package)) return $r;
|
||||
}
|
||||
}
|
||||
|
||||
// And that's about it.
|
||||
bb2_approved($settings, $package);
|
||||
return false;
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die("I said no cheating!");
|
||||
|
||||
// Miscellaneous helper functions.
|
||||
|
||||
// Quick and dirty check for an IPv6 address
|
||||
function is_ipv6($address) {
|
||||
return (strpos($address, ":")) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
// stripos() needed because stripos is only present on PHP 5
|
||||
if (!function_exists('stripos')) {
|
||||
function stripos($haystack,$needle,$offset = 0) {
|
||||
return(strpos(strtolower($haystack),strtolower($needle),$offset));
|
||||
}
|
||||
}
|
||||
|
||||
// str_split() needed because str_split is only present on PHP 5
|
||||
if (!function_exists('str_split')) {
|
||||
function str_split($string, $split_length=1)
|
||||
{
|
||||
if ($split_length < 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ($pos=0, $chunks = array(); $pos < strlen($string); $pos+=$split_length) {
|
||||
$chunks[] = substr($string, $pos, $split_length);
|
||||
}
|
||||
return $chunks;
|
||||
}
|
||||
}
|
||||
|
||||
// Convert a string to mixed-case on word boundaries.
|
||||
function uc_all($string) {
|
||||
$temp = preg_split('/(\W)/', str_replace("_", "-", $string), -1, PREG_SPLIT_DELIM_CAPTURE);
|
||||
foreach ($temp as $key=>$word) {
|
||||
$temp[$key] = ucfirst(strtolower($word));
|
||||
}
|
||||
return join ('', $temp);
|
||||
}
|
||||
|
||||
// Determine if an IP address resides in a CIDR netblock or netblocks.
|
||||
function match_cidr($addr, $cidr) {
|
||||
$output = false;
|
||||
|
||||
if (is_array($cidr)) {
|
||||
foreach ($cidr as $cidrlet) {
|
||||
if (match_cidr($addr, $cidrlet)) {
|
||||
$output = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@list($ip, $mask) = explode('/', $cidr);
|
||||
if (!$mask) $mask = 32;
|
||||
$mask = pow(2,32) - pow(2, (32 - $mask));
|
||||
$output = ((ip2long($addr) & $mask) == (ip2long($ip) & $mask));
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Determine if an IP address is reserved by RFC 1918.
|
||||
function is_rfc1918($addr) {
|
||||
return match_cidr($addr, array("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"));
|
||||
}
|
||||
// Obtain all the HTTP headers.
|
||||
// NB: on PHP-CGI we have to fake it out a bit, since we can't get the REAL
|
||||
// headers. Run PHP as Apache 2.0 module if possible for best results.
|
||||
function bb2_load_headers() {
|
||||
if (!is_callable('getallheaders')) {
|
||||
$headers = array();
|
||||
foreach ($_SERVER as $h => $v)
|
||||
if (preg_match('/HTTP_(.+)/', $h, $hp))
|
||||
$headers[str_replace("_", "-", uc_all($hp[1]))] = $v;
|
||||
} else {
|
||||
$headers = getallheaders();
|
||||
}
|
||||
return $headers;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Viewing directory contents is not permitted.
|
|
@ -1,12 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_movabletype($package)
|
||||
{
|
||||
// Is it a trackback?
|
||||
if (strcasecmp($package['request_method'], "POST")) {
|
||||
if (strcmp($package['headers_mixed']['Range'], "bytes=0-99999")) {
|
||||
return "7d12528e";
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Specialized screening for trackbacks
|
||||
function bb2_trackback($package)
|
||||
{
|
||||
// Web browsers don't send trackbacks
|
||||
if ($package['is_browser']) {
|
||||
return 'f0dcb3fd';
|
||||
}
|
||||
|
||||
// Proxy servers don't send trackbacks either
|
||||
if (array_key_exists('Via', $package['headers_mixed']) || array_key_exists('Max-Forwards', $package['headers_mixed']) || array_key_exists('X-Forwarded-For', $package['headers_mixed']) || array_key_exists('Client-Ip', $package['headers_mixed'])) {
|
||||
return 'd60b87c7';
|
||||
}
|
||||
|
||||
// Fake WordPress trackbacks
|
||||
// Real ones do not contain Accept:, and have a charset defined
|
||||
// Real WP trackbacks may contain Accept: depending on the HTTP
|
||||
// transport being used by the sending host
|
||||
if (strpos($package['headers_mixed']['User-Agent'], "WordPress/") !== FALSE) {
|
||||
if (strpos($package['headers_mixed']['Content-Type'], "charset=") === FALSE) {
|
||||
return 'e3990b47';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// All tests which apply specifically to POST requests
|
||||
function bb2_post($settings, $package)
|
||||
{
|
||||
// Check blackhole lists for known spam/malicious activity
|
||||
// require_once(BB2_CORE . "/blackhole.inc.php");
|
||||
// if ($r = bb2_blackhole($package)) return $r;
|
||||
|
||||
// MovableType needs specialized screening
|
||||
if (stripos($package['headers_mixed']['User-Agent'], "MovableType") !== FALSE) {
|
||||
if (strcmp($package['headers_mixed']['Range'], "bytes=0-99999")) {
|
||||
return "7d12528e";
|
||||
}
|
||||
}
|
||||
|
||||
// Trackbacks need special screening
|
||||
$request_entity = $package['request_entity'];
|
||||
if (isset($request_entity['title']) && isset($request_entity['url']) && isset($request_entity['blog_name'])) {
|
||||
return bb2_trackback($package);
|
||||
}
|
||||
|
||||
// Catch a few completely broken spambots
|
||||
foreach ($request_entity as $key => $value) {
|
||||
$pos = strpos($key, " document.write");
|
||||
if ($pos !== FALSE) {
|
||||
return "dfd9b1ad";
|
||||
}
|
||||
}
|
||||
|
||||
// If Referer exists, it should refer to a page on our site
|
||||
if (!$settings['offsite_forms'] && array_key_exists('Referer', $package['headers_mixed'])) {
|
||||
$url = parse_url($package['headers_mixed']['Referer']);
|
||||
$url['host'] = preg_replace('|^www\.|', '', $url['host']);
|
||||
$host = preg_replace('|^www\.|', '', $package['headers_mixed']['Host']);
|
||||
// Strip port
|
||||
$host = preg_replace('|:\d+$|', '', $host);
|
||||
if (strcasecmp($host, $url['host'])) {
|
||||
return "cd361abb";
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
// Defines the responses which Bad Behavior might return.
|
||||
|
||||
function bb2_get_response($key) {
|
||||
$bb2_responses = array(
|
||||
'00000000' => array('response' => 200, 'explanation' => '', 'log' => 'Permitted'),
|
||||
'136673cd' => array('response' => 403, 'explanation' => 'Your Internet Protocol address is listed on a blacklist of addresses involved in malicious or illegal activity. See the listing below for more details on specific blacklists and removal procedures.', 'log' => 'IP address found on external blacklist'),
|
||||
'17566707' => array('response' => 403, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Required header \'Accept\' missing'),
|
||||
'17f4e8c8' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User-Agent was found on blacklist'),
|
||||
'21f11d3f' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a mobile Web device, but you do not actually appear to be a mobile Web device.', 'log' => 'User-Agent claimed to be AvantGo, claim appears false'),
|
||||
'2b021b1f' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'IP address found on http:BL blacklist'),
|
||||
'2b90f772' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. If you are using the Opera browser, then Opera must appear in your user agent.', 'log' => 'Connection: TE present, not supported by MSIE'),
|
||||
'35ea7ffa' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Check your browser\'s language and locale settings.', 'log' => 'Invalid language specified'),
|
||||
'408d7e72' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'POST comes too quickly after GET'),
|
||||
'41feed15' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by a malfunctioning proxy server. Bypass the proxy server and connect directly, or contact your proxy server administrator.', 'log' => 'Header \'Pragma\' without \'Cache-Control\' prohibited for HTTP/1.1 requests'),
|
||||
'45b35e30' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Header \'Referer\' is corrupt'),
|
||||
'57796684' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Prohibited header \'X-Aaaaaaaaaa\' or \'X-Aaaaaaaaaaaa\' present'),
|
||||
'582ec5e4' => array('response' => 400, 'explanation' => 'An invalid request was received. If you are using a proxy server, bypass the proxy server or contact your proxy server administrator. This may also be caused by a bug in the Opera web browser.', 'log' => '"Header \'TE\' present but TE not specified in \'Connection\' header'),
|
||||
'69920ee5' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Header \'Referer\' present but blank'),
|
||||
'6c502ff1' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Bot not fully compliant with RFC 2965'),
|
||||
'70e45496' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User agent claimed to be CloudFlare, claim appears false'),
|
||||
'71436a15' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be Yahoo, claim appears to be false'),
|
||||
'799165c2' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Rotating user-agents detected'),
|
||||
'7a06532b' => array('response' => 400, 'explanation' => 'An invalid request was received from your browser. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'Required header \'Accept-Encoding\' missing'),
|
||||
'7ad04a8a' => array('response' => 400, 'explanation' => 'The automated program you are using is not permitted to access this server. Please use a different program or a standard Web browser.', 'log' => 'Prohibited header \'Range\' present'),
|
||||
'7d12528e' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Prohibited header \'Range\' or \'Content-Range\' in POST request'),
|
||||
'939a6fbb' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Banned proxy server in use'),
|
||||
'96c0bd29' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'URL pattern found on blacklist'),
|
||||
'9c9e4979' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Prohibited header \'via\' present'),
|
||||
'a0105122' => array('response' => 417, 'explanation' => 'Expectation failed. Please retry your request.', 'log' => 'Header \'Expect\' prohibited; resend without Expect'),
|
||||
'a1084bad' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'User-Agent claimed to be MSIE, with invalid Windows version'),
|
||||
'a52f0448' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by a malfunctioning proxy server or browser privacy software. If you are using a proxy server, bypass the proxy server or contact your proxy server administrator.', 'log' => 'Header \'Connection\' contains invalid values'),
|
||||
'b0924802' => array('response' => 400, 'explanation' => 'An invalid request was received. This may be caused by malicious software on your computer.', 'log' => 'Incorrect form of HTTP/1.0 Keep-Alive'),
|
||||
'b40c8ddc' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, close your browser, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'POST more than two days after GET'),
|
||||
'b7830251' => array('response' => 400, 'explanation' => 'Your proxy server sent an invalid request. Please contact the proxy server administrator to have this problem fixed.', 'log' => 'Prohibited header \'Proxy-Connection\' present'),
|
||||
'b9cc1d86' => array('response' => 403, 'explanation' => 'The proxy server you are using is not permitted to access this server. Please bypass the proxy server, or contact your proxy server administrator.', 'log' => 'Prohibited header \'X-Aaaaaaaaaa\' or \'X-Aaaaaaaaaaaa\' present'),
|
||||
'c1fa729b' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Use of rotating proxy servers detected'),
|
||||
'cd361abb' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Data may not be posted from offsite forms.', 'log' => 'Referer did not point to a form on this site'),
|
||||
'd60b87c7' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, please remove any viruses or spyware from your computer.', 'log' => 'Trackback received via proxy server'),
|
||||
'dfd9b1ad' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'Request contained a malicious JavaScript or SQL injection attack'),
|
||||
'e3990b47' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, please remove any viruses or spyware from your computer.', 'log' => 'Obviously fake trackback received'),
|
||||
'e4de0453' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be msnbot, claim appears to be false'),
|
||||
'e87553e1' => array('response' => 403, 'explanation' => 'You do not have permission to access this server.', 'log' => 'I know you and I don\'t like you, dirty spammer.'),
|
||||
'f0dcb3fd' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. Before trying again, run anti-virus and anti-spyware software and remove any viruses and spyware from your computer.', 'log' => 'Web browser attempted to send a trackback'),
|
||||
'f1182195' => array('response' => 403, 'explanation' => 'An invalid request was received. You claimed to be a major search engine, but you do not appear to actually be a major search engine.', 'log' => 'User-Agent claimed to be Googlebot, claim appears to be false.'),
|
||||
'f9f2b8b9' => array('response' => 403, 'explanation' => 'You do not have permission to access this server. This may be caused by a malfunctioning proxy server or browser privacy software.', 'log' => 'A User-Agent is required but none was provided.'),
|
||||
);
|
||||
|
||||
if (array_key_exists($key, $bb2_responses)) return $bb2_responses[$key];
|
||||
return array('00000000');
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die("I said no cheating!");
|
||||
|
||||
// Round trip DNS verification
|
||||
//
|
||||
// Returns TRUE if DNS matches; FALSE on mismatch
|
||||
// Returns $ip if an error occurs
|
||||
// TODO: Not IPv6 safe
|
||||
// FIXME: Returns false on DNS server failure; PHP provides no distinction
|
||||
// between no records and error condition
|
||||
function bb2_roundtripdns($ip,$domain)
|
||||
{
|
||||
if (@is_ipv6($ip)) return $ip;
|
||||
|
||||
$host = gethostbyaddr($ip);
|
||||
$host_result = strpos(strrev($host), strrev($domain));
|
||||
if ($host_result === false || $host_result > 0) return false;
|
||||
$addrs = gethostbynamel($host);
|
||||
if (in_array($ip, $addrs)) return true;
|
||||
return false;
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
require_once(BB2_CORE . "/roundtripdns.inc.php");
|
||||
|
||||
// Analyze user agents claiming to be Googlebot
|
||||
|
||||
function bb2_google($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; // TODO
|
||||
if (match_cidr($package['ip'], array("66.249.64.0/19", "64.233.160.0/19", "72.14.192.0/18", "203.208.32.0/19", "74.125.0.0/16", "216.239.32.0/19", "209.85.128.0/17")) === FALSE) {
|
||||
return false; // Soft fail, must pass other screening
|
||||
//return "f1182195"; // Hard fail
|
||||
}
|
||||
// Disabled due to https://bugs.php.net/bug.php?id=53092
|
||||
// if (!bb2_roundtripdns($package['ip'], "googlebot.com")) {
|
||||
// return "f1182195";
|
||||
// }
|
||||
return 1; // Real Googlebot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be msnbot
|
||||
|
||||
function bb2_msnbot($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; // TODO
|
||||
if (match_cidr($package['ip'], array("207.46.0.0/16", "65.52.0.0/14", "207.68.128.0/18", "207.68.192.0/20", "64.4.0.0/18", "157.54.0.0/15", "157.60.0.0/16", "157.56.0.0/14", "131.253.21.0/24", "131.253.22.0/23", "131.253.24.0/21", "131.253.32.0/20", "40.76.0.0/14")) === FALSE) {
|
||||
return false; // Soft fail, must pass other screening
|
||||
//return "e4de0453"; // Hard fail
|
||||
}
|
||||
// Disabled due to https://bugs.php.net/bug.php?id=53092
|
||||
// if (!bb2_roundtripdns($package['ip'], "msn.com")) {
|
||||
// return "e4de0453";
|
||||
// }
|
||||
return 1; // Real msnbot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Yahoo!
|
||||
|
||||
function bb2_yahoo($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; // TODO
|
||||
if (match_cidr($package['ip'], array("202.160.176.0/20", "67.195.0.0/16", "203.209.252.0/24", "72.30.0.0/16", "98.136.0.0/14", "74.6.0.0/16")) === FALSE) {
|
||||
return false; // Soft fail, must pass other screening
|
||||
//return '71436a15'; // Hard fail
|
||||
}
|
||||
// Disabled due to https://bugs.php.net/bug.php?id=53092
|
||||
// if (!bb2_roundtripdns($package['ip'], "crawl.yahoo.net")) {
|
||||
// return "71436a15";
|
||||
// }
|
||||
return 1; // Real Yahoo bot; bypass all other checks
|
||||
}
|
||||
|
||||
// Analyze user agents claiming to be Baidu
|
||||
|
||||
function bb2_baidu($package)
|
||||
{
|
||||
if (@is_ipv6($package['ip'])) return false; // TODO
|
||||
if (match_cidr($package['ip'], array("119.63.192.0/21", "123.125.71.0/24", "180.76.0.0/16", "220.181.0.0/16")) === FALSE) {
|
||||
return false; // Soft fail, must pass other screening
|
||||
}
|
||||
return 1; // Real Baidu bot; bypass all other checks
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php if (!defined('BB2_CORE')) die('I said no cheating!');
|
||||
|
||||
function bb2_run_whitelist($package)
|
||||
{
|
||||
// FIXME: Transitional, until port maintainters implement bb2_read_whitelist
|
||||
if (function_exists('bb2_read_whitelist')) {
|
||||
$whitelists = bb2_read_whitelist();
|
||||
} else {
|
||||
$whitelists = @parse_ini_file(dirname(BB2_CORE) . "/whitelist.ini");
|
||||
}
|
||||
|
||||
if (@!empty($whitelists['ip'])) {
|
||||
foreach (array_filter($whitelists['ip']) as $range) {
|
||||
if (match_cidr($package['ip'], $range)) return true;
|
||||
}
|
||||
}
|
||||
if (@!empty($whitelists['useragent'])) {
|
||||
foreach (array_filter($whitelists['useragent']) as $user_agent) {
|
||||
if (!strcmp($package['headers_mixed']['User-Agent'], $user_agent)) return true;
|
||||
}
|
||||
}
|
||||
if (@!empty($whitelists['url'])) {
|
||||
if (strpos($package['request_uri'], "?") === FALSE) {
|
||||
$request_uri = $package['request_uri'];
|
||||
} else {
|
||||
$request_uri = substr($package['request_uri'], 0, strpos($package['request_uri'], "?"));
|
||||
}
|
||||
foreach (array_filter($whitelists['url']) as $url) {
|
||||
$pos = strpos($request_uri, $url);
|
||||
if ($pos !== false && $pos == 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Viewing directory contents is not permitted.
|
|
@ -19,126 +19,110 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*******************************************************************************/
|
||||
|
||||
class Captcha
|
||||
{
|
||||
function check_captcha($code,$entered_code)
|
||||
{
|
||||
if(strtolower($entered_code) == strtolower($code)) return true;
|
||||
else return false;
|
||||
}
|
||||
class Captcha {
|
||||
function check_captcha($code, $entered_code) {
|
||||
if (strtolower($entered_code) == strtolower($code)) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
function generate_code($letters='abcdefhjkmnpqrstuvwxyz234568')
|
||||
{
|
||||
mt_srand((double)microtime()*1000000);
|
||||
$code='';
|
||||
for($i=0;$i<5;$i++)
|
||||
{
|
||||
$code.=substr($letters,mt_rand(0,strlen($letters)-1),1);
|
||||
}
|
||||
return $code;
|
||||
}
|
||||
function generate_code($letters = 'abcdefhjkmnpqrstuvwxyz234568') {
|
||||
mt_srand((double)microtime()*1000000);
|
||||
$code = '';
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
$code .= substr($letters, mt_rand(0, strlen($letters) -1), 1);
|
||||
}
|
||||
return $code;
|
||||
}
|
||||
|
||||
function generate_image($code,$backgrounds_folder='',$fonts_folder='')
|
||||
{
|
||||
$font_size = 23;
|
||||
$font_pos_x = 10;
|
||||
$font_pos_y = 30;
|
||||
function generate_image($code, $backgrounds_folder = '', $fonts_folder = '') {
|
||||
$font_size = 23;
|
||||
$font_pos_x = 10;
|
||||
$font_pos_y = 30;
|
||||
|
||||
// get background images:
|
||||
if($backgrounds_folder!='')
|
||||
{
|
||||
$handle=opendir($backgrounds_folder);
|
||||
while ($file = readdir($handle))
|
||||
{
|
||||
if(preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file) || preg_match('/\.jpg$/i', $file)) $backgrounds[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
// get background images:
|
||||
if ($backgrounds_folder != '') {
|
||||
$handle = opendir($backgrounds_folder);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.png$/i', $file) || preg_match('/\.gif$/i', $file) || preg_match('/\.jpg$/i', $file)) $backgrounds[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
// get fonts:
|
||||
if($fonts_folder!='')
|
||||
{
|
||||
$handle=opendir($fonts_folder);
|
||||
while($file = readdir($handle))
|
||||
{
|
||||
if(preg_match('/\.ttf$/i', $file)) $fonts[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
// get fonts:
|
||||
if ($fonts_folder != '') {
|
||||
$handle = opendir($fonts_folder);
|
||||
while ($file = readdir($handle)) {
|
||||
if (preg_match('/\.ttf$/i', $file)) $fonts[] = $file;
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
// split code into chars:
|
||||
$code_length = strlen($code);
|
||||
for($i=0;$i<$code_length;$i++)
|
||||
{
|
||||
$code_chars_array[] = substr($code,$i,1);
|
||||
}
|
||||
// split code into chars:
|
||||
$code_length = strlen($code);
|
||||
for ($i = 0; $i < $code_length; $i++) {
|
||||
$code_chars_array[] = substr($code, $i, 1);
|
||||
}
|
||||
|
||||
// if background images are available, craete image from one of them:
|
||||
if(isset($backgrounds))
|
||||
{
|
||||
$bg = $backgrounds[mt_rand(0,count($backgrounds)-1)];
|
||||
if(preg_match('/\.png$/i', $bg)) $im = ImageCreateFromPNG($backgrounds_folder.$bg);
|
||||
elseif(preg_match('/\.gif$/i', $bg)) $im = ImageCreateFromGIF($backgrounds_folder.$bg);
|
||||
else $im = ImageCreateFromJPEG($backgrounds_folder.$bg);
|
||||
if(function_exists('imagerotate') && mt_rand(0,1)==1) $im = imagerotate($im, 180, 0);
|
||||
}
|
||||
// if not, create an empty image:
|
||||
else
|
||||
{
|
||||
$im = ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
}
|
||||
// if background images are available, craete image from one of them:
|
||||
if (isset($backgrounds)) {
|
||||
$bg = $backgrounds[mt_rand(0,count($backgrounds)-1)];
|
||||
if (preg_match('/\.png$/i', $bg)) $im = ImageCreateFromPNG($backgrounds_folder.$bg);
|
||||
else if (preg_match('/\.gif$/i', $bg)) $im = ImageCreateFromGIF($backgrounds_folder.$bg);
|
||||
else $im = ImageCreateFromJPEG($backgrounds_folder.$bg);
|
||||
if (function_exists('imageflip') && mt_rand(0, 5) % 2 == 0) {
|
||||
$flipConsts = [IMG_FLIP_HORIZONTAL, IMG_FLIP_VERTICAL, IMG_FLIP_BOTH];
|
||||
$flipper = mt_rand(0, 2);
|
||||
imageflip($im, $flipConsts[$flipper]);
|
||||
}
|
||||
} else {
|
||||
// if not, create an empty image:
|
||||
$im = ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
}
|
||||
|
||||
// set text color:
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
// set text color:
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
|
||||
// use fonts, if available:
|
||||
if(isset($fonts))
|
||||
{
|
||||
foreach($code_chars_array as $char)
|
||||
{
|
||||
$angle = intval(rand((30 * -1), 30));
|
||||
ImageTTFText($im, $font_size, $angle, $font_pos_x, $font_pos_y, $text_color, $fonts_folder.$fonts[mt_rand(0,count($fonts)-1)],$char);
|
||||
$font_pos_x=$font_pos_x+($font_size+13);
|
||||
}
|
||||
}
|
||||
// if not, use internal font:
|
||||
else
|
||||
{
|
||||
ImageString($im, 5, 30, 10, $code, $text_color);
|
||||
}
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
exit();
|
||||
}
|
||||
// use fonts, if available:
|
||||
if (isset($fonts)) {
|
||||
foreach ($code_chars_array as $char) {
|
||||
$angle = intval(rand((30 * -1), 30));
|
||||
ImageTTFText($im, $font_size, $angle, $font_pos_x, $font_pos_y, $text_color, $fonts_folder.$fonts[mt_rand(0, count($fonts) -1)], $char);
|
||||
$font_pos_x = $font_pos_x + ($font_size + 13);
|
||||
}
|
||||
} else {
|
||||
// if not, use internal font:
|
||||
ImageString($im, 5, 30, 10, $code, $text_color);
|
||||
}
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
exit();
|
||||
}
|
||||
|
||||
function generate_dummy_image()
|
||||
{
|
||||
$im = @ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
#ImageString($im, 3, 7, 4, 'CAPTCHA not available', $text_color);
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
}
|
||||
function generate_dummy_image() {
|
||||
$im = @ImageCreate(180, 40);
|
||||
$background_color = ImageColorAllocate ($im, 234, 234, 234);
|
||||
$text_color = ImageColorAllocate ($im, 0, 0, 0);
|
||||
//ImageString($im, 3, 7, 4, 'CAPTCHA not available', $text_color);
|
||||
header("Expires: Expires: Sat, 20 Oct 2007 00:00:00 GMT");
|
||||
header("Cache-Control: max-age=0");
|
||||
header("Content-type: image/png");
|
||||
ImagePNG($im);
|
||||
}
|
||||
|
||||
// for math CAPTCHA:
|
||||
function generate_math_captcha($number1from=1,$number1to=10,$number2from=0,$number2to=10)
|
||||
{
|
||||
$number[0] = rand($number1from,$number1to);
|
||||
$number[1] = rand($number2from,$number2to);
|
||||
$number[2] = $number[0] + $number[1];
|
||||
return $number;
|
||||
}
|
||||
// for math CAPTCHA:
|
||||
function generate_math_captcha($number1from = 1, $number1to = 10, $number2from = 0, $number2to = 10) {
|
||||
$number[0] = rand($number1from, $number1to);
|
||||
$number[1] = rand($number2from, $number2to);
|
||||
$number[2] = $number[0] + $number[1];
|
||||
return $number;
|
||||
}
|
||||
|
||||
function check_math_captcha($result, $entered_result)
|
||||
{
|
||||
if(intval($result) == intval($entered_result)) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
function check_math_captcha($result, $entered_result) {
|
||||
if (intval($result) == intval($entered_result)) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
<?php
|
||||
ini_set('error_reporting','E_ALL');
|
||||
// ini_set('error_reporting', 'E_ALL');
|
||||
session_set_cookie_params(['samesite' => 'strict']);
|
||||
session_start();
|
||||
require('captcha.php');
|
||||
$captcha = new Captcha();
|
||||
if(isset($_SESSION['captcha_session']))
|
||||
{
|
||||
$captcha->generate_image($_SESSION['captcha_session'],'backgrounds/','fonts/');
|
||||
}
|
||||
else
|
||||
{
|
||||
$captcha->generate_dummy_image();
|
||||
}
|
||||
if (isset($_SESSION['captcha_session'])) {
|
||||
$captcha->generate_image($_SESSION['captcha_session'], 'backgrounds/', 'fonts/');
|
||||
} else {
|
||||
$captcha->generate_dummy_image();
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -403,14 +403,24 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data
|
|||
} else {
|
||||
$_query_string = '';
|
||||
}
|
||||
|
||||
$opts = array (
|
||||
'expires' => 0,
|
||||
'path' => '',
|
||||
'domain' => '',
|
||||
'secure' => '',
|
||||
'httponly' => '',
|
||||
'samesite' => 'Strict'
|
||||
);
|
||||
|
||||
if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
|
||||
if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
|
||||
// enable debugging for this browser session
|
||||
setcookie('SMARTY_DEBUG', true);
|
||||
setcookie('SMARTY_DEBUG', true, $opts);
|
||||
$smarty->debugging = true;
|
||||
} elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
|
||||
// disable debugging for this browser session
|
||||
setcookie('SMARTY_DEBUG', false);
|
||||
setcookie('SMARTY_DEBUG', false, $opts);
|
||||
$smarty->debugging = false;
|
||||
} else {
|
||||
// enable debugging for this page
|
||||
|
|
|
@ -1,87 +1,266 @@
|
|||
{config_load file=$language_file section="general"}{config_load file=$language_file section="avatar"}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{#language#}">
|
||||
<head>
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset={#charset#}" />
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
{config_load file=$language_file section="general"}{config_load file=$language_file section="avatar"}<!DOCTYPE html>
|
||||
<html lang="{#language#}">
|
||||
<head>
|
||||
<meta charset="{#charset#}" />
|
||||
<title>{$settings.forum_name}{if $page_title} - {$page_title}{elseif $subnav_location} - {$subnav_location}{/if}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
<style type="text/css">
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body { color: #000000; background: #ffffff; margin: 20px; padding: 0px; font-family: verdana, arial, sans-serif; font-size: 13px; }
|
||||
h1 { font-family: verdana, arial, sans-serif; font-size: 18px; font-weight: bold; }
|
||||
p { font-family: verdana, arial, sans-serif; font-size: 13px; line-height: 19px; }
|
||||
.caution { padding: 0px 0px 0px 20px; color: red; font-weight: bold; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png); background-repeat:no-repeat; background-position: left; }
|
||||
.ok { padding: 0px 0px 0px 20px; font-weight:bold; color:red; background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png); background-repeat:no-repeat; background-position: left; }
|
||||
img.uploaded { border: 1px solid #000; cursor:pointer; }
|
||||
.small { font-size:11px; line-height:16px; }
|
||||
.delete a { text-decoration:none !important; }
|
||||
.delete a:hover span { text-decoration:underline; }
|
||||
.delete a img { border:none; margin:0px 5px -3px 0px; padding:0px; }
|
||||
a:link { color: #0000cc; text-decoration: none; }
|
||||
a:visited { color: #0000cc; text-decoration: none; }
|
||||
a:hover { color: #0000ff; text-decoration: underline; }
|
||||
a:active { color: #ff0000; text-decoration: none; }
|
||||
-->
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">/* <![CDATA[ */
|
||||
function setPictureToProfil(src) {
|
||||
if (opener && opener.document.getElementById("avatar_wrapper")) {
|
||||
var avatarWrapper = opener.document.getElementById("avatar_wrapper")
|
||||
if (src) {
|
||||
var img = new Image();
|
||||
img.src = src;
|
||||
avatarWrapper.innerHTML = '';
|
||||
avatarWrapper.appendChild(img);
|
||||
}
|
||||
else {
|
||||
avatarWrapper.innerHTML = '';
|
||||
}
|
||||
}
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
color: #000;
|
||||
background: #fff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: verdana, arial, sans-serif;
|
||||
font-size: 1em;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
body > * {
|
||||
padding-block: 0;
|
||||
padding-inline: 0.5em;
|
||||
}
|
||||
header {
|
||||
margin: 0;
|
||||
background: #f9f9f9;
|
||||
border-bottom: 1px solid #bacbdf;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
header > * {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
main {
|
||||
margin-inline: 0;
|
||||
margin-block: 0.5em;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.caution,
|
||||
.ok {
|
||||
margin-block: 0.5em;
|
||||
padding: 0 0 0 24px;
|
||||
background-repeat:no-repeat;
|
||||
background-position: 2px 3px;
|
||||
}
|
||||
.caution h2,
|
||||
.ok h2 {
|
||||
font-size: 1em;
|
||||
margin: 0 0 0.5em 0;
|
||||
}
|
||||
.caution {
|
||||
color: #cc0000;
|
||||
font-weight: bold;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/caution.png);
|
||||
}
|
||||
.ok {
|
||||
font-weight:bold;
|
||||
color:green;
|
||||
background-image:url({/literal}{$THEMES_DIR}/{$settings.theme}{literal}/images/tick.png);
|
||||
}
|
||||
img.uploaded {
|
||||
border: 1px solid #000;
|
||||
cursor:pointer;
|
||||
}
|
||||
.instruction,
|
||||
.small {
|
||||
font-size: 0.82em;
|
||||
}
|
||||
.instruction,
|
||||
p.small {
|
||||
margin-block:0.5em;
|
||||
}
|
||||
a {
|
||||
color: #00c;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus,
|
||||
a:hover {
|
||||
color:#00f;
|
||||
text-decoration: underline dotted 9% #45f;
|
||||
}
|
||||
a:active {
|
||||
color:#f00;
|
||||
text-decoration: underline solid 7% #d00;
|
||||
}
|
||||
form > div:not(:last-child) {
|
||||
margin-block-end: .75em;
|
||||
}
|
||||
ul {
|
||||
list-style:none;
|
||||
margin-block:0.5em;
|
||||
padding: 0;
|
||||
}
|
||||
#imgtab {
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
gap:0.75em;
|
||||
min-width: 20em;
|
||||
max-width: 40em;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#del-upload-form {
|
||||
text-align:center;
|
||||
}
|
||||
#imgtab li {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5em;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
li > *:last-child {
|
||||
align-content:center;
|
||||
}
|
||||
img {
|
||||
border:none;
|
||||
display: block;
|
||||
}
|
||||
#imgtab img {
|
||||
max-width: 100%;
|
||||
margin-inline: auto;
|
||||
}
|
||||
#imgtab:not(.shrinked) img {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab.shrinked img {
|
||||
max-width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
.buttonbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.3em;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgtab li button:has(> img) {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
{/literal}
|
||||
</style>
|
||||
<script>{literal}
|
||||
function setPictureToProfile(src) {
|
||||
if (opener && opener.document.getElementById("avatar_wrapper")) {
|
||||
const avatarWrapper = opener.document.getElementById("avatar_wrapper")
|
||||
if (src) {
|
||||
const img = new Image();
|
||||
img.src = src;
|
||||
avatarWrapper.innerHTML = '';
|
||||
avatarWrapper.appendChild(img);
|
||||
} else {
|
||||
avatarWrapper.innerHTML = '';
|
||||
}
|
||||
}
|
||||
};
|
||||
{/literal}
|
||||
{if $avatar_uploaded}
|
||||
setPictureToProfil('{$avatar}');
|
||||
setPictureToProfile('{$avatar}');
|
||||
{elseif $avatar_deleted}
|
||||
setPictureToProfil('');
|
||||
setPictureToProfile('');
|
||||
{/if}
|
||||
{literal}
|
||||
/* ]]> */</script>
|
||||
{/literal}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
if (document.querySelector('button[name="close-form"]')) {
|
||||
document.querySelector('button[name="close-form"]').addEventListener('click', function() {
|
||||
window.close();
|
||||
});
|
||||
}
|
||||
if (document.querySelector('button[name="upload_img"]')) {
|
||||
document.querySelector('button[name="upload_img"]').addEventListener('click', function() {
|
||||
const close_btn = document.querySelector('button[name="close-form"]');
|
||||
const throbber = document.getElementById('throbber-submit');
|
||||
close_btn.addAttribute('hidden');
|
||||
if (throbber.classList.contains('invisible')) {
|
||||
throbber.classList.remove('invisible');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{if $avatar}
|
||||
<h1>{#avatar_hl#}</h1>
|
||||
<header>
|
||||
<h1>{#avatar_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
{if $avatar_uploaded}
|
||||
<p class="ok">{#upload_successful#}</p>
|
||||
<div class="ok">
|
||||
<h2>{#upload_successful#}</h2>
|
||||
</div>
|
||||
{/if}
|
||||
<p><img src="{$avatar}" alt="" /></p>
|
||||
{if $image_downsized}<p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
<ul id="imgtab" class="shrinked">
|
||||
<li><img src="{$avatar}" alt="" /></li>
|
||||
</ul>
|
||||
{if $image_downsized} <p class="small">{$smarty.config.image_downsized|replace:"[width]":$new_width|replace:"[height]":$new_height|replace:"[filesize]":$new_filesize}</p>{/if}
|
||||
<form id="del-upload-form" action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
{if $avatar_uploaded}
|
||||
<script type="text/javascript">/* <![CDATA[ */ document.write('<p><button onclick=\"window.close()\">{#close_window#}</button><\/p>'); /* ]]> */</script>
|
||||
<div>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
</div>
|
||||
{else}
|
||||
<p class="delete"><a href="index.php?mode=avatar&delete=true"><img src="{$THEMES_DIR}/{$settings.theme}/images/delete.png" alt="" width="16" height="16" /><span>{#delete_avatar#}</span></a></p>
|
||||
<div>
|
||||
<button name="delete" value="{#delete_avatar#}">{#delete_avatar#}</button>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
</div>
|
||||
{/if}
|
||||
</form>
|
||||
</main>
|
||||
{elseif $upload}
|
||||
<h1>{#upload_avatar_hl#}</h1>
|
||||
<p>{#upload_avatar_notes#|replace:"[width]":$settings.avatar_max_width|replace:"[height]":$settings.avatar_max_width|replace:"[filesize]":$settings.avatar_max_filesize}</p>
|
||||
<header>
|
||||
<h1>{#upload_avatar_hl#}</h1>
|
||||
</header>
|
||||
<main>
|
||||
<p class="instruction">{#upload_avatar_notes#|replace:"[width]":$settings.avatar_max_width|replace:"[height]":$settings.avatar_max_width|replace:"[filesize]":$settings.avatar_max_filesize}</p>
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
<div class="caution">
|
||||
<h2>{#error_headline#}</h2>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[width]":$width|replace:"[height]":$height|replace:"[filesize]":$filesize|replace:"[max_width]":$max_width|replace:"[max_height]":$max_height|replace:"[max_filesize]":$max_filesize|replace:"[server_max_filesize]":$server_max_filesize}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<form id="uploadform" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
<p><input type="file" name="probe" size="17" /></p>
|
||||
<p><input type="submit" name="" value="{#upload_image_button#}" onclick="document.getElementById('throbber-submit').style.visibility='visible'" /> <img id="throbber-submit" style="visibility:hidden;" src="{$THEMES_DIR}/{$settings.template}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<form id="uploadform" action="index.php" method="post" enctype="multipart/form-data" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="avatar" />
|
||||
<div>
|
||||
<input type="file" name="probe" size="17" />
|
||||
</div>
|
||||
<div class="buttonbar">
|
||||
<button name="upload_img" value="{#upload_image_button#}">{#upload_image_button#}</button>
|
||||
<button type="button" name="close-form">{#close_window#}</button>
|
||||
<img id="throbber-submit" class="invisible" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</form>
|
||||
</main>
|
||||
{else}
|
||||
<p class="caution">{#avatars_disabled#}</p>
|
||||
<main>
|
||||
<div class="caution">
|
||||
<h2>{#avatars_disabled#}</h2>
|
||||
</div>
|
||||
</main>
|
||||
{/if}
|
||||
</body>
|
||||
</html>
|
||||
|
|
Before Width: | Height: | Size: 695 B |
Before Width: | Height: | Size: 700 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.2 KiB |
47
themes/default/images/database-no.svg
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" width="264" height="264" viewBox="0 0 264 264">
|
||||
<defs>
|
||||
<linearGradient id="cyl" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#7f99b9" />
|
||||
<stop offset="46%" stop-color="#a2bfdf" />
|
||||
<stop offset="66%" stop-color="#bae8fa" />
|
||||
<stop offset="86%" stop-color="#a4c6ed" />
|
||||
<stop offset="100%" stop-color="#98bcde" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
#contour { fill: none; stroke-width: 5; stroke: #7894b2; }
|
||||
#frontcontour { fill: none; stroke-width: 3.5; stroke: #9abfe4; stroke-linecap: round; }
|
||||
#front { fill: url(#cyl); stroke: none; }
|
||||
#cross { stroke-width: 38; stroke: #f80800; stroke-linecap: round; }
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-conic-gradient(
|
||||
from -90deg,
|
||||
#8f9fbc 0deg,
|
||||
#a2bfdf 25.2deg,
|
||||
#bae8fa 60deg,
|
||||
#a4c6ed 94.8deg,
|
||||
#8f9fbc 180deg
|
||||
);
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol id="disc">
|
||||
<clipPath id="top">
|
||||
<path d="M 28 108 A 104 48 180 0 1 236 108 A 104 48 180 0 1 28 108 z" />
|
||||
</clipPath>
|
||||
<foreignObject x="0" y="60" width="264" height="100" clip-path="url(#top)">
|
||||
<xhtml:div class="gradient" />
|
||||
</foreignObject>
|
||||
<path id="front" d="M 28 108 A 104 48 180 0 0 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
<path id="frontcontour" d="M 28 108 A 104 48 180 0 0 236 108" />
|
||||
<path id="contour" d="M 28 108 A 104 48 180 0 1 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
</symbol>
|
||||
<use href="#disc" x="0" y="63" />
|
||||
<use href="#disc" x="0" y="3" />
|
||||
<use href="#disc" x="0" y="-57" />
|
||||
<path id="cross" d="M 32 32, 232 232 M 232 32, 32 232" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
45
themes/default/images/database.svg
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" width="264" height="264" viewBox="0 0 264 264">
|
||||
<defs>
|
||||
<linearGradient id="cyl" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#7f99b9" />
|
||||
<stop offset="46%" stop-color="#a2bfdf" />
|
||||
<stop offset="66%" stop-color="#bae8fa" />
|
||||
<stop offset="86%" stop-color="#a4c6ed" />
|
||||
<stop offset="100%" stop-color="#98bcde" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.contour { fill: none; stroke-width: 5; stroke: #7894b2; }
|
||||
.frontcontour { fill: none; stroke-width: 3.5; stroke: #9abfe4; stroke-linecap: round; }
|
||||
.front { fill: url(#cyl); stroke: none; }
|
||||
.gradient {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-conic-gradient(
|
||||
from -90deg,
|
||||
#8f9fbc 0deg,
|
||||
#a2bfdf 25.2deg,
|
||||
#bae8fa 60deg,
|
||||
#a4c6ed 94.8deg,
|
||||
#8f9fbc 180deg
|
||||
);
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
<symbol id="disc">
|
||||
<clipPath id="top">
|
||||
<path d="M 28 108 A 104 48 180 0 1 236 108 A 104 48 180 0 1 28 108 z" />
|
||||
</clipPath>
|
||||
<foreignObject x="0" y="60" width="264" height="100" clip-path="url(#top)">
|
||||
<xhtml:div class="gradient" />
|
||||
</foreignObject>
|
||||
<path class="front" d="M 28 108 A 104 48 180 0 0 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
<path class="frontcontour" d="M 28 108 A 104 48 180 0 0 236 108" />
|
||||
<path class="contour" d="M 28 108 A 104 48 180 0 1 236 108 l 0 40 A 104 48 180 0 1 28 148 z" />
|
||||
</symbol>
|
||||
<use href="#disc" x="0" y="63" />
|
||||
<use href="#disc" x="0" y="3" />
|
||||
<use href="#disc" x="0" y="-57" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
themes/default/images/keep_eye_on.png
Normal file
After Width: | Height: | Size: 290 B |
11
themes/default/images/triangle-bottom.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M 64,118 8,42 120,42 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 320 B |
11
themes/default/images/triangle-left.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M10,64 86,120 86,8 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 318 B |
11
themes/default/images/triangle-right.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M118,64 42,120 42,8 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
11
themes/default/images/triangle-top.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
svg { background: transparent; }
|
||||
path { fill: #a8afbb; stroke-width: 10; stroke: #a8afbb; stroke-linejoin: round; }
|
||||
]]>
|
||||
</style>
|
||||
<path d="M 64,10 120,86 8,86 z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
|
@ -37,29 +37,28 @@
|
|||
{if $mode=='posting'}
|
||||
<script src="{$FORUM_ADDRESS}/js/posting.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
{/if}
|
||||
{if $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<script type="text/javascript" async src="{$settings.bbcode_latex_uri}"></script>
|
||||
<script type="text/x-mathjax-config">/*<![CDATA[*/MathJax.Hub.Config({
|
||||
tex2jax: {
|
||||
inlineMath: [ ["$","$"], ["\\(","\\)"] ],
|
||||
displayMath: [ ["$$","$$"], ["\\[","\\]"] ],
|
||||
ignoreClass: "tex2jax_ignore",
|
||||
processClass: "tex2jax_process",
|
||||
processEscapes: true
|
||||
},
|
||||
|
||||
TeX: {
|
||||
equationNumbers: { autoNumber: "AMS" }
|
||||
}
|
||||
});
|
||||
{if ($mode=='entry' || $mode=='thread' || $mode=='posting') && $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<script>/*<![CDATA[*/
|
||||
window.MathJax = {
|
||||
tex: {
|
||||
inlineMath: [ ["$","$"], ["\\(","\\)"] ],
|
||||
displayMath: [ ["$$","$$"], ["\\[","\\]"] ],
|
||||
processEscapes: true,
|
||||
tags: "ams"
|
||||
},
|
||||
options: {
|
||||
ignoreHtmlClass: "tex2jax_ignore",
|
||||
processHtmlClass: "tex2jax_process"
|
||||
}
|
||||
};
|
||||
/*!]]>*/</script>
|
||||
<script type="text/javascript" id="MathJax-script" async src="{$settings.bbcode_latex_uri}"></script>
|
||||
{/if}
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore">
|
||||
<!--[if IE]><div id="ie"><![endif]-->
|
||||
|
||||
<div id="top">
|
||||
<header id="top">
|
||||
|
||||
<div id="logo">
|
||||
{if $settings.home_linkname}<p class="home"><a href="{$settings.home_linkaddress}">{$settings.home_linkname}</a></p>{/if}
|
||||
|
@ -73,26 +72,28 @@
|
|||
{foreach $menu as $item}<li><a href="index.php?mode=page&id={$item.id}">{$item.linkname}</a></li>{/foreach}
|
||||
{/if}
|
||||
</ul>
|
||||
<form id="topsearch" action="index.php" method="get" title="{#search_title#}" accept-charset="{#charset#}"><div><input type="hidden" name="mode" value="search" /><label for="search-input">{#search_marking#}</label> <input id="search-input" type="text" name="search" value="{#search_default_value#}" /><!-- <input type="image" src="templates/{$settings.template}/images/submit.png" alt="[»]" />--></div></form></div>
|
||||
</div>
|
||||
<form id="topsearch" action="index.php" method="get" title="{#search_title#}" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="search" />
|
||||
<div><label for="search-input">{#search_marking#}</label> <input id="search-input" type="search" name="search" /> <input type="submit" value="{#go#}" /></div></form></div>
|
||||
</header>
|
||||
|
||||
<div id="subnav">
|
||||
<nav id="subnav">
|
||||
<div id="subnav-1">{include file="$theme/subtemplates/subnavigation_1.inc.tpl"}</div>
|
||||
<div id="subnav-2">{include file="$theme/subtemplates/subnavigation_2.inc.tpl"}</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id="content">
|
||||
<main id="content">
|
||||
{if $subtemplate}
|
||||
{include file="$theme/subtemplates/$subtemplate"}
|
||||
{else}
|
||||
{$content|default:""}
|
||||
{/if}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="footer">
|
||||
<div id="footer-1">{if $total_users_online}{#counter_users_online#|replace:"[total_postings]":$total_postings|replace:"[total_threads]":$total_threads|replace:"[registered_users]":$registered_users|replace:"[total_users_online]":$total_users_online|replace:"[registered_users_online]":$registered_users_online|replace:"[unregistered_users_online]":$unregistered_users_online}{else}{#counter#|replace:"[total_postings]":$total_postings|replace:"[total_threads]":$total_threads|replace:"[registered_users]":$registered_users}{/if}<br />
|
||||
<footer id="footer">
|
||||
<div id="statistics">{if $total_users_online}{#counter_users_online#|replace:"[total_postings]":$total_postings|replace:"[total_threads]":$total_threads|replace:"[registered_users]":$registered_users|replace:"[total_users_online]":$total_users_online|replace:"[registered_users_online]":$registered_users_online|replace:"[unregistered_users_online]":$unregistered_users_online}{else}{#counter#|replace:"[total_postings]":$total_postings|replace:"[total_threads]":$total_threads|replace:"[registered_users]":$registered_users}{/if}<br />
|
||||
{if $forum_time_zone}{#forum_time_with_time_zone#|replace:'[time]':$forum_time|replace:'[time_zone]':$forum_time_zone}{else}{#forum_time#|replace:'[time]':$forum_time}{/if}</div>
|
||||
<div id="footer-2">
|
||||
<div id="footerlinklist">
|
||||
<ul id="footermenu">
|
||||
<li><a href="#top" class="go-to-top-link" title="{#back_to_top_link_title#}">{#back_to_top_link#}</a></li>
|
||||
{if $settings.rss_feed==1} <li><a class="rss" href="index.php?mode=rss" title="{#rss_feed_postings_title#}">{#rss_feed_postings#}</a></li>
|
||||
|
@ -100,15 +101,13 @@
|
|||
<li><a href="index.php?mode=contact" title="{#contact_linktitle#}" rel="nofollow">{#contact_link#}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{*
|
||||
Please donate if you want to remove this link:
|
||||
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=1922497
|
||||
*}
|
||||
<div id="pbmlf"><a href="https://mylittleforum.net/">powered by my little forum</a></div>
|
||||
</footer>
|
||||
|
||||
<!--[if IE]></div><![endif]-->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
603
themes/default/style.min.css
vendored
|
@ -1,16 +1,21 @@
|
|||
body{color:#000;background:#f9f9f9;margin:0;padding:0;font-family:verdana,arial,sans-serif;font-size:100.01%}
|
||||
*,::before,::after{box-sizing:border-box}
|
||||
body{color:#000;background:#f9f9f9;margin:0;padding:0;text-align:start;font-family:verdana,arial,sans-serif;font-size:1em;display:flex;flex-direction:column;min-height:100vh}
|
||||
h1{margin-top:0;font-size:1.25em;font-weight:700}
|
||||
h2{margin-top:20px;font-size:1.25em;font-weight:700}
|
||||
p{margin-top:0}
|
||||
img{border:0}
|
||||
label{cursor:pointer}
|
||||
label,button,input[type="submit"],input[type="reset"]{cursor:pointer}
|
||||
a{color:#00c;text-decoration:none}
|
||||
a:visited{color:#00c}
|
||||
a:hover{color:#00f;text-decoration:underline}
|
||||
a:focus,a:hover{color:#00f;text-decoration:underline}
|
||||
a:active{color:red}
|
||||
a.stronglink{padding-left:13px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 4px}
|
||||
a.stronglink{color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat}
|
||||
html[dir="ltr"] a.stronglink{padding-left:13px;background-position:left 4px}
|
||||
html[dir="rtl"] a.stronglink{padding-right:13px;background-position:right -1306px}
|
||||
a.stronglink:visited{color:#00c}
|
||||
a.stronglink:hover{color:#00f;text-decoration:underline;background:url(images/bg_sprite_1.png) no-repeat 0 -46px}
|
||||
a.stronglink:focus,a.stronglink:hover{color:#00f;text-decoration:underline;background:url(images/bg_sprite_1.png) no-repeat}
|
||||
html[dir="ltr"] a.stronglink:focus,html[dir="ltr"] a.stronglink:hover{background-position:left -46px}
|
||||
html[dir="rtl"] a.stronglink:focus,html[dir="rtl"] a.stronglink:hover{background-position:right -1356px}
|
||||
a.stronglink:active{color:red}
|
||||
img.next{background:url(images/bg_sprite_2.png) no-repeat 0 -11px}
|
||||
img.next:hover{background:url(images/bg_sprite_2.png) no-repeat -6px -11px}
|
||||
|
@ -18,111 +23,124 @@ img.previous{background:url(images/bg_sprite_2.png) no-repeat 0 0}
|
|||
img.previous:hover{background:url(images/bg_sprite_2.png) no-repeat -6px 0}
|
||||
img.hide-sidebar{background:url(images/bg_sprite_2.png) no-repeat -9px -22px}
|
||||
img.show-sidebar{background:url(images/bg_sprite_2.png) no-repeat 0 -22px}
|
||||
#top{margin:0;padding:0;height:4.4em;color:#000;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 0}
|
||||
#logo{margin:0;padding:7px 0 7px 20px;float:left}
|
||||
body > *{margin:0;padding:0 1em;padding:0 1rem}
|
||||
#top{background:#d2ddea;background: linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 2.5em, rgb(237, 242, 245) 100%);display:flex;flex-direction:column}
|
||||
#logo{margin:0;padding:7px 0}
|
||||
#logo .home{margin:0 0 .3em;padding:0;font-size:.69em}
|
||||
#logo h1{margin:0;padding:0;font-size:1.75em}
|
||||
#logo h1{margin:0;padding:0;font-size:1.4em}
|
||||
#logo h1 a{color:navy;text-decoration:none}
|
||||
#logo h1 a:hover{color:#00a;text-decoration:none}
|
||||
#logo h1 a:focus,#logo h1 a:hover{color:#00a;text-decoration:none}
|
||||
#logo .index{margin:0;padding:0;font-size:.82em}
|
||||
#nav{margin:0;padding:7px 20px 7px 0;text-align:right}
|
||||
#usermenu{margin:0 0 1em;font-size:.69em;list-style-type:none}
|
||||
#usermenu li{display:inline;margin-left:5px}
|
||||
#usermenu li:first-child{margin-left:0;padding-left:0}
|
||||
#usermenu li:before{content:"|"}
|
||||
#usermenu li:first-child:before{content:""}
|
||||
#usermenu li a{padding-left:4px}
|
||||
#topsearch{display:inline}
|
||||
#nav{margin:0;padding:7px 0}
|
||||
#usermenu{margin:0 0 .75em;padding:0;font-size:.69em;text-align:start;list-style-type:none;display:flex;flex-wrap:wrap;gap:3px .4em}
|
||||
#usermenu li{margin:0}
|
||||
#usermenu li:not(:last-child):after{content:"|"}
|
||||
#usermenu li:not(:last-child) a{margin-inline-end:.4em}
|
||||
#usermenu li a{white-space:nowrap}
|
||||
#topsearch div{display:inline;font-size:.82em}
|
||||
#topsearch label{display:none}
|
||||
#topsearch #search-input{font-family:verdana,arial,sans-serif;font-size:.82em;width:14em;color:gray}
|
||||
#topsearch #search-input:focus{color:#000}
|
||||
#subnav{clear:both;margin:0;padding:0;height:1.8em;color:#000;background:#f9f9f9;border-top:1px solid #bacbdf;border-bottom:1px solid #bacbdf;line-height:1.8em}
|
||||
#subnav #subnav-1{font-size:.82em;margin:0;padding:0 0 0 20px;float:left}
|
||||
#subnav #subnav-2{font-size:.82em;margin:0;padding:0 20px 0 0;text-align:right}
|
||||
#subnav p.subnav{margin:0;padding:0 0 0 12px;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -89px}
|
||||
#topsearch #search-input{font-family:verdana,arial,sans-serif;width:14em}
|
||||
#subnav{background:#f9f9f9;border-top:1px solid #bacbdf;border-bottom:1px solid #bacbdf;line-height:1.8em;display:flex;flex-direction:column}
|
||||
#subnav-1,#subnav-2{font-size:.82em;margin:0;padding:0}
|
||||
html[dir="ltr"] #subnav p.subnav{margin:0;padding:0 0 0 12px;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -89px}
|
||||
html[dir="rtl"] #subnav p.subnav{margin:0;padding:0 12px 0 0;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat calc(100% + 6px) -89px}
|
||||
#subnav .small{font-size:.82em}
|
||||
#subnav form{display:inline}
|
||||
#subnav form div{display:inline}
|
||||
#subnavmenu{display:inline;margin:0;padding:0;font-size:.82em;list-style-type:none}
|
||||
#subnavmenu li{display:inline;margin-left:10px}
|
||||
#subnavmenu a.refresh{padding-left:14px;background:url(images/bg_sprite_1.png) no-repeat 0 -498px}
|
||||
#subnavmenu a.order-1{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -548px}
|
||||
#subnavmenu a.order-2{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -598px}
|
||||
#subnavmenu a.fold-1{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -648px}
|
||||
#subnavmenu a.fold-2{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -698px}
|
||||
#subnavmenu a.tableview{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -748px}
|
||||
#subnavmenu a.threadview{padding-left:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -798px}
|
||||
#subnavmenu a.openthread{padding-left:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -848px}
|
||||
#subnavmenu a.linear{padding-left:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -898px}
|
||||
#subnavmenu a.hierarchic{padding-left:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -948px}
|
||||
#subnavmenu a.fold-postings{padding-left:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -998px}
|
||||
a.rss{background:url(images/bg_sprite_1.png) no-repeat 3px -1048px}
|
||||
p.right a.rss{padding-left:15px}
|
||||
#subnavmenu li{display:inline}
|
||||
#subnavmenu li:not(:first-child){margin-inline-start:10px}
|
||||
#subnavmenu a.refresh{padding-inline-start:14px;background:url(images/bg_sprite_1.png) no-repeat 0 -498px}
|
||||
html[dir="rtl"] #subnavmenu a.refresh{background-position-x:calc(100% + 4px)}
|
||||
#subnavmenu a.order-1{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -548px}
|
||||
html[dir="rtl"] #subnavmenu a.order-1{background-position-x:calc(100% + 6px)}
|
||||
#subnavmenu a.order-2{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -598px}
|
||||
html[dir="rtl"] #subnavmenu a.order-2{background-position-x:calc(100% + 6px)}
|
||||
#subnavmenu a.fold-1{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -648px}
|
||||
html[dir="rtl"] #subnavmenu a.fold-1{background-position-x:calc(100% + 6px)}
|
||||
#subnavmenu a.fold-2{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -698px}
|
||||
html[dir="rtl"] #subnavmenu a.fold-2{background-position-x:calc(100% + 6px)}
|
||||
#subnavmenu a.tableview{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -748px}
|
||||
html[dir="rtl"] #subnavmenu a.tableview{background-position-x:calc(100% + 6px)}
|
||||
#subnavmenu a.threadview{padding-inline-start:12px;background:url(images/bg_sprite_1.png) no-repeat 0 -798px}
|
||||
html[dir="rtl"] #subnavmenu a.threadview{background-position-x:calc(100% + 6px)}
|
||||
|
||||
#subnavmenu a.openthread{padding-inline-start:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -848px}
|
||||
html[dir="rtl"] #subnavmenu a.openthread{background-position-x:calc(100% + 5px)}
|
||||
#subnavmenu a.linear{padding-inline-start:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -898px}
|
||||
html[dir="rtl"] #subnavmenu a.linear{background-position-x:calc(100% + 5px)}
|
||||
#subnavmenu a.hierarchic{padding-inline-start:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -948px}
|
||||
html[dir="rtl"] #subnavmenu a.hierarchic{background-position-x:calc(100% + 5px)}
|
||||
#subnavmenu a.fold-postings{padding-inline-start:13px;background:url(images/bg_sprite_1.png) no-repeat 0 -998px}
|
||||
html[dir="rtl"] #subnavmenu a.fold-postings{background-position-x:calc(100% + 5px)}
|
||||
a.rss{background:url(images/bg_sprite_1.png) no-repeat 2px -1048px}
|
||||
html[dir="rtl"] a.rss{background-position-x:calc(100% + 4px)}
|
||||
p.right a.rss{padding-inline-start:15px}
|
||||
input.small,select.small{font-family:verdana,arial,sans-serif;font-size:.82em}
|
||||
#content{margin:0;padding:20px;min-height:200px;background:#fff}
|
||||
#content p,#content ul,#content td{font-size:.82em;line-height:1.5em;max-width:60em}
|
||||
#content{margin:0;padding:1em;padding:1rem;line-height:1.5;background:#fff;flex:1;overflow:auto}
|
||||
#content p,#content ul,#content td,#postingform{font-size:.82em;max-width:60em}
|
||||
#content li,#content ul ul{font-size:1em}
|
||||
#content .xsmall{font-size:.69em;line-height:1.19em;color:gray;font-weight:400}
|
||||
#content .small{font-size:.69em;line-height:1.19em;font-weight:400}
|
||||
#footer{clear:both;font-size:.69em;line-height:1.5em;margin:0;padding:0;color:#000;background:#f9f9f9;border-top:1px solid #bacbdf}
|
||||
#footer #footer-1{margin:0;padding:7px 0 10px 20px;float:left}
|
||||
#footer #footer-2{margin:0;padding:7px 20px 10px 0;text-align:right}
|
||||
#footermenu{margin:0 0 1em;list-style-type:none}
|
||||
#footermenu li{display:inline;margin-left:5px;padding-left:0px}
|
||||
#footermenu li:first-child{margin-left:0;padding-left:0px}
|
||||
#footermenu li:before{content:"|"}
|
||||
#footermenu li:first-child:before{content:""}
|
||||
#footermenu li a{padding-left:5px}
|
||||
#footermenu li:first-child a,#footermenu li a.rss{padding-left:15px}
|
||||
#footermenu a.go-to-top-link{padding-left:16px;background:url(images/arrow_up.png) no-repeat 0 0 / auto 90%}
|
||||
#pbmlf{clear:both;margin:0;padding:0 20px 11px;text-align:center;font-size:.69em;color:gray}
|
||||
#footer{font-size:.69em;line-height:1.5em;padding:.5em 1em;padding:0.5rem 1rem;background:#f9f9f9;border-top:1px solid #bacbdf;display:grid;gap:.75em;grid-template-columns:1fr;grid-template-rows:auto auto auto;grid-template-areas: "statistics" "footerlinks" "projectlink"}
|
||||
#footer > *{margin:0;padding:0;}
|
||||
#statistics{grid-area:statistics}
|
||||
#footerlinklist{grid-area:footerlinks}
|
||||
#footermenu{margin:0;padding:0;list-style-type:none;display:flex;flex-wrap:wrap;gap:3px .4em}
|
||||
#footermenu li{margin:0}
|
||||
#footermenu li:not(:last-child):after{content: "|"}
|
||||
#footermenu li:not(:last-child) a{margin-inline-end:.4em}
|
||||
#footermenu li a.rss{padding-inline-start:15px}
|
||||
#footermenu a.go-to-top-link{padding-inline-start:12px}
|
||||
html[dir="ltr"] #footermenu a.go-to-top-link{background:url(images/arrow_up.png) no-repeat 0 0 / auto 90%}
|
||||
html[dir="rtl"] #footermenu a.go-to-top-link{background:url(images/arrow_up.png) no-repeat 100% 0 / auto 90%}
|
||||
#pbmlf{text-align:center;font-size:.69em;color:gray;grid-area:projectlink}
|
||||
#pbmlf a{color:gray;text-decoration:none}
|
||||
#sidebar{position:relative;width:13em;float:right;margin:0;padding:0}
|
||||
#main-grid{display:grid;grid-template-columns:calc(100vw - 2em);grid-template-rows:auto auto;gap:.75em;grid-template-areas:"sidebar" "threadlist"}
|
||||
#threadlist{grid-area:threadlist;}
|
||||
#sidebar{grid-area:sidebar;position:relative;margin:0;padding:0}
|
||||
#sidebar div{position:relative;z-index:2}
|
||||
#sidebar h3.sidebar{position:absolute;top:0;right:0;font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 17px 0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -150px;border:1px solid #bacbdf;z-index:1}
|
||||
#sidebar h3.sidebar a{color:#000;text-decoration:none;z-index:2}
|
||||
#sidebartoggle{position:absolute;top:5px;right:4px;margin:0;padding:0;z-index:3}
|
||||
#latest-postings{position:relative;margin:0 0 20px 0;background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
#sidebarcontent div:not(:last-child){margin: 0 0 .75em 0}
|
||||
h2.sidebar{font-size:.82em;line-height:1.7;font-weight:bold;margin-block:0 .75em;margin-inline:0;padding:0;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%);border:1px solid #bacbdf;z-index:1}
|
||||
h2.sidebar a{display:block;color:#000;padding-inline:1.625em .375em;background:url("images/triangle-top.svg") 0.375em calc(50% + .075em)/0.9em 0.9em no-repeat;text-decoration:none}
|
||||
.js-display-fold h2.sidebar a{background:url("images/triangle-bottom.svg") 0.375em calc(50% - .075em)/0.9em 0.9em no-repeat}
|
||||
h2.sidebar a:focus,h2.sidebar a:hover,h2.sidebar a:active{text-decoration:underline}
|
||||
.js-display-fold h2.sidebar {margin-block:0}
|
||||
#sidebarcontent div h3{font-size:.82em;line-height:1.7;font-weight:400;margin:0;padding:0 .375em;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%)}
|
||||
#latest-postings{background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
#latest-postings a.hide-sidebar{position:absolute;top:2px;right:4px;margin:0;padding:0;line-height:11px}
|
||||
#latest-postings h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -150px}
|
||||
#latest-postings ul{max-width:100%;font-size:.82em;list-style:none;margin:0;padding:0}
|
||||
#latest-postings li{margin:0;padding:0;line-height:1.5em;word-wrap:break-word;overflow:hidden}
|
||||
#latest-postings li a{background-color:#f0f0f0;line-height:1.5em;text-decoration:none;display:block;margin:0;padding:3px 5px}
|
||||
#latest-postings li:not(:last-child){border-bottom:1px dotted #bacbdf}
|
||||
#latest-postings li a{background-color:#f0f0f0;line-height:1.5;text-decoration:none;display:block;margin:0;padding:.25em .375em}
|
||||
#latest-postings li a:visited,#latest-postings li a.read{background-color:#fff}
|
||||
#latest-postings li a:visited .entry-title,#latest-postings li a.read .entry-title{color:#007}
|
||||
#latest-postings li a:focus,#latest-postings li a:hover{background:#efefef;text-decoration:none}
|
||||
#latest-postings li a:focus .entry-title,#latest-postings li a:hover .entry-title{text-decoration:underline}
|
||||
#latest-postings li a .entry-date,#latest-postings li a.read .entry-date{font-size:.82em;color:gray}
|
||||
#tagcloud{position:relative;margin:0 0 20px 0;background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
#tagcloud{background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
#tagcloud p{margin:0;padding:5px;font-size:.69em;line-height:1.5em}
|
||||
#tagcloud a.hide-sidebar{position:absolute;top:2px;right:4px;margin:0;padding:0;line-height:11px}
|
||||
#tagcloud h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -150px}
|
||||
#tagcloud strong{font-weight:700;font-size:1.051em}
|
||||
#modmenu{position:relative;margin:0 0 20px 0;background:#f9f9f9;border:1px solid #bacbdf}
|
||||
#modmenu h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -150px}
|
||||
#mod-options{list-style:none;margin:0;padding:5px;font-size:.69em!important;line-height:1.7em!important}
|
||||
#mod-options a {padding-left:15px;}
|
||||
#mod-options a.delete-marked{background:url(images/bg_sprite_4.png) no-repeat 0 -296px}
|
||||
#mod-options a.manage{background:url(images/bg_sprite_4.png) no-repeat 0 -347px}
|
||||
#mod-options a.report{background:url(images/bg_sprite_4.png) no-repeat 0 -48px}
|
||||
#mod-options a.delete-spam{background:url(images/bg_sprite_3.png) no-repeat 0 -47px}
|
||||
#mod-options a.non-activated-users{background:url(images/bg_sprite_4.png) no-repeat 0 -396px}
|
||||
#bottombar{position:relative;margin:20px 0 -20px}
|
||||
#bottombar h3.sidebar{position:relative;float:right;font-size:.69em;line-height:1.6em;font-weight:400;margin:0 0 20px;padding:0 17px 0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -140px;border:1px solid #bacbdf}
|
||||
#bottombar h3.sidebar a{color:#000;text-decoration:none}
|
||||
#bottombar:not(.js-display-fold) h3.sidebar{margin:0}
|
||||
#bottombarhandle{position:absolute;top:0;right:4px;margin:0;padding:0;z-index:3}
|
||||
#bottombar #sidebarcontent div{position:relative;z-index:2;background:#f9f9f9;border:1px solid #bacbdf;margin:0 0 20px}
|
||||
#bottombar h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -140px}
|
||||
#bottombar #tagcloud p{padding:10px}
|
||||
#bottombar .xsmall{font-size:.82em}
|
||||
#bottombar #mod-options{padding:10px}
|
||||
#modmenu{background:#f9f9f9;border:1px solid #bacbdf}
|
||||
#mod-options{list-style:none;margin:0;padding:0;font-size:.82em;line-height:1.7}
|
||||
#mod-options li:not(:last-child){margin-block-end:0.25em}
|
||||
#mod-options a{padding-inline:.375em;display:block}
|
||||
#mod-options a span{padding-inline-start:16px}
|
||||
#mod-options a.delete-marked{background:url(images/bg_sprite_4.png) no-repeat .375em -293px}
|
||||
html[dir="rtl"] #mod-options a.delete-marked{background-position-x:calc(100% - .375em)}
|
||||
#mod-options a.manage{background:url(images/bg_sprite_4.png) no-repeat .375em -344px}
|
||||
html[dir="rtl"] #mod-options a.manage{background-position-x:calc(100% - .375em)}
|
||||
#mod-options a.report{background:url(images/bg_sprite_4.png) no-repeat .375em -45px}
|
||||
html[dir="rtl"] #mod-options a.report{background-position-x:calc(100% - .375em)}
|
||||
#mod-options a.delete-spam{background:url(images/bg_sprite_3.png) no-repeat .375em -45px}
|
||||
html[dir="rtl"] #mod-options a.delete-spam{background-position-x:calc(100% - .375em)}
|
||||
#mod-options a.non-activated-users{background:url(images/bg_sprite_4.png) no-repeat .375em -393px}
|
||||
html[dir="rtl"] #mod-options a.non-activated-users{background-position-x:calc(100% - .375em)}
|
||||
input[name=sort_of_agreement] + iframe {height:400px;height:60vh}
|
||||
#usersonline{background:#f9f9f9;border:1px solid #bacbdf;margin:20px 0}
|
||||
#usersonline h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -140px}
|
||||
#usersonline h3{font-size:.69em;line-height:1.7em;font-weight:400;margin:0;padding:0 5px;background:#d2ddea; background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%)}
|
||||
#usersonline p{margin:0;padding:7px 5px;font-size:.82em;line-height:1.5em}
|
||||
.posting img.avatar{float:right;margin:0 0 20px 20px}
|
||||
.posting img.avatar{float:right;float:inline-end;margin:0 0 20px 20px}
|
||||
.posting h1{margin:0 0 2px;padding:0}
|
||||
.posting h1 .category{font-size:.57em}
|
||||
.posting .author{margin:1px 0 18px;font-style:italic}
|
||||
|
@ -135,69 +153,88 @@ img.no-text{cursor:help}
|
|||
pre{max-width:100%;overflow:auto}
|
||||
code{font-family:"courier new",courier;color:navy}
|
||||
code.monospace{color:#000}
|
||||
blockquote{margin:0;padding:0 0 0 30px;color:#6f6f6f;font-style:italic;background:url(images/quote.png) no-repeat top left}
|
||||
blockquote{margin:0;padding-block:0;padding-inline:30px 0;color:#646464;font-style:italic;background:url(images/quote.png) no-repeat top left}
|
||||
html[dir="rtl"] blockquote{background-position-x:right}
|
||||
blockquote code{font-family:"courier new",courier;color:#6f6f6f}
|
||||
.posting-footer{clear:both;margin:25px 0 0;padding:0}
|
||||
.posting-footer .reply{font-size:.82em;float:left}
|
||||
.posting-footer .locked{font-size:.82em;color:gray;padding-left:16px;background:url(images/locked.png) no-repeat 0 0}
|
||||
.posting-footer .info{text-align:right}
|
||||
.posting-footer .views{font-size:.69em;color:gray}
|
||||
.posting-footer .options{display:inline;font-size:.69em!important;list-style-type:none;max-width:100%!important;padding:0}
|
||||
.posting-footer .options li{display:inline;margin:0 0 0 1em}
|
||||
.posting-footer a.edit{padding-left:16px;background:url(images/bg_sprite_3.png) no-repeat 0 2px}
|
||||
.posting-footer a.delete{padding-left:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -47px}
|
||||
.posting-footer a.go-to-top-link{ padding-left:16px;background:url(images/arrow_up.png) no-repeat 0 0 / auto 90%}
|
||||
.posting-footer a.add-bookmark{padding-left:14px;background:url(images/bg_sprite_3.png) no-repeat 0 -97px}
|
||||
.posting-footer a.delete-bookmark{padding-left:14px;background:url(images/bg_sprite_3.png) no-repeat 0 -147px}
|
||||
.posting-footer a.move{padding-left:13px;background:url(images/bg_sprite_4.png) no-repeat 0 2px}
|
||||
.posting-footer a.report{padding-left:14px;background:url(images/bg_sprite_4.png) no-repeat 0 -48px}
|
||||
.posting-footer a.lock{padding-left:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -99px}
|
||||
.posting-footer a.unlock{padding-left:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -149px}
|
||||
.posting-footer a.lock-thread{padding-left:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -200px}
|
||||
.posting-footer a.unlock-thread{padding-left:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -250px}
|
||||
.thread-posting{position:relative;border-left:10px solid #d2ddea;border-right:1px solid #f0f0f0;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0;margin:0 0 20px;padding:0;background:#fff}
|
||||
.new{border-left:10px solid #88a9cf!important}
|
||||
.posting-footer{margin:1em 0 0;padding:0;display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;grid-template-areas:"pageviews" "replylink" "moderationlinks";gap:.25em}
|
||||
.posting-footer .reply{font-size:.82em;grid-area:replylink}
|
||||
.posting-footer .locked{font-size:.82em;color:gray;padding-inline-start:16px;background:url(images/locked.png) no-repeat 0 0}
|
||||
html[dir="rtl"] .posting-footer .locked{background-position-x:calc(100% + 2px)}
|
||||
.posting-footer .views{font-size:.69em;color:gray;text-align:end;grid-area:pageviews}
|
||||
#content .posting-footer .options{font-size:.69em!important;list-style-type:none;max-width:100%;margin:0;padding:0;grid-area:moderationlinks;display:flex;flex-wrap:wrap;gap:.5em;justify-content:flex-start}
|
||||
.posting-footer .options li{margin:0}
|
||||
.posting-footer a{white-space:nowrap}
|
||||
.posting-footer a.edit{padding-inline-start:16px;background:url(images/bg_sprite_3.png) no-repeat 0 2px}
|
||||
html[dir="rtl"] .posting-footer a.edit{background-position-x:100%}
|
||||
.posting-footer a.delete{padding-inline-start:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -47px}
|
||||
html[dir="rtl"] .posting-footer a.delete{background-position-x:calc(100% + 3px)}
|
||||
.posting-footer a.go-to-top-link{padding-inline-start:12px;background:url(images/arrow_up.png) no-repeat 0 0 / auto 90%}
|
||||
html[dir="rtl"] .posting-footer a.go-to-top-link{background-position-x:100%}
|
||||
.posting-footer a.add-bookmark{padding-inline-start:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -98px}
|
||||
html[dir="rtl"] .posting-footer a.add-bookmark{background-position-x:calc(100% + 3px)}
|
||||
.posting-footer a.delete-bookmark{padding-inline-start:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] .posting-footer a.delete-bookmark{background-position-x:calc(100% + 3px)}
|
||||
.posting-footer a.move{padding-inline-start:13px;background:url(images/bg_sprite_4.png) no-repeat 0 2px}
|
||||
html[dir="rtl"] .posting-footer a.move{background-position:100% -449px}
|
||||
.posting-footer a.report{padding-inline-start:13px;background:url(images/bg_sprite_4.png) no-repeat 0 -48px}
|
||||
html[dir="rtl"] .posting-footer a.report{background-position-x:calc(100% + 2px)}
|
||||
.posting-footer a.lock{padding-inline-start:14px;background:url(images/bg_sprite_4.png) no-repeat 0 -100px}
|
||||
html[dir="rtl"] .posting-footer a.lock{background-position-x:calc(100% + 2px)}
|
||||
.posting-footer a.unlock{padding-inline-start:14px;background:url(images/bg_sprite_4.png) no-repeat 0 -149px}
|
||||
html[dir="rtl"] .posting-footer a.unlock{background-position-x:calc(100% + 2px)}
|
||||
.posting-footer a.lock-thread{padding-inline-start:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -200px}
|
||||
html[dir="rtl"] .posting-footer a.lock-thread{background-position-x:100%}
|
||||
.posting-footer a.unlock-thread{padding-inline-start:16px;background:url(images/bg_sprite_4.png) no-repeat 0 -250px}
|
||||
html[dir="rtl"] .posting-footer a.unlock-thread{background-position-x:100%}
|
||||
.thread-posting{position:relative;border-inline-start:10px solid #d2ddea;border-inline-end:1px solid #f0f0f0;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0;margin:0 0 20px;padding:0;background:#fff}
|
||||
.new{border-inline-start-color:#88a9cf !important}
|
||||
.thread-posting h1,.thread-posting h2{margin:0 0 2px;padding:0}
|
||||
.thread-posting h1 .category{font-size:.57em}
|
||||
.thread-posting .header{background:#f5f5f5;margin:0;padding:0 0 5px 10px}
|
||||
.thread-posting .header img.avatar{position:relative;margin:0 0 20px 20px;padding:5px;background:#f5f5f5;float:right}
|
||||
.thread-posting .body{margin:0;padding:10px}
|
||||
.thread-posting .header{background:#f5f5f5;margin:0;padding-block:0 5px;padding-inline:10px}
|
||||
.thread-posting .header img.avatar{position:relative;margin:0 20px 20px 20px;padding:5px;background:#f5f5f5;float:right;float:inline-end}
|
||||
.thread-posting .author{margin:1px 0 0;font-style:italic}
|
||||
.thread-posting .posting-footer{margin:10px}
|
||||
.thread-posting .body,.thread-posting .signature,#content .thread-posting p.tags,.thread-posting .posting-footer{margin:0;padding:10px}
|
||||
.hide-posting{position:absolute;top:0;left:-10px}
|
||||
.thread-wrapper{margin:0;padding:0}
|
||||
.reply-wrapper{margin:0 0 0 20px;padding:0;list-style-type:none}
|
||||
.deep-reply-wrapper{margin:0 0 0 10px;padding:0;list-style-type:none}
|
||||
.very-deep-reply-wrapper{margin:0;padding:0;list-style-type:none}
|
||||
.reply-wrapper{margin-block:0;margin-inline:20px 0;padding:0;list-style-type:none}
|
||||
.deep-reply-wrapper{margin-block:0;margin-inline:10px 0;padding:0;list-style-type:none}
|
||||
.very-deep-reply-wrapper{margin-block:0;margin-inline:5px 0;padding:0;list-style-type:none}
|
||||
.op-link,.op-link a{font-size:.9em;color:gray}
|
||||
#content .body{overflow:hidden}
|
||||
#content .body img{max-width:100%;height:auto}
|
||||
#content p.tags{margin:20px 0 0;padding:0;color:gray;font-size:.69em;line-height:1.42em}
|
||||
#content p.signature{margin:10px 0 0;padding:0;color:gray;font-weight:400;font-size:.69em;line-height:1.42em}
|
||||
#content .signature p{margin:10px 0 0;padding:0;color:gray;font-weight:400;font-size:.69em;line-height:1.42em}
|
||||
h2.postingform{margin:0 0 20px}
|
||||
p.reply-to{margin:0 0 20px}
|
||||
div.complete-thread{margin-bottom:30px}
|
||||
div.complete-thread p.left{float:left}
|
||||
#content div.complete-thread p.right{float:right;text-align:right;font-size:.69em}
|
||||
div.complete-thread p.left{float:left;float:inline-start}
|
||||
#content div.complete-thread p.right{float:right;float:inline-end;text-align:end;font-size:.69em}
|
||||
ul.openthread{clear:both}
|
||||
#usernav{height:1.5em;margin:0 0 15px;padding:0}
|
||||
#usersearch{float:left;font-size:.82em}
|
||||
#usersearch{font-size:.82em;margin:.5em 0;padding:.5em 0 .75em 0;border-bottom:1px solid #bacbdf}
|
||||
#usersearch div,#usersearch form{display:inline}
|
||||
#usersearch label{display:none}
|
||||
#userpagination{float:right;text-align:right}
|
||||
#usernav-bottom{margin:15px 0 0;padding:0;text-align:right;font-size:.82em}
|
||||
#admin-usernav-bottom{height:2em;margin:15px 0 20px}
|
||||
#selectioncontrols{height:2em;margin:10px 0 0;padding:0}
|
||||
#admin-usernav-bottom #selectioncontrols{float:left;height:2em;margin:0;padding:0}
|
||||
#selectioncontrols #arrow-selected{margin:0 0 0 13px}
|
||||
#selectioncontrols .checkall{margin-left:1em;font-size:.69em}
|
||||
#admin-usernav-bottom #userpagination{float:right;height:2em;text-align:right}
|
||||
.spam{color:red;font-weight:700;background:#ff0}
|
||||
.spam-note{font-weight:700;color:red;background:#ff0;padding:5px}
|
||||
#usernav-bottom{margin:15px 0 0;padding:0;text-align:end;font-size:.82em}
|
||||
#selectioncontrols{margin:0.5em 0 0;display:flex;align-items:center;gap:.25em}
|
||||
#selectioncontrols::before{content:"";width:calc(24px + 1.25em);height:1.45em;display:inline-block;background:url(images/arrow_selected.png) no-repeat calc(0% + 1em) center;align-content:flex-start}
|
||||
html[dir="rtl"] #selectioncontrols::before{transform:scaleX(-1)}
|
||||
#selectioncontrols button{align-self:flex-end;display:flex;align-items:center;gap:0.25em}
|
||||
#selectioncontrols .checkall{margin-inline-start:1em;font-size:.69em}
|
||||
#admin-usernav-bottom #userpagination{float:right;float:inline-end;height:2em;text-align:end}
|
||||
.thread ul{font-size:1em}
|
||||
.thread li{font-size:1em}
|
||||
.thread li li{font-size:1em}
|
||||
.thrbeg{font-weight:700}
|
||||
.caution{padding:0 0 0 20px;color:red;font-weight:700;background:url(images/caution.png) no-repeat left center}
|
||||
.ok{padding:0 0 0 20px;font-weight:700;color:red;background:url(images/tick.png) no-repeat left center}
|
||||
.spam,.caution,.ok{font-weight:bold}
|
||||
.spam,.caution{color:#882008;background-color:#ff5}
|
||||
.ok{color:#086620}
|
||||
.notice{border:1px solid}
|
||||
.notice.spam{padding:.5em}
|
||||
.notice.spam,.notice.caution{border-color:#882008}
|
||||
.notice.caution,.notice.ok,.notice.spam{padding-block:.5em;padding-inline:2.25em .5em}
|
||||
.notice.caution,.notice.spam{background:#ffffb8 url(images/caution.png) no-repeat .5em .625em}
|
||||
html[dir="rtl"] .notice.caution,html[dir="rtl"] .notice.spam{background-position-x:calc(100% - .5em)}
|
||||
.notice.ok{background:#5fa url(images/tick.png) no-repeat .55em .625em;border-color:#086620}
|
||||
html[dir="rtl"] .notice.ok{background-position-x:calc(100% - .55em)}
|
||||
.entryline{clear:both;margin:15px 0;border-top:1px dotted gray;border-left:0;border-right:0;border-bottom:0;height:1px}
|
||||
.marked-threads{margin:30px 0 0;font-size:11px}
|
||||
.marked-threads-board{margin:10px 1px 0;font-size:11px}
|
||||
|
@ -205,7 +242,13 @@ ul.openthread{clear:both}
|
|||
span.userdata{margin:0;padding:0}
|
||||
.online{color:red}
|
||||
.underline{text-decoration:underline}
|
||||
label.main{font-weight:700}
|
||||
ins {font-style:italic}
|
||||
del,s {color:#555}
|
||||
#card {border:1px solid #bacbdf;border-radius:.375em;padding-inline:.5em;padding-block:.5em;margin-inline:auto;min-width:16em;max-width:24em}
|
||||
#card > * {margin-inline: 0;margin-block:0 .75rem}
|
||||
#card > *:last-child {margin-block:0}
|
||||
#card form > *:not(:last-child) {margin-block:0 .375rem}
|
||||
label.main{font-weight:bold;display:block}
|
||||
label.active{color:#000}
|
||||
label.inactive{color:gray!important}
|
||||
label.inactive input{color:gray}
|
||||
|
@ -222,6 +265,7 @@ ul.filelist{list-style-type:none;padding-left:0;margin-left:0;font-size:.82em;li
|
|||
ul.filelist img{margin:0 5px -3px 0;padding:0}
|
||||
ul.thread span.mod,ul.thread span.admin,td span.admin,td span.mod{cursor:help}
|
||||
.registered_user::after{content:" \00AE"}
|
||||
.author-name{font-weight:bold}
|
||||
#captcha{margin:0;padding:0}
|
||||
#captcha p{font-size:1em}
|
||||
#captcha img,img.captcha{border:1px solid #000}
|
||||
|
@ -232,38 +276,43 @@ ul.thread span.mod,ul.thread span.admin,td span.admin,td span.mod{cursor:help}
|
|||
.category-regusers-b{color:#00c;font-size:.82em;font-weight:400;border-bottom:1px dotted #00c}
|
||||
.category-adminmod-b{color:#00c;font-size:.82em;font-weight:400;border-bottom:1px solid #00c}
|
||||
h3.preview{margin:10px 0 3px;font-size:.82em;font-weight:700;color:red}
|
||||
div.preview{margin:0 0 25px;padding:10px;color:#000;border:1px dotted red}
|
||||
div.preview{margin:0 0 25px;padding:10px;border:1px dotted red}
|
||||
table.wide{width:100%}
|
||||
table.normaltab{width:100%;border:1px solid #bacbdf;background:#fff}
|
||||
table.normaltab th{vertical-align:top;font-size:.82em;font-weight:700;text-align:left;color:#000;background:#d2ddea url(images/bg_gradient_x.png) repeat-x 0 -140px}
|
||||
table.normaltab td{vertical-align:top;font-size:.82em;font-weight:400;color:#000}
|
||||
table.normaltab th{vertical-align:top;font-size:.82em;font-weight:700;text-align:left;background:#d2ddea; background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%)}
|
||||
table.normaltab td{vertical-align:top;font-size:.82em;font-weight:400}
|
||||
table.normaltab tr.a td{background:#f5f5f5}
|
||||
table.normaltab tr.b td{background:#f9f9f9}
|
||||
table.normaltab td.c{width:150px;background:#d2ddea url(images/bg_gradient_y.png) repeat-y right center}
|
||||
table.normaltab td.c{width:15em;background:#d2ddea;background:linear-gradient(to right, rgb(210, 222, 236) 0, rgb(210, 222, 236) 9em, rgb(237, 242, 245) 100%)}
|
||||
table.normaltab td.d{background:#f5f5f5}
|
||||
table.normaltab td.subject{min-width:50%}
|
||||
#content table.normaltab p{font-size:1em}
|
||||
#content table.normaltab .small,#content table.normaltab .xsmall{font-size:.82em}
|
||||
table.normaltab tr.drag td{background:#ddd}
|
||||
p.userdata{margin:0}
|
||||
.normalform{font-size:.82em}
|
||||
.normalform{font-size:.82em;margin:0}
|
||||
.normalform:not(:first-child){margin:1em 0 0}
|
||||
.inline{display:inline}
|
||||
#postingform fieldset{border:none;margin:0 0 1em}
|
||||
#postingform p{font-size:1em;margin:0 0 5px;padding:0}
|
||||
#postingform label.input{display:block;float:left;width:8em;font-weight:700}
|
||||
#postingform label.textarea{font-weight:700}
|
||||
#postingform input.checkbox{margin-left:8em}
|
||||
#postingform #insert-quote{margin:0 0 0 .5em;font-weight:400;font-size:.82em;padding:0 0 0 14px;background:url(images/quote_message.png) no-repeat left center transparent;border:none;color:#00c}
|
||||
#postingform fieldset{border:none;margin-inline:0;}
|
||||
#postingform fieldset:not(:last-child){margin-block:0 1em}
|
||||
#postingform fieldset > *{font-size:1em;margin:0;padding:0}
|
||||
#postingform fieldset > *:not(:last-child){margin-block-end:.75em}
|
||||
#postingform #sticky-selection{padding-inline:0;list-style:none}
|
||||
#postingform label.input{display:block;font-weight:700;margin-inline:0;margin-block:0 .25em}
|
||||
#postingform label.textarea{font-weight:700;margin-block:0 .25em; margin-inline:0}
|
||||
div#entry-input,#postingform input[type="text"],#postingform input[type="email"],#postingform input[type="url"],#postingform input[type="tel"]{max-width:calc(100vw - 4em)}
|
||||
#postingform #insert-quote{margin-block:0 .25em;margin-inline:.75em 0;font-weight:400;font-size:.82em;padding-block:0;padding-inline:14px 0;background:url(images/quote_message.png) no-repeat left center transparent;border:none;color:#00c}
|
||||
html[dir="rtl"] #postingform #insert-quote{background-position-x:right}
|
||||
#postingform #insert-quote:focus,#postingform #insert-quote:hover{color:#00f}
|
||||
#postingform #text{width:700px;height:400px;float:left}
|
||||
#postingform #format-bar{margin-left:720px}
|
||||
#postingform{font-size:.82em}
|
||||
#postingform #text{margin:0;width:100%;height:24em}
|
||||
#postingform .small,#postingform .xsmall{font-size:.82em}
|
||||
#delete_cookie{font-size:.82em}
|
||||
#delete_cookie a{padding-left:13px;background:url(images/bg_sprite_3.png) no-repeat 0 -47px}
|
||||
#bbcode-bar{margin:0 0 10px;width:62px}
|
||||
#bbcode-bar button{width:62px;font-size:11px;margin:0 0 3px;padding:0}
|
||||
#bbcode-bar button span{line-height:1.4em}
|
||||
div#format-bar{margin:0 !important;padding:.375em;background:#f2f2f2}
|
||||
#postingform #format-bar > *{display:flex;flex-wrap:wrap;gap:.125em}
|
||||
#postingform #format-bar > *:not(:last-child){margin-block-end:.375em}
|
||||
#format-bar button{font-size:.82em;min-height:2.4em;margin:0;padding-block:.25em;padding-inline:1em}
|
||||
#format-bar button span{display:block;line-height:1.4em}
|
||||
#bbcodebutton-b span{font-weight:700}
|
||||
#bbcodebutton-i span{font-style:italic}
|
||||
#bbcodebutton-link span{color:#00c;text-decoration:underline}
|
||||
|
@ -278,187 +327,179 @@ p.userdata{margin:0}
|
|||
#bbcode-options div{background:#efefef;border:1px solid silver;padding:0;font-size:.82em}
|
||||
#bbcode-options ul{list-style-type:none;margin:0;padding:0}
|
||||
#bbcode-options ul a{color:#000;display:block;text-decoration:none;padding:3px 5px;min-width:100px}
|
||||
#bbcode-options ul a:hover{background:#e0e0e0}
|
||||
#bbcode-options ul a:focus,#bbcode-options ul a:hover{background:#e0e0e0}
|
||||
#bbcode-options table{background:#bbb;border:none;margin:0;padding:0;border-collapse:collapse}
|
||||
#bbcode-options table td{width:15px!important;height:15px!important;margin:0;padding:0}
|
||||
#bbcode-options table a{margin:0;padding:0;border:1px solid #bbb;width:15px;height:15px}
|
||||
#bbcode-options table a:hover{border:1px solid #fff;text-decoration:none}
|
||||
#smiley-bar{width:70px}
|
||||
#smiley-bar button.default{margin:0 1px 1px 0;padding:0;width:30px}
|
||||
#smiley-bar button.default span{display:block;line-height:1px;margin:0;padding:0}
|
||||
#smiley-bar button.default img{margin:0;padding:0}
|
||||
#smiley-bar button.more-smilies{width:62px;font-size:11px;margin:0 0 3px;padding:0}
|
||||
#smiley-bar button span{line-height:1.4em}
|
||||
#additional-smilies{border:none!important;margin:0;padding:7px 0 0 7px !important;max-width:200px}
|
||||
#additional-smilies img{margin:0 7px 7px 0}
|
||||
#bbcode-instructions{margin:0;padding:0;font-size:.82em}
|
||||
#bbcode-instructions dt{font-weight:700}
|
||||
#bbcode-instructions dd{margin-left:0}
|
||||
#smiley-instructions dt{float:left}
|
||||
#smiley-instructions dd{clear:right}
|
||||
#bbcode-options table a:focus,#bbcode-options table a:hover{border:1px solid #fff;text-decoration:none}
|
||||
#additional-smilies{max-width:200px;display:flex;flex-wrap:wrap;align-items:self-start;align-content:stretch;gap:.125em}
|
||||
#additional-smilies button{font-size:.82em;min-height:2.4em;margin:0;padding-block:.25em;padding-inline:1em;background:transparent;border:none}
|
||||
#smiley-bar button img,#additional-smilies button img{display:block;width:1.2em;height:auto;margin:0;padding:0}
|
||||
#formatting-help > *{margin-block:0 .75em;margin-block:0 .75rem;padding:0}
|
||||
#formatting-help dl > div:not(:last-child){margin-block:0 .375em}
|
||||
#formatting-help dt{font-weight:bold}
|
||||
#formatting-help dd{margin-left:0}
|
||||
#formatting-help dd img{display:block}
|
||||
#smiley-instructions div{display:flex;gap:.5em}
|
||||
#smiley-instructions dt{flex:0 0 6em}
|
||||
button.insert-smiley{margin:0;padding:0;font-size:11px;font-weight:400}
|
||||
#smilies li{display:inline-block;min-width:50px;padding:0 10px 10px 0;white-space:nowrap}
|
||||
ul.pagination{margin:0;padding:0;list-style-type:none;font-size:.9em}
|
||||
ul.pagination li{display:inline;font-size:.9em;margin-left:.7em;position:relative}
|
||||
ul.pagination li:first-child{margin-left:0}
|
||||
ul.pagination{margin:.75em 0;padding:0;list-style-type:none}
|
||||
#content ul.pagination li{display:inline;font-size:.9em;margin-inline-start:.5em;position:relative}
|
||||
#content ul.pagination li:first-child{margin-inline-start:0}
|
||||
ul.pagination a,ul.pagination span{border:1px solid #bacbdf;background:#f9f9f9;padding:1px 6px}
|
||||
ul.pagination a:hover{border:1px solid #00c;background:#efefef;text-decoration:none}
|
||||
ul.pagination a:focus,ul.pagination a:hover{border:1px solid #00c;background:#efefef;text-decoration:none}
|
||||
ul.pagination .current{border:1px solid #bacbdf;color:red;font-weight:700}
|
||||
ul.pagination-index{margin:0;text-align:right;max-width:100%!important}
|
||||
ul.pagination-index-table{margin-top:20px!important;text-align:right;max-width:100%!important}
|
||||
#more-smilies{position:absolute;width:200px;background:#ffc;border:1px solid silver;display:none}
|
||||
#more-smilies .close{position:absolute;top:0;right:0;padding:0}
|
||||
#more-smilies-body{overflow:auto}
|
||||
#more-smilies-content{max-height:300px}
|
||||
#more-smilies-content p{padding:10px}
|
||||
#more-smilies-content img{padding:5px}
|
||||
#colorpicker{position:absolute;background:#bbb;border:1px solid #bbb;display:none}
|
||||
#colorpicker table{margin:0;padding:0;line-height:10px}
|
||||
#colorpicker table img{margin:0;padding:0;border:1px solid #bbb}
|
||||
#colorpicker table a:hover img{margin:0;padding:0;border:1px solid #fff}
|
||||
#colorpicker table a:focus img,#colorpicker table a:hover img{margin:0;padding:0;border:1px solid #fff}
|
||||
#sizepicker{position:absolute;background:#efefef;border:1px solid silver;display:none;padding:0}
|
||||
#sizepicker p{margin:0;padding:0}
|
||||
#sizepicker p a{color:#000;display:block;text-decoration:none;padding:3px}
|
||||
#sizepicker p a:hover{background:#e0e0e0}
|
||||
#sizepicker p a:focus,#sizepicker p a:hover{background:#e0e0e0}
|
||||
#codepicker{position:absolute;background:#efefef;border:1px solid silver;display:none;padding:0}
|
||||
#codepicker ul{list-style-type:none;margin:0;padding:0}
|
||||
#codepicker ul a{color:#000;display:block;text-decoration:none;padding:1px 5px}
|
||||
#codepicker ul a:hover{background:#e0e0e0}
|
||||
.additional-admin-info{float:right}
|
||||
.additional-admin-info div{background:#f9f9f9;border:1px solid #bacbdf;margin:0 0 20px 0;padding:0;width:13em}
|
||||
.additional-admin-info h3{margin:0;padding:0 5px;font-size:0.69em;line-height:1.7em;background:#d2ddea url("images/bg_gradient_x.png") repeat-x scroll 0 -150px}
|
||||
.additional-admin-info p{font-size:0.69em;line-height:1.5em;margin:0;padding:5px}
|
||||
#admin-info-install_script_exists h3{color: red;}
|
||||
#admin-info-install_script_exists h3::before{content: url("images/caution.png"); padding-right: 5px;}
|
||||
.adminmenu{list-style-type:none;padding-left:0;margin-left:0;font-size:.82em;line-height:1.7em!important}
|
||||
.adminmenu a{text-decoration:none}
|
||||
.adminmenu a:hover span{text-decoration:underline}
|
||||
.adminmenu a img{margin:0 5px -3px 0;padding:0}
|
||||
#codepicker ul a:focus,#codepicker ul a:hover{background:#e0e0e0}
|
||||
.buttonbar{display:flex; flex-wrap:wrap; gap:.3em;align-items:baseline}
|
||||
.buttonbar > *{margin-block:0}
|
||||
.buttonbar button{padding:.3em}
|
||||
.buttonbar a{display:inline-block;text-align:center;align-content:center;padding:.3em}
|
||||
#admin-main-menu{display:grid;grid-template-areas:"infoboxes" "mainmenu";grid-template-columns:1fr;grid-template-rows:auto auto;gap:.75em}
|
||||
#admin-main-menu > *{margin:0;padding:0}
|
||||
.additional-admin-info{grid-area:infoboxes}
|
||||
.additional-admin-info div{background:#f9f9f9;border:1px solid #bacbdf;padding:0}
|
||||
.additional-admin-info div:not(:last-child){margin:0 0 .75em 0}
|
||||
.additional-admin-info div > *{margin:0;padding-inline:.375em;font-size:.82em !important;}
|
||||
.additional-admin-info h3{line-height:1.7em;background:#d2ddea;background:linear-gradient(to bottom, rgb(210, 222, 236) 0, rgb(237, 242, 245) 100%)}
|
||||
.additional-admin-info p{padding-block:.375em;line-height:1.5}
|
||||
#admin-info-install_script_exists h3{color:red}
|
||||
#admin-info-install_script_exists h3::before{content:url("images/caution.png"); padding-inline-start:5px}
|
||||
main > .adminmenu{margin-block:1em;margin-inline:0;padding:0}
|
||||
.adminmenu{list-style-type:none;font-size:.82em;line-height:1.75em;grid-area:mainmenu}
|
||||
.adminmenu li:not(:last-child){margin-block-end:.25em}
|
||||
.adminmenu a{padding-inline:.375em;border:1px solid #bacbdf80;background:#bacbdf34;text-decoration:none;display:flex;align-items:center;gap:0.375em}
|
||||
.adminmenu a:focus,.adminmenu a:hover{border-color:#bacbdf50;background:#bacbdf10}
|
||||
.adminmenu a:focus span,.adminmenu a:hover span{text-decoration:underline}
|
||||
.adminmenu a img{margin:0;padding:0}
|
||||
#content .adminmenu .small{font-size:.82em}
|
||||
h2#admin_header{margin:0 0 0.5em 0}
|
||||
h2#admin_header{margin:0 0 .5em 0}
|
||||
.manage-postings{border:1px solid #bacbdf;margin-top:25px;background:#f9f9f9}
|
||||
.manage-postings legend{font-size:.82em;font-weight:700}
|
||||
ul#uploadlist{list-style:none;margin:0;padding:0;max-width:100%;overflow:hidden}
|
||||
#uploadlist li{float:left;width:240px;margin:0 10px 10px 0;padding:0;border:1px solid #bacbdf;background:#f9f9f9}
|
||||
#uploadlist .image_container{padding:5px;height:240px;width:calc(100% - 10px);margin:0 0 5px 0;text-align:center}
|
||||
ul#uploadlist{list-style:none;margin-inline:0;margin-block:0 .75em;padding:0;max-width:100%;display:flex;flex-wrap:wrap;gap:.75em}
|
||||
#uploadlist > li{width:18.5em;margin:0;padding:0;border:1px solid #bacbdf;background:#f9f9f9}
|
||||
#uploadlist .image_container{padding:.5em;height:21.5em;width:100%;margin:0 0 .25em 0;text-align:center}
|
||||
#uploadlist img{max-width:100%;max-height:100%}
|
||||
#uploadlist .management_container{margin:0;padding:5px 0}
|
||||
#uploadlist .management_container{margin:0;padding:.25em 0;list-style:none}
|
||||
#uploadlist .management_container > li{margin:0;padding-block:.125em;padding-inline:.25em}
|
||||
#uploadlist .management_container input{margin:0 .125em}
|
||||
#uploadlist + p{margin-block:.75em 1em}
|
||||
#uploadlist .information{display:flex;}
|
||||
#uploadlist .information > img{display:block;}
|
||||
.confirm-selection{list-style:none;padding:0;border-top:1px solid #bacbdf}
|
||||
.confirm-selection li{min-height:2.5em;margin:0 0 0.25em 0;padding:0.25em 0.5em;border-bottom:1px solid #bacbdf}
|
||||
.confirm-selection .item{margin:0 0 0.25em 0}
|
||||
.confirm-selection .info{font-weight:bold;margin: 0}
|
||||
a.thread,a.thread:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
a.thread:visited{color:#007}
|
||||
a.thread:focus,a.thread:hover{color:#00f;text-decoration:underline}
|
||||
a.thread:active{color:red}
|
||||
a.thread-sticky,a.thread-sticky:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -250px}
|
||||
a.thread-sticky:visited{color:#007}
|
||||
a.thread-sticky:focus,a.thread-sticky:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-sticky:active{color:red}
|
||||
a.thread-sticky-locked,a.thread-sticky-locked:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1210px}
|
||||
a.thread-sticky-locked:visited{color:#007}
|
||||
a.thread-sticky-locked:focus,a.thread-sticky-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-sticky-locked:active{color:red}
|
||||
a.thread-locked,a.thread-locked:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1110px}
|
||||
a.thread-locked:visited{color:#007}
|
||||
a.thread-locked:focus,a.thread-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.thread-locked:active{color:red}
|
||||
a.threadnew-sticky,a.threadnew-sticky:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -300px}
|
||||
a.threadnew-sticky:visited{color:#007}
|
||||
a.threadnew-sticky:focus,a.threadnew-sticky:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-sticky:active{color:red}
|
||||
a.threadnew-sticky-locked,a.threadnew-sticky-locked:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1260px}
|
||||
a.threadnew-sticky-locked:visited{color:#007}
|
||||
a.threadnew-sticky-locked:focus,a.threadnew-sticky-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-sticky-locked:active{color:red}
|
||||
a.threadnew-locked,a.threadnew-locked:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -1160px}
|
||||
a.threadnew-locked:visited{color:#007}
|
||||
a.threadnew-locked:focus,a.threadnew-locked:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew-locked:active{color:red}
|
||||
a.threadnew,a.threadnew:link{padding-left:18px;color:#00c;text-decoration:none;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
a.threadnew:visited{color:#007}
|
||||
a.threadnew:focus,a.threadnew:hover{color:#00f;text-decoration:underline}
|
||||
a.threadnew:active{color:red}
|
||||
a.reply,a.reply:link{padding-left:16px;color:#00c;text-decoration:none;font-weight:400;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
a.reply:visited{color:#007}
|
||||
a.reply:focus,a.reply:hover{color:#00f;text-decoration:underline}
|
||||
a.reply:active{color:red}
|
||||
a.replynew,a.replynew:link{padding-left:16px;color:#00c;text-decoration:none;font-weight:400;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
a.replynew:visited{color:#007}
|
||||
a.replynew:focus,a.replynew:hover{color:#00f;text-decoration:underline}
|
||||
a.replynew:active{color:red}
|
||||
.confirm-selection li{min-height:2.5em;margin:0 0 .25em 0;padding:.25em .5em;border-bottom:1px solid #bacbdf}
|
||||
.confirm-selection .item{margin:0 0 .25em 0}
|
||||
.confirm-selection .info{font-weight:bold;margin:0}
|
||||
span.subject,a.subject,a.subject:link{text-decoration:none;font-weight:bold}
|
||||
a.subject,a.subject:link{color:#00c}
|
||||
a.subject:visited{color:#007}
|
||||
a.subject:focus,a.subject:hover{color:#00f;text-decoration:underline}
|
||||
a.subject:active{color:red}
|
||||
a.thread,a.thread:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.thread,html[dir="rtl"] a.thread:link{background-position-x:100%}
|
||||
a.thread-sticky,a.thread-sticky:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -250px}
|
||||
html[dir="rtl"] a.thread-sticky,html[dir="rtl"] a.thread-sticky:link{background-position-x:100%}
|
||||
a.thread-sticky-locked,a.thread-sticky-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1210px}
|
||||
html[dir="rtl"] a.thread-sticky-locked,html[dir="rtl"] a.thread-sticky-locked:link{background-position-x:100%}
|
||||
a.thread-locked,a.thread-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1109px}
|
||||
html[dir="rtl"] a.thread-locked,html[dir="rtl"] a.thread-locked:link{background-position-x:100%}
|
||||
a.threadnew-sticky,a.threadnew-sticky:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -300px}
|
||||
html[dir="rtl"] a.threadnew-sticky,html[dir="rtl"] a.threadnew-sticky:link{background-position-x:100%}
|
||||
a.threadnew-sticky-locked,a.threadnew-sticky-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1260px}
|
||||
html[dir="rtl"] a.threadnew-sticky-locked,html[dir="rtl"] a.threadnew-sticky-locked:link{background-position-x:100%}
|
||||
a.threadnew-locked,a.threadnew-locked:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -1160px}
|
||||
html[dir="rtl"] a.threadnew-locked,html[dir="rtl"] a.threadnew-locked:link{background-position-x:100%}
|
||||
a.threadnew,a.threadnew:link{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] a.threadnew,html[dir="rtl"] a.threadnew:link{background-position-x:100%}
|
||||
a.reply,a.reply:link{padding-inline-start:16px;font-weight:normal;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] a.reply,html[dir="rtl"] a.reply:link{background-position:100% -1408px}
|
||||
a.replynew,a.replynew:link{padding-inline-start:16px;font-weight:normal;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] a.replynew,html[dir="rtl"] a.replynew:link{background-position:100% -1458px}
|
||||
a.read,a.read:link,a.read:visited,#latest-postings li a span.read{color:#007}
|
||||
a.read:focus,a.read:hover{color:#00f}
|
||||
a.read:active{color:red}
|
||||
.currentthread{padding-left:18px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
.currentthreadnew{padding-left:18px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
.currentreply{padding-left:16px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
.currentreplynew{padding-left:16px;color:red;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
a.internal,a.internal:link{padding-left:18px;color:#00c;text-decoration:none;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
a.internal:hover{color:#00f;text-decoration:underline}
|
||||
ul.thread li > a,ul.thread li .currentreply,ul.thread li > .metadata{text-wrap:nowrap}
|
||||
main:not(:has(table#threadlist)) ul.thread li > a::after{content:" - "}
|
||||
.currentthread,.currentthreadnew,.currentreply,.currentreplynew{color:#ff0000;font-weight:bold}
|
||||
.currentthread{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] .currentthread{background-position-x:100%}
|
||||
.currentthreadnew{padding-inline-start:18px;background:url(images/bg_sprite_1.png) no-repeat 0 -198px}
|
||||
html[dir="rtl"] .currentthreadnew{background-position-x:100%}
|
||||
.currentreply{padding-inline-start:16px;background:url(images/bg_sprite_1.png) no-repeat 0 -348px}
|
||||
html[dir="rtl"] .currentreply{background-position:100% -1408px}
|
||||
.currentreplynew{padding-inline-start:16px;background:url(images/bg_sprite_1.png) no-repeat 0 -398px}
|
||||
html[dir="rtl"] .currentreplynew{background-position:100% -1458px}
|
||||
a.internal,a.internal:link{padding-inline-start:18px;color:#00c;text-decoration:none;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.internal,html[dir="rtl"] a.internal:link{background-position-x:100%}
|
||||
a.internal:focus,a.internal:hover{color:#00f;text-decoration:underline}
|
||||
a.internal:active{color:red}
|
||||
ul.thread{margin:0 0 1.5em;padding:0;list-style-type:none;max-width:100%!important}
|
||||
ul.thread li{text-indent:-18px;margin-left:18px;position:relative}
|
||||
ul.thread li{text-indent:-18px;margin:0;margin-inline-start:18px;position:relative}
|
||||
ul.thread li span.tail{white-space:nowrap}
|
||||
ul.thread li .replies{color:gray;font-size:.82em}
|
||||
ul.thread li .category{font-size:.82em}
|
||||
ul.reply,ul.deep-reply,ul.very-deep-reply{margin:0 0 0 -16px;padding:0 0 0 16px;list-style-type:none;max-width:100%!important}
|
||||
ul.reply li{text-indent:-16px;margin-left:24px}
|
||||
td ul.reply li{text-indent:-16px;margin-left:20px}
|
||||
ul.deep-reply li{text-indent:-16px;margin-left:10px}
|
||||
td ul.deep-reply li{text-indent:-16px;margin-left:5px}
|
||||
ul.very-deep-reply li{text-indent:-16px;margin-left:0}
|
||||
td ul.very-deep-reply li{text-indent:-16px;margin-left:0}
|
||||
ul.reply,ul.deep-reply,ul.very-deep-reply{margin:0;margin-inline-start:-16px;padding:0;padding-inline-start:16px;list-style-type:none;max-width:100%!important}
|
||||
ul.reply li{text-indent:-16px;margin-inline-start:24px}
|
||||
td ul.reply li{text-indent:-16px;margin-inline-start:20px}
|
||||
ul.deep-reply li{text-indent:-16px;margin-inline-start:10px}
|
||||
td ul.deep-reply li{text-indent:-16px;margin-inline-start:5px}
|
||||
ul.very-deep-reply li{text-indent:-16px;margin-inline-start:0}
|
||||
td ul.very-deep-reply li{text-indent:-16px;margin-inline-start:0}
|
||||
ul.complete-thread{margin:0 0 20px;padding:0;list-style-type:none;clear:both;max-width:100%!important}
|
||||
ul.reply ul{background:url(images/thread_connecting_line.png) repeat-y left center}
|
||||
html[dir="rtl"] ul.reply ul{background:url(images/thread_connecting_line.png) repeat-y 100% center}
|
||||
ul.reply li:last-child>ul{background:none}
|
||||
span.fold-expand{display:none}
|
||||
ul.folded{margin:0 0 10px;padding:0 0 0 15px}
|
||||
ul.folded span.fold-expand{position:absolute;top:-2px;left:-15px;display:inline;margin-right:5px}
|
||||
ul.folded{margin:0 0 10px;padding:0;padding-inline-start:15px}
|
||||
ul.folded span.fold-expand{position:absolute;inset-block-start:-2px;inset-inline-start:-15px;display:inline;margin-inline-end:5px}
|
||||
img.expand-thread-inactive{width:9px;height:9px;background:url(images/bg_sprite_2.png) no-repeat 0 -31px}
|
||||
img.expand-thread{width:9px;height:9px;background:url(images/bg_sprite_2.png) no-repeat 0 -22px}
|
||||
img.fold-thread{width:9px;height:9px;background:url(images/bg_sprite_2.png) no-repeat -9px -22px}
|
||||
td ul.thread{margin:0;padding:0;list-style-type:none;font-size:1em!important}
|
||||
td ul.thread ul{font-size:.82em!important;line-height:1em}
|
||||
td ul.thread ul ul{font-size:1em!important}
|
||||
td ul.folded{margin:0;padding:0 0 0 15px}
|
||||
td ul.folded{margin:0;padding:0;padding-inline-start:15px}
|
||||
ul.searchresults{margin:0 0 20px;padding:0;list-style-type:none;max-width:100%!important}
|
||||
ul.searchresults li{font-size:1em;padding:0 0 10px}
|
||||
ul.searchresults li li{font-size:1em}
|
||||
a.thread-search{padding-left:18px;color:#00c;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
a.reply-search{padding-left:18px;color:#00c;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -448px}
|
||||
a.thread-search{padding-inline-start:18px;color:#00c;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -148px}
|
||||
html[dir="rtl"] a.thread-search{background:url(images/bg_sprite_1.png) no-repeat calc(100% + 2px) -148px}
|
||||
a.reply-search{padding-inline-start:18px;color:#00c;font-weight:700;background:url(images/bg_sprite_1.png) no-repeat 0 -448px}
|
||||
html[dir="rtl"] a.reply-search{background:url(images/bg_sprite_1.png) no-repeat 100% -1508px}
|
||||
a.thread-search:active,a.reply-search:active{color:red}
|
||||
img.thumbnail{width:150px;border:1px solid silver;margin:0;height:auto}
|
||||
a:link img.thumbnail{color:#00f;border:1px solid silver}
|
||||
a:visited img.thumbnail{color:#00f;border:1px solid silver}
|
||||
a:hover img.thumbnail{color:#00f;border:1px solid #000}
|
||||
img.left{display:block;float:left;margin:0 10px 10px 0}
|
||||
img.right{float:right;margin:0 0 10px 10px}
|
||||
#ajax-preview{position:absolute;top:100px;left:100px;margin:13px 0 0 -3px;z-index:10;width:20px}
|
||||
a:focus img.thumbnail,a:hover img.thumbnail{color:#00f;border:1px solid #000}
|
||||
img.left{display:block;float:left;float:inline-start;margin:0 10px 10px 0}
|
||||
img.right{float:right;float:inline-end;margin:0 0 10px 10px}
|
||||
#ajax-preview{position:absolute;top:100px;inset-inline-start:100px;margin-block:13px 0;margin-inline:-3px 0;z-index:10;width:20px}
|
||||
#ajax-preview-top{position:absolute;width:100%;top:0;height:16px;background:transparent url(images/bg_sprite_2.png) no-repeat 8px -40px;z-index:10}
|
||||
#ajax-preview-main{border-top:1px solid silver;position:absolute;top:15px;right:0;width:500px}
|
||||
#ajax-preview-close{float:right;cursor:pointer}
|
||||
#ajax-preview-body{background:#ffc;margin:0;padding:0;border-left:1px solid silver;border-right:1px solid silver;border-bottom:1px solid silver}
|
||||
#ajax-preview-main{border-top:1px solid silver;position:absolute;top:15px;inset-inline-end:0;width:500px}
|
||||
#ajax-preview-close{float:right;float:inline-end;cursor:pointer}
|
||||
#ajax-preview-body{background:#ffc;margin:0;padding:0;border-inline:1px solid silver;border-bottom:1px solid silver}
|
||||
#ajax-preview-content{margin:0;padding:0 14px;max-height:350px;overflow:auto;clear:both;padding-bottom:16px}
|
||||
#ajax-preview-replylink-wrapper{margin:0;padding:0;font-size:.69em!important}
|
||||
#ajax-preview-replylink-wrapper:before{content:"[ "}
|
||||
#ajax-preview-replylink-wrapper:after{content:" ]"}
|
||||
#ajax-preview-replylink{margin:0;padding:0}
|
||||
#ajax-preview-throbber{display:block;margin-left:auto;margin-right:auto}
|
||||
#ajax-preview-throbber{display:block;margin-inline:auto;}
|
||||
#ajax-preview-content p,#ajax-preview-content ul{font-size:.82em;line-height:1.5em}
|
||||
#ajax-preview-content li,#ajax-preview-content ul ul{font-size:1em}
|
||||
#ajax-preview-content img{max-width:100%;height:auto}
|
||||
#image-canvas{position:absolute;top:0;left:0;width:100%;height:100%;background:url(images/canvas_bg.png);z-index:20}
|
||||
#image-canvas img{display:block;margin:2em auto 0;border:1px solid #000;z-index:30;max-width:90%}
|
||||
#ie ul.reply{width:100%}
|
||||
#ie ul.reply ul{background:none}
|
||||
#ie ul.thread li{height:100%}
|
||||
* html #ie ul.thread{margin-left:-18px}
|
||||
* html #ie ul.thread li{text-indent:0}
|
||||
* html #ie #usermenu li{margin-left:5px;padding-left:5px;background:none}
|
||||
* html #ie #subnav #subnav-2{padding-top:.4em}
|
||||
* html #ie #footermenu li{margin-left:5px;padding-left:5px;background:none}
|
||||
* html #ie div.complete-thread{margin-bottom:20px}
|
||||
.js-display-none{display:none}
|
||||
.js-display-block{display:block}
|
||||
.js-visibility-hidden{visibility:hidden}
|
||||
|
@ -466,4 +507,26 @@ img.right{float:right;margin:0 0 10px 10px}
|
|||
.js-cursor-move{cursor:move}
|
||||
.js-display-fold .wrapper,.js-display-fold #sidebarcontent{display:none}
|
||||
.js-display-fold img.avatar{width:1.6em;height:1.6em}
|
||||
form p.hp{display: none}
|
||||
form .hp{display:none}
|
||||
@media screen and (min-width:38em) {
|
||||
#top {flex-direction:row;justify-content:space-between}
|
||||
#usermenu{justify-content:flex-end}
|
||||
#subnav{flex-direction:row;justify-content:space-between}
|
||||
#subnav-2{text-align:end}
|
||||
#sidebar{width:100%}
|
||||
#admin-main-menu{grid-template-areas:"infoboxes mainmenu";grid-template-columns:18em auto;grid-template-rows:auto}
|
||||
#main-grid.threaded {grid-template-areas:"threadlist sidebar";grid-template-columns:auto 18em;grid-template-rows:auto}
|
||||
#main-grid.threaded:has(div.js-display-fold){grid-template-columns:auto 8.5em}
|
||||
h2.sidebar a{padding-inline:1.25em .375em;background:url("images/triangle-right.svg") 0.175em center/0.9em 0.9em no-repeat}
|
||||
.js-display-fold h2.sidebar a{background:url("images/triangle-left.svg") 0.325em center/0.9em 0.9em no-repeat}
|
||||
html[dir="rtl"] h2.sidebar a{background:url("images/triangle-left.svg") calc(100% - 0.175em) center/0.9em 0.9em no-repeat}
|
||||
html[dir="rtl"] .js-display-fold h2.sidebar a{background:url("images/triangle-right.svg") calc(100% - 0.175em) center/0.9em 0.9em no-repeat}
|
||||
}
|
||||
@media screen and (min-width:48em) {
|
||||
#logo h1{font-size:1.6em}
|
||||
#nav {text-align:end}
|
||||
.posting-footer{grid-template-columns:auto;grid-template-rows:auto; grid-template-areas:"pageviews pageviews" "replylink moderationlinks"}
|
||||
#content .posting-footer .options{justify-content:flex-end}
|
||||
#footer {grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:"statistics footerlinks" "projectlink projectlink"}
|
||||
#footermenu{justify-content:flex-end}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{config_load file=$language_file section="admin"}
|
||||
{if $action=='settings'}
|
||||
{if $saved}<p class="ok">{#settings_saved#}</p>{/if}
|
||||
{if $saved}<p class="notice ok">{#settings_saved#}</p>{/if}
|
||||
<form id="settings" action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -235,7 +235,7 @@
|
|||
</form>
|
||||
<p style="margin-top:10px;"><a class="stronglink" href="index.php?mode=admin&action=advanced_settings">{#advanced_settings_link#}</a></p>
|
||||
{elseif $action=='advanced_settings'}
|
||||
{if $saved}<p class="ok">{#settings_saved#}</p>{/if}
|
||||
{if $saved}<p class="notice ok">{#settings_saved#}</p>{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -269,12 +269,12 @@
|
|||
{/foreach}
|
||||
</select>
|
||||
</p>
|
||||
<p><input type="submit" name="entries_in_not_existing_categories_submit" value="{#submit_button_ok#}"></p>
|
||||
<p><button name="entries_in_not_existing_categories_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button></p>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -309,7 +309,6 @@
|
|||
{else}
|
||||
<p>{#no_categories#}</p>
|
||||
{/if}
|
||||
<br />
|
||||
<form action="index.php" method="post" class="normalform" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -325,7 +324,7 @@
|
|||
</form>
|
||||
{elseif $action=='edit_category'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -349,7 +348,7 @@
|
|||
</form>
|
||||
{elseif $action=='delete_category'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -358,7 +357,7 @@
|
|||
</ul>
|
||||
{/if}
|
||||
<h2>{#delete_category_hl#|replace:"[category]":$category_name}</h2>
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -378,40 +377,38 @@
|
|||
</div>
|
||||
</form>
|
||||
{elseif $action=='user'}
|
||||
{if $new_user && !$send_error}<p class="ok">{#new_user_registered#|replace:"[name]":$new_user}</p>{elseif $new_user && $send_error}<p class="caution">{#new_user_reg_send_error#|replace:"[name]":$new_user}</p>{/if}
|
||||
<h2 id="admin_header">{#user_list_header#}</h2>
|
||||
{if $new_user && !$send_error}<p class="notice ok">{#new_user_registered#|replace:"[name]":$new_user}</p>{elseif $new_user && $send_error}<p class="notice caution">{#new_user_reg_send_error#|replace:"[name]":$new_user}</p>{/if}
|
||||
{*<p>{#num_registerd_users#|replace:"[number]":$total_users}</p>*}
|
||||
|
||||
<div id="usernav">
|
||||
<div id="usersearch">
|
||||
<label for="search-user">{#search_user#}</label><form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="action" value="user" />
|
||||
<input id="search-user" type="text" name="search_user" value="{if $search_user}{$search_user}{else}{#search_user_default_value#}{/if}" size="25" alt="{#search_user_default_value#}" />{* <input type="image" src="{$THEMES_DIR}/{$theme}/images/submit.png" alt="[»]" />*}
|
||||
<div>
|
||||
<label for="search-user">{#search_user#}</label>
|
||||
<input id="search-user" type="search" name="search_user" value="{if $search_user}{$search_user}{/if}" placeholder="{#search_user_default_value#}" size="35" />
|
||||
<button>{#go#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="userpagination">
|
||||
{if $pagination}
|
||||
<ul class="pagination pagination-index">
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}">{$item}</a></li>{/if}
|
||||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{else}
|
||||
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $result_count > 0}
|
||||
{if $no_users_in_selection}<p class="caution">{#no_users_in_sel#}</p>{/if}
|
||||
{if $no_users_in_selection}<p class="notice caution">{#no_users_in_sel#}</p>{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<table class="normaltab" border="0" cellpadding="5" cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<!--<th><a href="index.php?mode=admin&action=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=user_id&descasc={if $descasc=="ASC" && $order=="user_id"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#user_id#}</a>{if $order=="user_id" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="user_id" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>-->
|
||||
|
@ -424,30 +421,32 @@
|
|||
<th><a href="index.php?mode=admin&action=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=user_lock&descasc={if $descasc=="ASC" && $order=="user_lock"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#lock#}</a>{if $order=="user_lock" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="user_lock" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>
|
||||
<th colspan="2"> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{section name=row loop=$userdata}
|
||||
{cycle values="a,b" assign=c}
|
||||
<tr class="{$c}">
|
||||
<td style="width:10px;"><input type="checkbox" name="selected[]" value="{$userdata[row].user_id}" /></td>
|
||||
<td>{if $userdata[row].inactive}<span title="{#user_inactive#}" style="font-weight:bold;color:red;">{$userdata[row].user_name}</span>{else}<a href="index.php?mode=user&show_user={$userdata[row].user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$userdata[row].user_name}"><strong>{$userdata[row].user_name}</strong></a>{/if}</td>
|
||||
<td>{if $userdata[row].inactive}<span class="author-name inactive-user" title="{#user_inactive#}">{$userdata[row].user_name}</span>{else}<a href="index.php?mode=user&show_user={$userdata[row].user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$userdata[row].user_name}"><span class="author-name">{$userdata[row].user_name}</span></a>{/if}</td>
|
||||
<td><span class="small"><a href="mailto:{$userdata[row].user_email}" title="{#mailto_user_lt#|replace:"[user]":$userdata[row].user_name}">{$userdata[row].user_email}</a></span></td>
|
||||
<td><span class="small">{if $userdata[row].user_type==2}{#admin#}{elseif $userdata[row].user_type==1}{#mod#}{else}{#user#}{/if}</span></td>
|
||||
<td><span class="small">{$userdata[row].registered_time|date_format:#time_format#}</span></td>
|
||||
<td><span class="small">{$userdata[row].registered_time}</span></td>
|
||||
<td><span class="small">{$userdata[row].logins}</span></td>
|
||||
<td><span class="small">{if $userdata[row].logins > 0}{$userdata[row].last_login_time|date_format:#time_format#}{else} {/if}</span></td>
|
||||
<td><span class="small">{if $userdata[row].logins > 0}{$userdata[row].last_login_time}{else} {/if}</span></td>
|
||||
<td><span class="small">{if $userdata[row].user_type>0}{if $userdata[row].user_lock==0}{#unlocked#}{else}{#locked#}{/if}{elseif $userdata[row].user_lock==0}<a href="index.php?mode=admin&user_lock={$userdata[row].user_id}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&page={$page}&order={$order}&descasc={$descasc}" title="{#lock_title#}">{#unlocked#}</a>{else}<a style="color:red;" href="index.php?mode=admin&user_lock={$userdata[row].user_id}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&page={$page}&order={$order}&descasc={$descasc}" title="{#unlock_title#}">{#locked#}</a>{/if}</span></td>
|
||||
<td><a href="index.php?mode=admin&edit_user={$userdata[row].user_id}"><img src="{$THEMES_DIR}/{$theme}/images/edit.png" title="{#edit#}" alt="{#edit#}" width="16" height="16" /></a></td>
|
||||
<td><a href="index.php?mode=admin&delete_user={$userdata[row].user_id}"><img src="{$THEMES_DIR}/{$theme}/images/delete.png" title="{#delete#}" alt="{#delete#}" width="16" height="16" /></a></td>
|
||||
</tr>
|
||||
{/section}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="admin-usernav-bottom">
|
||||
|
||||
<div id="selectioncontrols">
|
||||
<img id="arrow-selected" src="{$THEMES_DIR}/{$theme}/images/arrow_selected.png" alt="↑" width="24" height="14" /> <input type="submit" name="delete_selected_users" value="{#delete_selected_users#}" title="{#delete_users_sb_title#}" />
|
||||
<button name="delete_selected_users" value="{#delete_selected_users#}"><img src="{$THEMES_DIR}/{$theme}/images/delete.png" alt="" width="14" height="14" /><span>{#delete_selected_users#}</span></button>
|
||||
</div>
|
||||
|
||||
<div id="userpagination">
|
||||
</div>
|
||||
</form>
|
||||
{if $pagination}
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
|
@ -456,14 +455,8 @@
|
|||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{else}
|
||||
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{else}
|
||||
<p><em>{#no_users#}</em></p>
|
||||
{/if}
|
||||
|
@ -477,7 +470,7 @@
|
|||
{elseif $action=='edit_user'}
|
||||
{config_load file=$language_file section="user_edit"}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -485,7 +478,7 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
{if $inactive}<p class="caution">{#caution#}</p><p>{#activate_note#} <a href="index.php?mode=admin&activate={$edit_user_id}">{#activate_link#}</a></p>{/if}
|
||||
{if $inactive}<p class="notice caution">{#caution#}</p><p>{#activate_note#} <a href="index.php?mode=admin&activate={$edit_user_id}">{#activate_link#}</a></p>{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -606,7 +599,7 @@
|
|||
</div>
|
||||
</form>
|
||||
{elseif $action=='delete_users'}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{if $selected_users_count>1}{#delete_users_confirmation#}{else}{#delete_user_confirmation#}{/if}</p>
|
||||
<ul>
|
||||
{section name=nr loop=$selected_users}
|
||||
|
@ -625,7 +618,7 @@
|
|||
</div>
|
||||
</form>
|
||||
{elseif $action=='user_delete_entries'}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_entries_of_user_confirm#|replace:"[user]":$user_delete_entries['user']}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
|
@ -637,7 +630,7 @@
|
|||
</form>
|
||||
{elseif $action=='register'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -654,7 +647,7 @@
|
|||
<p><label for="ar_email" class="main">{#register_email#}</label><br />
|
||||
<input id="ar_email" type="text" size="25" name="ar_email" value="{$ar_email|default:''}" maxlength="{$settings.email_maxlength}" /></p>
|
||||
<p><label for="ar_pw" class="main">{#register_pw#}</label><br />
|
||||
<input id="ar_pw" type="password" size="25" name="ar_pw" maxlength="50" /></p>
|
||||
<input id="ar_pw" type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" name="ar_pw" maxlength="50" /></p>
|
||||
<p><input id="ar_send_userdata" type="checkbox" name="ar_send_userdata" value="true"{if $ar_send_userdata} checked="checked"{/if} /> <label for="ar_send_userdata">{#register_send_userdata#}</label></p>
|
||||
<p><input type="submit" name="register_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
|
@ -662,7 +655,7 @@
|
|||
<p class="small">{#register_exp#}</p>
|
||||
{elseif $action=='smilies'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -692,7 +685,6 @@
|
|||
<a href="index.php?mode=admin&edit_smiley={$smilies[row].id}"><img class="control" src="{$THEMES_DIR}/{$theme}/images/edit.png" title="{#edit#}" alt="{#edit#}" width="16" height="16" /></a> <a href="index.php?mode=admin&delete_smiley={$smilies[row].id}"><img class="control" src="{$THEMES_DIR}/{$theme}/images/delete.png" title="{#delete#}" alt="{#delete#}" width="16" height="16"/></a> <a href="index.php?mode=admin&move_up_smiley={$smilies[row].id}"><img class="control" src="{$THEMES_DIR}/{$theme}/images/arrow_up.png" alt="{#move_up#}" title="{#move_up#}" width="16" height="16" /></a><a href="index.php?mode=admin&move_down_smiley={$smilies[row].id}"><img class="control" src="{$THEMES_DIR}/{$theme}/images/arrow_down.png" alt="{#move_down#}" title="{#move_down#}" width="16" height="16" /></a>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{/section}
|
||||
</tbody>
|
||||
|
@ -732,7 +724,7 @@
|
|||
</ul>
|
||||
{elseif $action=='spam_protection'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -740,7 +732,7 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
{if $saved}<p class="ok">{#spam_protection_saved#}</p>{/if}
|
||||
{if $saved}<p class="notice ok">{#spam_protection_saved#}</p>{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
|
@ -748,7 +740,7 @@
|
|||
<table class="normaltab" border="0" cellpadding="5" cellspacing="1">
|
||||
|
||||
<tr>
|
||||
<td class="c" style="width:30%;"><strong>{#captcha#}</strong><br /><span class="small">{#captcha_desc#}{if !$graphical_captcha_available || !$font_available}<br />{#captcha_graphical_desc#}{/if}</span></td>
|
||||
<td class="c"><strong>{#captcha#}</strong><br /><span class="small">{#captcha_desc#}{if !$graphical_captcha_available || !$font_available}<br />{#captcha_graphical_desc#}{/if}</span></td>
|
||||
<td class="d">
|
||||
<table border="0" cellpadding="0" cellspacing="3">
|
||||
<tr>
|
||||
|
@ -782,7 +774,8 @@
|
|||
<input id="b8_entry_check" type="checkbox" name="b8_entry_check" value="1"{if $b8_entry_check==1} checked="checked"{/if} /><label for="b8_entry_check">{#b8_entry_check_enable#}</label><br />
|
||||
<input id="b8_mail_check" type="checkbox" name="b8_mail_check" value="1"{if $b8_mail_check==1} checked="checked"{/if} /><label for="b8_mail_check">{#b8_mail_check_enable#}</label><br />
|
||||
<input id="b8_auto_training" type="checkbox" name="b8_auto_training" value="1"{if $b8_auto_training==1} checked="checked"{/if} /><label for="b8_auto_training">{#b8_auto_training_enable#}</label><br />
|
||||
<p>{#b8_spam_probability_threshold#}<br />
|
||||
</p>
|
||||
<p>{#b8_spam_probability_threshold#}<br />
|
||||
<input id="b8_spam_probability_threshold" type="input" name="b8_spam_probability_threshold" value="{$b8_spam_probability_threshold}" size="25" />
|
||||
</p>
|
||||
</td>
|
||||
|
@ -792,10 +785,6 @@
|
|||
<td class="d"><input id="stop_forum_spam" type="checkbox" name="stop_forum_spam" value="1"{if $stop_forum_spam==1} checked="checked"{/if} /><label for="stop_forum_spam">{#stop_forum_spam_enable#}</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><strong>{#bad_behavior#}</strong><br /><span class="small">{#bad_behavior_desc#}</span></td>
|
||||
<td class="d"><input id="bad_behavior" type="checkbox" name="bad_behavior" value="1"{if $bad_behavior==1} checked="checked"{/if} /><label for="bad_behavior">{#bad_behavior_enable#}</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><strong>{#akismet#}</strong><br /><span class="small">{#akismet_desc#}</span></td>
|
||||
<td class="d"><p>{#akismet_key#}<br />
|
||||
<input type="text" name="akismet_key" value="{$akismet_key}" size="25" /></p>
|
||||
|
@ -832,7 +821,7 @@
|
|||
</div>
|
||||
</form>
|
||||
{elseif $action=='reset_uninstall'}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
{if $errors}{include file="$theme/subtemplates/errors.inc.tpl"}{/if}
|
||||
|
||||
<h2>{#reset_forum#}</h2>
|
||||
|
@ -843,7 +832,7 @@
|
|||
<p><input id="delete_postings" type="checkbox" name="delete_postings" value="true" /><label for="delete_postings"> {#delete_postings#}</label></p>
|
||||
<p><input id="delete_userdata" type="checkbox" name="delete_userdata" value="true" /><label for="delete_userdata"> {#delete_userdata#}</label></p>
|
||||
<p>{#admin_confirm_password#}<br />
|
||||
<input type="password" size="20" name="confirm_pw" /> <input type="submit" name="reset_forum_confirmed" value="{#reset_forum_submit#}" /></p>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="20" name="confirm_pw" /> <input type="submit" name="reset_forum_confirmed" value="{#reset_forum_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -856,7 +845,7 @@
|
|||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p>{#reset_uninstall_conf_pw#}<br />
|
||||
<input type="password" size="20" name="confirm_pw" /> <input type="submit" name="uninstall_forum_confirmed" value="{#uninstall_forum_submit#}" /></p>
|
||||
<input type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="20" name="confirm_pw" /> <input type="submit" name="uninstall_forum_confirmed" value="{#uninstall_forum_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
{elseif $action=='update'}
|
||||
|
@ -870,7 +859,7 @@
|
|||
</ul>
|
||||
|
||||
{if $errors}{include file="$theme/subtemplates/errors.inc.tpl"}{/if}
|
||||
{if $message}<p class="ok">{$smarty.config.$message}</p>{/if}
|
||||
{if $message}<p class="notice ok">{$smarty.config.$message}</p>{/if}
|
||||
{if $update_files}
|
||||
<h3>{#update_available_files#}</h3>
|
||||
<ul>
|
||||
|
@ -882,7 +871,7 @@
|
|||
<p><em>{#update_no_files_available#}</em></p>
|
||||
{/if}
|
||||
{elseif $action=='run_update'}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#update_confirm#}</p>
|
||||
<p><strong>{$update_file}</strong>{if $update_from_version && $update_to_version} {#update_file_details#|replace:"[update_from_version]":$update_from_version|replace:"[update_to_version]":$update_to_version}{/if}</p>
|
||||
<p style="color:red;font-weight:bold;">{#update_note#}</p>
|
||||
|
@ -892,13 +881,13 @@
|
|||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="update_file_submit" value="{$update_file}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p>{#admin_confirm_password#}<br /><input type="password" name="update_password" size="25"/></p>
|
||||
<p>{#admin_confirm_password#}<br /><input type="password" name="update_password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25"/></p>
|
||||
<p><input type="submit" name="update_submit" value="{#update_submit#}" onclick="document.getElementById('throbber-submit').style.visibility = 'visible';" /> <img id="throbber-submit" style="visibility:hidden;" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
{elseif $action=='update_done'}
|
||||
{if $update_errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$update_errors}
|
||||
{assign var="error" value=$update_errors[mysec]}
|
||||
|
@ -906,7 +895,7 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{else}
|
||||
<p class="ok">{#update_successful#}</p>
|
||||
<p class="notice ok">{#update_successful#}</p>
|
||||
{/if}
|
||||
{if $update_items}
|
||||
<p>{#update_items_note#|replace:"[version]":$update_new_version}</p>
|
||||
|
@ -916,12 +905,13 @@
|
|||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
<p>{#update_reenabling_notice#}</p>
|
||||
{if $update_download_url}<p class="small">{#update_download#|replace:"[[":"<a href=\"$update_download_url\">"|replace:"]]":"</a>"}</p>{/if}
|
||||
{if $update_message}{$update_message}{/if}
|
||||
{elseif $action == 'email_list'}
|
||||
<textarea onfocus="this.select()" onclick="this.select()" readonly="readonly" cols="60" rows="15">{$email_list}</textarea>
|
||||
{elseif $action == 'clear_userdata'}
|
||||
{if $no_users_in_selection}<p class="caution">{#no_users_in_selection#}</p>{/if}
|
||||
{if $no_users_in_selection}<p class="notice caution">{#no_users_in_selection#}</p>{/if}
|
||||
{assign var="input_logins" value="<input type=\"text\" name=\"logins\" value=\"$logins\" size=\"4\" />"}
|
||||
{assign var="input_days" value="<input type=\"text\" name=\"days\" value=\"$days\" size=\"4\" />"}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
|
@ -934,7 +924,7 @@
|
|||
<p class="small">{#clear_userdata_note#}</p>
|
||||
{elseif $action == 'edit_smiley'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -1000,7 +990,7 @@
|
|||
<ul class="adminmenu"><li><a href="index.php?mode=admin&action=edit_page"><img src="{$THEMES_DIR}/{$theme}/images/add_page.png" alt="" width="16" height="16" /><span>{#add_page_link#}</span></a></li></ul>
|
||||
{elseif $action=='edit_page'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -1040,7 +1030,7 @@
|
|||
</form>
|
||||
{elseif $action=='delete_page'}
|
||||
{if $page}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_page_confirm#}</p>
|
||||
<p><strong>{$page.title}</strong></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
|
@ -1057,39 +1047,67 @@
|
|||
|
||||
{elseif $action=='list_uploads'}
|
||||
<h2 id="admin_header">{#upload_administration#}</h2>
|
||||
{if $images}
|
||||
|
||||
<div>
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="action" value="list_uploads" />
|
||||
<div>
|
||||
<button name="filter" value="not-managed-images">{#upload_filter_not_managed_images#}</button>
|
||||
<button name="filter" value="managed-images">{#upload_filter_managed_images#}</button>
|
||||
<button name="filter" value="all-images" class="active-filter">{#upload_filter_all_images#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{if $images}
|
||||
{if $pagination}
|
||||
<div id="usernav">
|
||||
<div id="userpagination">
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}">{$item}</a></li>{/if}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}">{$item}</a></li>{/if}
|
||||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="admin" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $filter}
|
||||
<input type="hidden" name="filter" value="{$filter}" />
|
||||
{/if}
|
||||
<ul id="uploadlist">
|
||||
{section name=nr loop=$images start=$start max=$images_per_page}
|
||||
<li><p class="image_container"><img src="images/uploaded/{$images[nr]}" alt="{$images[nr]}" /></p>
|
||||
<p class="management_container"><input type="checkbox" id="{$images[nr]}" name="uploads_remove[]" value="{$images[nr]}" /><label for="{$images[nr]}">{#mark_upload_for_removal#}</label></p></li>
|
||||
<li>
|
||||
<p class="image_container"><img src="images/uploaded/{$images[nr].pathname}" alt="{$images[nr].pathname}" /></p>
|
||||
<ul class="management_container">
|
||||
<li class="information">{if $images[nr].status == 1}<img src="themes/{$settings.theme}/images/database.svg" alt="{#upload_database_entry_alt#}" width="16" height="16">{else}<img src="themes/{$settings.theme}/images/database-no.svg" alt="{#upload_database_no_entry_alt#}" width="16" height="16">{/if}</li>
|
||||
<li><input type="checkbox" id="id-{$images[nr].number}" name="manage_uploads[]" value="{$images[nr].pathname}" /><label for="id-{$images[nr].number}">{#mark_upload_for_managing#}</label></li>
|
||||
</ul>
|
||||
</li>
|
||||
{/section}
|
||||
</ul>
|
||||
<p><input type="submit" name="delete_selected_uploads" value="{#delete#}" /></p>
|
||||
<div>
|
||||
<button name="record_selected_uploads" value="record">{#upload_add_db_entry_button#}</button>
|
||||
<button name="delete_selected_uploads" value="{#delete#}">{#delete#}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{if $pagination}
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$item}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}">{$item}</a></li>{/if}
|
||||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}{if $filter}&filter={$filter}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
{else}
|
||||
<p>{#no_uploads_found#}</p>
|
||||
{/if}
|
||||
{elseif $action=='delete_uploads'}
|
||||
<h2 id="admin_header">{#upload_administration#}</h2>
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{if $selected_uploads_count>1}{#delete_uploads_confirmation#}{else}{#delete_upload_confirmation#}{/if}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
|
@ -1105,6 +1123,7 @@
|
|||
</div>
|
||||
</form>
|
||||
{else}
|
||||
<div id="admin-main-menu">
|
||||
<div class="additional-admin-info">
|
||||
<div id="admin-info-current-version">
|
||||
<h3>{#actual_installed_version_header#}</h3>
|
||||
|
@ -1122,11 +1141,11 @@
|
|||
{if $latest_release_uri}
|
||||
<p><a href="{$latest_release_uri}">Download {$latest_release_version}</a></p>
|
||||
{else}
|
||||
<p><a href="https://github.com/ilosuna/mylittleforum/releases/latest">Download {$latest_release_version}</a></p>
|
||||
<p><a href="https://github.com/My-Little-Forum/mylittleforum/releases/latest">Download {$latest_release_version}</a></p>
|
||||
{/if}
|
||||
{else}
|
||||
<h3>{#releases_info_header#}</h3>
|
||||
<p><a href="https://github.com/ilosuna/mylittleforum/releases/latest">{#releases_list_link#}</a></p>
|
||||
<p><a href="https://github.com/My-Little-Forum/mylittleforum/releases/latest">{#releases_list_link#}</a></p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1141,4 +1160,5 @@
|
|||
<li><a href="index.php?mode=admin&action=update"><img src="{$THEMES_DIR}/{$theme}/images/update.png" alt="" width="16" height="16" /><span>{#update_link#}</span></a></li>
|
||||
<li><a href="index.php?mode=admin&action=reset_uninstall"><img src="{$THEMES_DIR}/{$theme}/images/delete.png" alt="" width="16" height="16" /><span>{#reset_uninstall_link#}</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
{cycle values="a,b" assign=c}
|
||||
<tr id="id_{$row.bid}" class="{$c}">
|
||||
<td><a href="index.php?id={$row.id}" title="{$row.subject}"><strong>{$row.subject}</strong></a></td>
|
||||
<td>{if $row.user_id > 0}<a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}">{/if}<strong>{$row.user_name}</strong>{if $row.user_id > 0}</a>{/if}</td>
|
||||
<td>{if $row.user_id > 0}<a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}">{/if}<span class="author-name">{$row.user_name}</span>{if $row.user_id > 0}</a>{/if}</td>
|
||||
<td><span class="small">{$row.bookmark_time}</span></td>
|
||||
<td><span class="small">{$row.posting_time}</span></td>
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
|||
|
||||
{elseif $action=='delete_bookmark'}
|
||||
{if $bookmark}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_bookmark_confirm#}</p>
|
||||
<p><strong>{$bookmark.subject}</strong></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
|
@ -58,7 +58,7 @@
|
|||
|
||||
{elseif $action=='edit_bookmark'}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul style="margin-bottom:25px;">
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[word]":$word}</li>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{config_load file=$language_file section="contact"}
|
||||
{if $captcha}{config_load file=$language_file section="captcha"}{/if}
|
||||
{if $error_message}
|
||||
<p class="caution">{$smarty.config.$error_message}</p>
|
||||
<p class="notice caution">{$smarty.config.$error_message}</p>
|
||||
{elseif $sent}
|
||||
<p class="ok">{#email_sent#}</p>
|
||||
<p class="notice ok">{#email_sent#}</p>
|
||||
{else}
|
||||
<h1>{if $recipient_name}{$smarty.config.contact_user_hl|replace:"[recipient_name]":"$recipient_name"}{else}{#contact_hl#}{/if}</h1>
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -15,30 +15,49 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="contact" />
|
||||
{if $id}<input type="hidden" name="id" value="{$id}" />{/if}
|
||||
{if $recipient_user_id}<input type="hidden" name="recipient_user_id" value="{$recipient_user_id}" />{/if}
|
||||
{if $session}<input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
{if not $user_id}<p><label for="sender_email">{#sender_address_caption#}</label><br />
|
||||
<input id="sender_email" type="text" name="sender_email" value="" size="50" /></p>{/if}
|
||||
<p><label for="subject">{#subject_caption#}</label><br />
|
||||
<input id="subject" type="text" name="subject" value="{$subject|default:""}" size="50" maxlength="{$settings.email_subject_maxlength}" /></p>
|
||||
<p><label for="message">{#message_caption#}</label><br />
|
||||
<textarea id="message" name="text" rows="20" cols="80">{$text|default:""}</textarea></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="contact" />
|
||||
{if $id} <input type="hidden" name="id" value="{$id}" />{/if}
|
||||
{if $recipient_user_id} <input type="hidden" name="recipient_user_id" value="{$recipient_user_id}" />{/if}
|
||||
{if $session} <input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
{if not $user_id}
|
||||
<div>
|
||||
<label for="sender_email">{#sender_address_caption#}</label>
|
||||
<input id="sender_email" type="email" name="sender_email" value="" size="50" required />
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<label for="subject">{#subject_caption#}</label>
|
||||
<input id="subject" type="text" name="subject" value="{$subject|default:""}" size="50" maxlength="{$settings.email_subject_maxlength}" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="message">{#message_caption#}</label>
|
||||
<textarea id="message" name="text" rows="20" cols="80" required>{$text|default:""}</textarea>
|
||||
</div>
|
||||
{if $captcha}
|
||||
{if $captcha.type==2}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label> <input id="captcha_code" type="text" name="captcha_code" value="" size="10" /></p>
|
||||
<div>
|
||||
<span class="label-like">{#captcha_marking#}</span><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" />
|
||||
</div>
|
||||
{else}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" /></p>
|
||||
<div>
|
||||
<span class="label-like">{#captcha_marking#}</span><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" />
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $user_id}<p><input id="confirmation_email" type="checkbox" name="confirmation_email" value="1" /> <label for="confirmation_email">{#sender_confirmation_caption#}</label></p>{/if}
|
||||
<p><input type="submit" name="message_submit" value="{#message_submit_caption#}" onclick="document.getElementById('throbber-submit').classList.remove('js-visibility-hidden');" /> <img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</div>
|
||||
</form>
|
||||
{if $user_id}
|
||||
<div>
|
||||
<input id="confirmation_email" type="checkbox" name="confirmation_email" value="1" /><label for="confirmation_email">{#sender_confirmation_caption#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<input type="submit" name="message_submit" value="{#message_submit_caption#}" onclick="document.getElementById('throbber-submit').classList.remove('js-visibility-hidden');" />
|
||||
<img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
|
@ -12,25 +12,26 @@
|
|||
{/if}
|
||||
{if $user_type==2}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$name</span>"}
|
||||
{elseif $user_type==1}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$name</span>"}
|
||||
{elseif $posting_user_id>0}
|
||||
{assign var=name value="<span class=\"registered_user\">$name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$name</span>"}
|
||||
{else}
|
||||
{assign var=name value="$name"}
|
||||
{assign var=name value="<span class=\"author-name\">$name</span>"}
|
||||
{/if}
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) && $posting_user_id>0}
|
||||
{assign var=name value="<a href=\"index.php?mode=user&show_user=$posting_user_id\">$name</a>"}
|
||||
{/if}
|
||||
<div class="posting{if $is_read} read{/if}">
|
||||
<div class="header">{if $spam}<p class="spam-note">{#spam_note#}</p>{/if}
|
||||
<article class="posting{if $is_read} read{/if}">
|
||||
<header class="header">{if $spam}<p class="notice spam">{#spam_note#}</p>{/if}
|
||||
{if $avatar}<img class="avatar" src="{$avatar.image}" alt="{#avatar_img_alt#}" width="{$avatar.width}" height="{$avatar.height}" />{/if}
|
||||
<h1>{$subject}{if $category_name} <span class="category">({$category_name})</span>{/if}</h1>
|
||||
<p class="author">{*{assign var=formated_time value=$disp_time|date_format:#time_format_full#}*}{if $location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$location|replace:"[time]":$formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$formated_time}{/if} <span class="ago">({if $ago.days>1}{#posting_several_days_ago#|replace:"[days]":$ago.days_rounded}{else}{if $ago.days==0 && $ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$ago.minutes}{elseif $ago.days==0 && $ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{/if}{/if})</span>{if $admin && $ip} <span class="ip">({$ip})</span>{/if}{if $pid!=0} <span class="op-link"><a href="index.php?id={$pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$pid.name}">@ {$data.$pid.name}</a></span>{/if}{if $edited}{*{assign var=formated_edit_time value=$edit_time|date_format:#time_format_full#}*}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$edited_by|replace:"[time]":$formated_edit_time}</span>{/if}</p>
|
||||
</div>
|
||||
<p class="author">{if $location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if} <time datetime="{$ISO_time}">{*{assign var=formated_time value=$disp_time|date_format:#time_format_full#}*}{$formated_time}</time> <span class="ago">({if $ago.days>1}{#posting_several_days_ago#|replace:"[days]":$ago.days_rounded}{else}{if $ago.days==0 && $ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$ago.minutes}{elseif $ago.days==0 && $ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$ago.hours|replace:"[minutes]":$ago.minutes}{/if}{/if})</span>{if $admin && $ip} <span class="ip">({$ip})</span>{/if}{if $pid!=0} <span class="op-link"><a href="index.php?id={$pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$pid.name}">@ {$data.$pid.name}</a></span>{/if}
|
||||
{if $edited}{*{assign var=formated_edit_time value=$edit_time|date_format:#time_format_full#}*}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$edited_by}, <time datetime="{$edit_ISO_time}">{$formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper">
|
||||
<div class="body">
|
||||
{if $posting}
|
||||
|
@ -38,19 +39,19 @@
|
|||
{else}
|
||||
<p>{#no_text#}</p>
|
||||
{/if}
|
||||
</div>
|
||||
{if $signature}
|
||||
<p class="signature">--<br />
|
||||
{$signature}</p>
|
||||
<div class="signature"><p>--<br />
|
||||
{$signature}</p></div>
|
||||
{/if}
|
||||
{if $tags}
|
||||
<p class="tags">{#tags_marking#}<br />
|
||||
{foreach name="tags" from=$tags item=tag}<a href="index.php?mode=search&search={$tag.escaped}&method=tags">{$tag.display}</a>{if !$smarty.foreach.tags.last}, {/if}{/foreach}</p>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="posting-footer">
|
||||
<footer class="posting-footer">
|
||||
<div class="reply">{if $locked==0}<a class="stronglink" href="index.php?mode=posting&id={$id}&back=entry" title="{#reply_link_title#}">{#reply_link#}</a>{else}<span class="locked">{#posting_locked#}</span>{/if}</div>
|
||||
<div class="info">
|
||||
{if $views}<span class="views">{if $views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$views}{/if}</span>{else} {/if}
|
||||
{if $views}<div class="views">{if $views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$views}{/if}</div>{/if}
|
||||
{if $options}
|
||||
<ul class="options">
|
||||
<li><a href="#top" class="go-to-top-link" title="{#back_to_top_link_title#}">{#back_to_top_link#}</a></li>
|
||||
|
@ -64,11 +65,10 @@
|
|||
{if $options.lock}<li><a href="index.php?mode=posting&lock={$id}&back=entry" class="{if $locked==0}lock{else}unlock{/if}" title="{if $locked==0}{#lock_linktitle#}{else}{#unlock_linktitle#}{/if}">{if $locked==0}{#lock_linkname#}{else}{#unlock_linkname#}{/if}</a></li>
|
||||
<li><a href="index.php?mode=posting&lock_thread={$id}&back=entry" class="lock-thread" title="{#lock_thread_linktitle#}">{#lock_thread_linkname#}</a></li>
|
||||
<li><a href="index.php?mode=posting&unlock_thread={$id}&back=entry" class="unlock-thread" title="{#unlock_thread_linktitle#}">{#unlock_thread_linkname#}</a></li>{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
<hr class="entryline" />
|
||||
<div class="complete-thread">
|
||||
|
@ -77,19 +77,24 @@
|
|||
|
||||
<ul class="thread openthread">
|
||||
{function name=tree level=0}
|
||||
<li>{if $data.$element.id!=$id}<a class="{if $data.$element.pid==0&&$data.$element.new}threadnew{elseif $data.$element.pid==0}thread{elseif $data.$element.pid!=0&&$data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}">{$data.$element.subject}</a>{else}<span class="{if $data.$element.pid==0}{if $data.$element.new}currentthreadnew{else}currentthread{/if}{else}{if $data.$element.new}currentreplynew{else}currentreply{/if}{/if}">{$data.$element.subject}</span>{/if}{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if} -
|
||||
<li>{if $data.$element.id!=$id}<a class="subject {if $data.$element.pid==0&&$data.$element.new}threadnew{elseif $data.$element.pid==0}thread{elseif $data.$element.pid!=0&&$data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}">{$data.$element.subject}</a>{else}<span class="{if $data.$element.pid==0}{if $data.$element.new}currentthreadnew{else}currentthread{/if}{else}{if $data.$element.new}currentreplynew{else}currentreply{/if}{/if}">{$data.$element.subject}</span>{/if}
|
||||
|
||||
<span class="metadata">
|
||||
{if $data.$element.user_type==2}
|
||||
<strong class="admin registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_type==1}
|
||||
<strong class="mod registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_id>0}
|
||||
<strong class="registered_user">{$data.$element.name}</strong>,
|
||||
<span class="author-name registered_user">{$data.$element.name}</span>
|
||||
{else}
|
||||
<strong>{$data.$element.name}</strong>,
|
||||
<span class="author-name">{$data.$element.name}</span>
|
||||
{/if}
|
||||
|
||||
<span id="p{$data.$element.id}" class="tail">{$data.$element.formated_time}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}&back={$id}" title="{#mark_linktitle#}" onclick="mark({$data.$element.id},'{$THEMES_DIR}/{$theme}/images/marked.png','{$THEMES_DIR}/{$theme}/images/unmarked.png','{$THEMES_DIR}/{$theme}/images/mark_process.png','{#mark_linktitle#}','{#unmark_linktitle#}'); return false">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" title="{#unmark_linktitle#}" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=entry" title="{#delete_posting_title#}" onclick="return delete_posting_confirm(this, '{$smarty.config.delete_posting_confirm|escape:"url"}')"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time>
|
||||
{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}&back={$id}" title="{#mark_linktitle#}" onclick="mark({$data.$element.id},'{$THEMES_DIR}/{$theme}/images/marked.png','{$THEMES_DIR}/{$theme}/images/unmarked.png','{$THEMES_DIR}/{$theme}/images/mark_process.png','{#mark_linktitle#}','{#unmark_linktitle#}'); return false">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" title="{#unmark_linktitle#}" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=entry" title="{#delete_posting_title#}" onclick="return delete_posting_confirm(this, '{$smarty.config.delete_posting_confirm|escape:"url"}')"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>
|
||||
{/function}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<p class="caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
<li>{$smarty.config.$error}</li>
|
||||
<li>{$smarty.config.$error}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{if $tag_cloud || $latest_postings || $admin || $mod}
|
||||
<div id="main-grid" class="threaded">
|
||||
<div id="sidebar"{if $usersettings.sidebar==0} class="js-display-fold"{/if}>
|
||||
<a href="index.php?toggle_sidebar=true"><img id="sidebartoggle" class="{if $usersettings.sidebar==0}show-sidebar{else}hide-sidebar{/if}" src="{$THEMES_DIR}/{$theme}/images/plain.png" title="{#toggle_sidebar#}" alt="[+/-]" width="9" height="9" /></a>
|
||||
<h3 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h3>
|
||||
<h2 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h2>
|
||||
<div id="sidebarcontent">
|
||||
{if $latest_postings}
|
||||
<div id="latest-postings">
|
||||
|
@ -24,25 +24,43 @@
|
|||
<div id="modmenu">
|
||||
<h3>{#options#}</h3>
|
||||
<ul id="mod-options">
|
||||
{if $number_of_non_activated_users}<li><a href="index.php?mode=user" class="non-activated-users">{#non_activated_users_link#|replace:'[counter]':$number_of_non_activated_users}</a></li>{/if}
|
||||
<li><a href="index.php?mode=posting&delete_marked=true" class="delete-marked">{#delete_marked_link#}</a></li>
|
||||
<li><a href="index.php?mode=posting&manage_postings=true" class="manage">{#manage_postings_link#}</a></li>
|
||||
{if $show_spam_link}<li><a href="index.php?show_spam=true" class="report">{$smarty.config.show_spam_link|replace:"[number]":$total_spam}</a></li>{/if}
|
||||
{if $hide_spam_link}<li><a href="index.php?show_spam=true" class="report">{$smarty.config.hide_spam_link|replace:"[number]":$total_spam}</a></li>{/if}
|
||||
{if $delete_spam_link}<li><a href="index.php?mode=posting&delete_spam=true" class="delete-spam">{#delete_spam_link#}</a></li>{/if}
|
||||
{if $number_of_non_activated_users}<li><a href="index.php?mode=user" class="non-activated-users"><span>{#non_activated_users_link#|replace:'[counter]':$number_of_non_activated_users}</span></a></li>{/if}
|
||||
<li><a href="index.php?mode=posting&delete_marked=true" class="delete-marked"><span>{#delete_marked_link#}</span></a></li>
|
||||
<li><a href="index.php?mode=posting&manage_postings=true" class="manage"><span>{#manage_postings_link#}</span></a></li>
|
||||
{if $show_spam_link}<li><a href="index.php?show_spam=true" class="report"><span>{$smarty.config.show_spam_link|replace:"[number]":$total_spam}</span></a></li>{/if}
|
||||
{if $hide_spam_link}<li><a href="index.php?show_spam=true" class="report"><span>{$smarty.config.hide_spam_link|replace:"[number]":$total_spam}</span></a></li>{/if}
|
||||
{if $delete_spam_link}<li><a href="index.php?mode=posting&delete_spam=true" class="delete-spam"><span>{#delete_spam_link#}</span></a></li>{/if}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div id="threadlist">
|
||||
{/if}
|
||||
|
||||
{if $threads}
|
||||
{foreach from=$threads item=thread}
|
||||
<ul id="thread-{$thread}" class="thread {if $fold_threads==1}folded{else}expanded{/if}">
|
||||
{function name=tree level=0}
|
||||
<li><a class="{if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}"{if $data.$element.spam==1} title="{#spam#}"{/if}>{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if} - <strong>{if $data.$element.user_type==2}<span class="admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>{elseif $data.$element.user_type==1}<span class="mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>{elseif $data.$element.user_id>0}<span class="registered_user">{$data.$element.name}</span>{else}{$data.$element.name}{/if}</strong>, <span id="p{$data.$element.id}" class="tail">{$data.$element.formated_time}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
{if $data.$element.category_name && $data.$element.pid==0 && $category<=0} <a href="index.php?mode=index&category={$data.$element.category}" title="{#change_category_link#|replace:"[category]":$data.$element.category_name|escape:"html"}"><span class="category">({$data.$element.category_name})</span></a>{/if}{if $fold_threads==1 && $data.$element.pid==0 && $replies.$thread>0} <span class="replies" title="{*{if $replies.$thread==0}{#no_replies#}*}{if $replies.$thread==1}{#one_reply#}{else}{$smarty.config.several_replies|replace:"[replies]":$replies.$thread}{/if}">({$replies.$thread})</span>{/if}</span>
|
||||
<li><a class="subject {if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?id={$data.$element.id}"{if $data.$element.spam==1} title="{#spam#}"{/if}>{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>
|
||||
|
||||
<span class="metadata">
|
||||
{if $data.$element.user_type==2}
|
||||
<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_type==1}
|
||||
<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$element.name}</span>
|
||||
{elseif $data.$element.user_id>0}
|
||||
<span class="author-name registered_user">{$data.$element.name}</span>
|
||||
{else}
|
||||
<span class="author-name">{$data.$element.name}</span>
|
||||
{/if}
|
||||
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time>
|
||||
{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if}{if $data.$element.pid==0} <a href="index.php?mode=thread&id={$data.$element.id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" title="{#open_whole_thread#}" alt="[*]" width="11" height="11" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}
|
||||
{if $data.$element.category_name && $data.$element.pid==0 && $category<=0} <a href="index.php?mode=index&category={$data.$element.category}" title="{#change_category_link#|replace:"[category]":$data.$element.category_name|escape:"html"}"><span class="category">({$data.$element.category_name})</span></a>{/if}{if $fold_threads==1 && $data.$element.pid==0 && $replies.$thread>0} <span class="replies" title="{*{if $replies.$thread==0}{#no_replies#}*}{if $replies.$thread==1}{#one_reply#}{else}{$smarty.config.several_replies|replace:"[replies]":$replies.$thread}{/if}">({$replies.$thread})</span>{/if}
|
||||
</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}{if $fold_threads==1} js-display-none{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>{/function}
|
||||
{tree element=$thread}
|
||||
|
@ -53,7 +71,7 @@
|
|||
{/if}
|
||||
|
||||
{if $pagination}
|
||||
<ul class="pagination pagination-index">
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}&page={$pagination.previous}{if $category}&category={$category}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}&page={$item}{if $category}&category={$category}{/if}">{$item}</a></li>{/if}
|
||||
|
@ -61,3 +79,7 @@
|
|||
{if $pagination.next}<li><a href="index.php?mode={$mode}&page={$pagination.next}{if $category}&category={$category}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
{if $tag_cloud || $latest_postings || $admin || $mod}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
{if $threads}
|
||||
<table class="normaltab" border="0" cellpadding="5" cellspacing="1">
|
||||
<div id="main-grid" class="table">
|
||||
<table id="threadlist" class="normaltab" border="0" cellpadding="5" cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
{*{if $fold_threads==1}<th style="width:10px;"> </th>{/if}*}
|
||||
<th>{#subject#}</th>
|
||||
|
@ -9,6 +11,8 @@
|
|||
<th>{#replies#}</th>
|
||||
{if $categories && $category<=0}<th>{#category#}</th>{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$threads item=thread}
|
||||
{cycle values="a,b" assign=c}
|
||||
<tr class="{$c}">
|
||||
|
@ -16,25 +20,31 @@
|
|||
<td class="subject">
|
||||
<ul id="thread-{$thread}" class="thread {if $fold_threads==1}folded{else}expanded{/if}">
|
||||
{function name=tree level=0}
|
||||
<li><a class="{if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?mode=thread&id={$data.$element.tid}{if $data.$element.pid!=0}#p{$data.$element.id}{/if}" title="{$data.$element.name}, {$data.$element.formated_time}">{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>{if $data.$element.no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" />{/if}<span id="p{$data.$element.id}" class="tail">{if $admin || $mod} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
<li><a class="subject {if $data.$element.pid==0 && $data.$element.new}{if $data.$element.sticky>0 && $data.$element.locked==1}threadnew-sticky-locked{elseif $data.$element.sticky>0}threadnew-sticky{elseif $data.$element.locked==1}threadnew-locked{else}threadnew{/if}{elseif $data.$element.pid==0}{if $data.$element.sticky>0 && $data.$element.locked==1}thread-sticky-locked{elseif $data.$element.sticky>0}thread-sticky{elseif $data.$element.locked==1}thread-locked{else}thread{/if}{elseif $data.$element.pid!=0 && $data.$element.new}replynew{else}reply{/if}{if $data.$element.is_read} read{/if}" href="index.php?mode=thread&id={$data.$element.tid}{if $data.$element.pid!=0}#p{$data.$element.id}{/if}" title="{$data.$element.name}, {$data.$element.formated_time}">{if $data.$element.spam==1}<span class="spam">{$data.$element.subject}</span>{else}{$data.$element.subject}{/if}</a>
|
||||
|
||||
<span class="metadata">
|
||||
<span id="p{$data.$element.id}" class="tail">
|
||||
{if $data.$element.no_text}<a><img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="[ {#no_text_alt#} ]" width="11" height="9" /></a>{/if}{if $admin || $mod} {if $data.$element.not_classified_spam_ham==1}<a><img src="{$THEMES_DIR}/{$theme}/images/keep_eye_on.png" title="{#unclassified_linktitle#}" alt="[!]" width="14" height="11" /></a>{/if} <a id="marklink_{$data.$element.id}" href="index.php?mode=posting&mark={$data.$element.id}" title="{#mark_linktitle#}">{if $data.$element.marked==0}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/unmarked.png" title="{#mark_linktitle#}" alt="[○]" width="11" height="11" />{else}<img id="markimg_{$data.$element.id}" src="{$THEMES_DIR}/{$theme}/images/marked.png" title="{#unmark_linktitle#}" alt="[●]" width="11" height="11" />{/if}</a> <a href="index.php?mode=posting&delete_posting={$data.$element.id}&csrf_token={$CSRF_TOKEN}&back=index" title="{#delete_posting_title#}"><img src="{$THEMES_DIR}/{$theme}/images/delete_posting.png" title="{#delete_posting_title#}" alt="[x]" width="9" height="9" /></a>{/if}</span>
|
||||
</span>
|
||||
{if is_array($child_array[$element])}
|
||||
<ul class="{if $level<$settings.deep_reply}reply{elseif $level>=$settings.deep_reply&&$level<$settings.very_deep_reply}deep-reply{else}very-deep-reply{/if}{if $fold_threads==1} js-display-none{/if}">{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}</ul>{/if}</li>
|
||||
{/function}
|
||||
{tree element=$thread}
|
||||
</ul>
|
||||
</td>
|
||||
<td><span class="small nowrap">{if $data.$thread.user_type==2}<span class="admin registered_user" title="{#administrator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_type==1}<span class="mod registered_user" title="{#moderator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_id>0}<span class="registered_user">{$data.$thread.name}</span>{else}{$data.$thread.name}{/if}</span></td>
|
||||
<td><span class="small nowrap">{$data.$thread.formated_time}</span></td>
|
||||
<td><span class="small nowrap">{if $data.$thread.user_type==2}<span class="author-name admin registered_user" title="{#administrator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_type==1}<span class="author-name mod registered_user" title="{#moderator_title#}">{$data.$thread.name}</span>{elseif $data.$thread.user_id>0}<span class="author-name registered_user">{$data.$thread.name}</span>{else}<span class="author-name">{$data.$thread.name}</span>{/if}</span></td>
|
||||
<td><span class="small nowrap"><time datetime="{$data.$thread.ISO_time}">{$data.$thread.formated_time}</time></span></td>
|
||||
{if $settings.count_views}<td><span class="small">{$total_views.$thread}</span></td>{/if}
|
||||
<td><span class="small">{$replies.$thread}</span></td>
|
||||
{if $categories && $category<=0}<td>{if $data.$thread.category_name}<a href="index.php?mode=index&category={$data.$thread.category}" title="{#change_category_link#|replace:"[category]":$data.$thread.category_name|escape:"html"}"><span class="category nowrap">{$data.$thread.category_name}</span></a>{else} {/if}</td>{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{else}<p>{if $category!=0}{#no_messages_in_category#}{else}{#no_messages#}{/if}</p>{/if}
|
||||
|
||||
{if $pagination}
|
||||
<ul class="pagination pagination-index-table">
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}&page={$pagination.previous}{if $category}&category={$category}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}&page={$item}{if $category}&category={$category}{/if}">{$item}</a></li>{/if}
|
||||
|
@ -44,9 +54,8 @@
|
|||
{/if}
|
||||
|
||||
{if $tag_cloud || $latest_postings || $admin || $mod}
|
||||
<div id="bottombar"{if $usersettings.sidebar==0} class="js-display-fold"{/if}>
|
||||
<a href="index.php?toggle_sidebar=true"><img id="sidebartoggle" class="{if $usersettings.sidebar==0}show-sidebar{else}hide-sidebar{/if}" src="{$THEMES_DIR}/{$theme}/images/plain.png" title="{#toggle_sidebar#}" alt="[+/-]" width="9" height="9" /></a>
|
||||
<h3 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h3>
|
||||
<div id="sidebar"{if $usersettings.sidebar==0} class="js-display-fold"{/if}>
|
||||
<h2 class="sidebar"><a href="index.php?toggle_sidebar=true" title="{#toggle_sidebar#}">{#sidebar#}</a></h2>
|
||||
<div id="sidebarcontent">
|
||||
{if $latest_postings}
|
||||
<div id="latest-postings">
|
||||
|
@ -68,14 +77,17 @@
|
|||
<div id="modmenu">
|
||||
<h3>{#options#}</h3>
|
||||
<ul id="mod-options">
|
||||
{if $number_of_non_activated_users}<li><a href="index.php?mode=user" class="non-activated-users">{#non_activated_users_link#|replace:'[counter]':$number_of_non_activated_users}</a></li>{/if}
|
||||
<li><a href="index.php?mode=posting&delete_marked=true" class="delete-marked">{#delete_marked_link#}</a></li>
|
||||
<li><a href="index.php?mode=posting&manage_postings=true" class="manage">{#manage_postings_link#}</a></li>
|
||||
{if $show_spam_link}<li><a href="index.php?show_spam=true" class="report">{$smarty.config.show_spam_link|replace:"[number]":$total_spam}</a></li>{/if}
|
||||
{if $hide_spam_link}<li><a href="index.php?show_spam=true" class="report">{$smarty.config.hide_spam_link|replace:"[number]":$total_spam}</a></li>{/if}
|
||||
{if $delete_spam_link}<li><a href="index.php?mode=posting&delete_spam=true" class="delete-spam">{#delete_spam_link#}</a></li>{/if}
|
||||
{if $number_of_non_activated_users}<li><a href="index.php?mode=user" class="non-activated-users"><span>{#non_activated_users_link#|replace:'[counter]':$number_of_non_activated_users}</span></a></li>{/if}
|
||||
<li><a href="index.php?mode=posting&delete_marked=true" class="delete-marked"><span>{#delete_marked_link#}</span></a></li>
|
||||
<li><a href="index.php?mode=posting&manage_postings=true" class="manage"><span>{#manage_postings_link#}</span></a></li>
|
||||
{if $show_spam_link}<li><a href="index.php?show_spam=true" class="report"><span>{$smarty.config.show_spam_link|replace:"[number]":$total_spam}</span></a></li>{/if}
|
||||
{if $hide_spam_link}<li><a href="index.php?show_spam=true" class="report"><span>{$smarty.config.hide_spam_link|replace:"[number]":$total_spam}</span></a></li>{/if}
|
||||
{if $delete_spam_link}<li><a href="index.php?mode=posting&delete_spam=true" class="delete-spam"><span>{#delete_spam_link#}</span></a></li>{/if}
|
||||
</ul>
|
||||
</div>{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{if $threads}
|
||||
</div>
|
||||
{/if}
|
|
@ -1,6 +1,6 @@
|
|||
{if $lang_section}{config_load file=$language_file section=$lang_section}{/if}
|
||||
{if $custom_message}
|
||||
<p>{$custom_message}</p>
|
||||
<p>{$custom_message}</p>
|
||||
{elseif $message}
|
||||
<p>{$smarty.config.$message|replace:"[var]":$var}</p>
|
||||
<p>{$smarty.config.$message|replace:"[var]":$var}</p>
|
||||
{/if}
|
||||
|
|
|
@ -1,24 +1,34 @@
|
|||
{config_load file=$language_file section="login"}
|
||||
{if $ip_temporarily_blocked}
|
||||
{#login_message#}
|
||||
<p class="caution">{#login_ip_temp_blocked#}</p>
|
||||
<p class="notice caution">{#login_ip_temp_blocked#}</p>
|
||||
{else}
|
||||
{if $login_message && $smarty.config.$login_message}
|
||||
<p class="{if $login_message=='account_activated' || $login_message=='mail_sent' || $login_message=='pw_sent'}ok{else}caution{/if}">{$smarty.config.$login_message}</p>
|
||||
<p class="notice {if $login_message=='account_activated' || $login_message=='mail_sent' || $login_message=='pw_sent'}ok{else}caution{/if}">{$smarty.config.$login_message}</p>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $id}<input type="hidden" name="id" value="{$id}" />{/if}
|
||||
<p><label for="login" class="main">{#login_username#}</label><br /><input id="login" class="login" type="text" name="username" size="25" /></p>
|
||||
<p><label for="password" class="main">{#login_password#}</label><br /><input id="password" class="login" type="password" name="userpw" size="25" /></p>
|
||||
<div id="card">
|
||||
<p>{#login_advice#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $id} <input type="hidden" name="id" value="{$id}" />{/if}
|
||||
<div>
|
||||
<label for="login" class="main">{#login_username#}</label>
|
||||
<input id="login" class="login" type="text" name="username" size="25" required />
|
||||
</div>
|
||||
<div>
|
||||
<label for="password" class="main">{#login_password#}</label>
|
||||
<input id="password" class="login" type="password" name="userpw" spellcheck="false" autocomplete="off" writingsuggestions="false" size="25" required />
|
||||
</div>
|
||||
{if $settings.autologin==1}
|
||||
<p class="small"><input id="autologin" type="checkbox" name="autologin_checked" value="true" /> <label for="autologin">{#login_auto#}</label></p>
|
||||
<div class="normalform">
|
||||
<input id="autologin" type="checkbox" name="autologin_checked" value="true" /><label for="autologin">{#login_auto#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
<p><input type="submit" value="{#login_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<p class="small">{#login_advice#}</p>
|
||||
<p class="small"><a href="index.php?mode=login&action=pw_forgotten">{#pw_forgotten_link#}</a></p>
|
||||
<div class="buttonbar">
|
||||
<button value="{#login_submit#}">{#login_submit#}</button>
|
||||
<p><a href="index.php?mode=login&action=pw_forgotten">{#pw_forgotten_link#}</a></p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{config_load file=$language_file section="pw_forgotten"}
|
||||
<p>{#pw_forgotten_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="login" />
|
||||
<p><label for="pwf_email" class="main">{#pwf_email#}</label><br />
|
||||
<input id="pwf_email" type="text" name="pwf_email" size="30" /> <input type="submit" name="pwf_submit" value="{#submit_button_ok#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div id="card">
|
||||
<p>{#pw_forgotten_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="login" />
|
||||
<div>
|
||||
<label for="pwf_email" class="main">{#pwf_email#}</label>
|
||||
<input id="pwf_email" type="email" name="pwf_email" size="30" autofocus required />
|
||||
</div>
|
||||
<div class="buttonbar">
|
||||
<button name="pwf_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{if $no_authorisation}
|
||||
<p class="caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{elseif $page}
|
||||
{$page.content}
|
||||
{else}
|
||||
<p class="caution">{#page_doesnt_exist#}</p>
|
||||
<p class="notice caution">{#page_doesnt_exist#}</p>
|
||||
{/if}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{config_load file=$language_file section="posting"}
|
||||
{config_load file=$language_file section="thread_entry"}
|
||||
{config_load file=$language_file section="user"}
|
||||
{if $captcha}{config_load file=$language_file section="captcha"}{/if}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{$smarty.config.$no_authorisation|replace:"[minutes]":$settings.edit_period}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation|replace:"[minutes]":$settings.edit_period}</p>
|
||||
{if $text}
|
||||
<textarea onfocus="this.select()" onclick="this.select()" readonly="readonly" cols="80" rows="21" name="text">{$text}</textarea>
|
||||
{/if}
|
||||
|
@ -13,125 +13,121 @@
|
|||
{/if}
|
||||
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul style="margin-bottom:25px;">
|
||||
{section name=mysec loop=$errors}
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[text_length]":$text_length|replace:"[text_maxlength]":$settings.text_maxlength|replace:"[word]":$word|replace:"[minutes]":$minutes|replace:"[not_accepted_word]":$not_accepted_word|replace:"[not_accepted_words]":$not_accepted_words}</li>
|
||||
<li>{assign var="error" value=$errors[mysec]}{$smarty.config.$error|replace:"[text_length]":$text_length|replace:"[text_maxlength]":$settings.text_maxlength|replace:"[word]":$word|replace:"[minutes]":$minutes|replace:"[not_accepted_word]":$not_accepted_word|replace:"[not_accepted_words]":$not_accepted_words}</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{elseif isset($minutes_left_to_edit)}
|
||||
<p class="caution">{if $settings.user_edit_if_no_replies==1}{#minutes_left_to_edit_reply#|replace:"[minutes]":$minutes_left_to_edit}{else}{#minutes_left_to_edit#|replace:"[minutes]":$minutes_left_to_edit}{/if}</p>
|
||||
<p class="notice caution">{if $settings.user_edit_if_no_replies==1}{#minutes_left_to_edit_reply#|replace:"[minutes]":$minutes_left_to_edit}{else}{#minutes_left_to_edit#|replace:"[minutes]":$minutes_left_to_edit}{/if}</p>
|
||||
{/if}
|
||||
|
||||
{if $preview}
|
||||
{if $preview_hp && !$email}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"$homepage_alt\" width=\"13\" height=\"13\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"{#homepage#}\" width=\"13\" height=\"13\" /></a>"}
|
||||
{elseif !$preview_hp && $email}
|
||||
{assign var=email_hp value=" <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"$email_alt\" width=\"13\" height=\"10\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"{#email#}\" width=\"13\" height=\"10\" /></a>"}
|
||||
{elseif $preview_hp && $email}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"$homepage_alt\" width=\"13\" height=\"13\" /></a> <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"$email_alt\" width=\"13\" height=\"10\" /></a>"}
|
||||
{assign var=email_hp value=" <a href=\"$preview_hp\"><img src=\"$THEMES_DIR/$theme/images/homepage.png\" alt=\"{#homepage#}\" width=\"13\" height=\"13\" /></a> <a href=\"index.php?mode=contact&id=$id\"><img src=\"$THEMES_DIR/$theme/images/email.png\" alt=\"{#email#}\" width=\"13\" height=\"10\" /></a>"}
|
||||
{else}
|
||||
{assign var=email_hp value=""}
|
||||
{/if}
|
||||
<h3 class="preview">{#preview_headline#}</h3>
|
||||
<div class="preview">
|
||||
<div class="posting">
|
||||
<div class="header">
|
||||
<h1 class="postingheadline">{$preview_subject}{if $category_name} <span class="category">({$category_name})</span>{/if}</h1>
|
||||
<p class="author">{if $preview_location}{#posted_by_location#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[location]":$preview_location|replace:"[time]":$preview_formated_time}{else}{#posted_by#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[time]":$preview_formated_time}{/if}</p>
|
||||
{if $preview_text}{$preview_text}{else}<p>{#no_text#}</p>{/if}
|
||||
<p class="author">{if $preview_location}{#posted_by_location#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp|replace:"[location]":$preview_location}{else}{#posted_by#|replace:"[name]":$preview_name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$preview_ISO_time}">{$preview_formated_time}</time></p>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="body">{if $preview_text}{$preview_text}{else}<p>{#no_text#}</p>{/if}</div>
|
||||
{if $preview_signature && $show_signature==1}
|
||||
<p class="signature">---<br />
|
||||
<div class="signature"><p>---<br />
|
||||
{$preview_signature}</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<form action="index.php" method="post" id="postingform" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="uniqid" value="{$uniqid}" />
|
||||
<input type="hidden" name="posting_mode" value="{$posting_mode}" />
|
||||
{if $session}
|
||||
<input type="hidden" name="{$session.name}" value="{$session.id}" />
|
||||
{/if}
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="mode" value="{$mode}" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="uniqid" value="{$uniqid}" />
|
||||
<input type="hidden" name="posting_mode" value="{$posting_mode}" />
|
||||
{if $session} <input type="hidden" name="{$session.name}" value="{$session.id}" />{/if}
|
||||
|
||||
{if $quote}
|
||||
<input type="hidden" id="quote" value="true" />
|
||||
{/if}
|
||||
{if $form_type==0}
|
||||
<input type="hidden" id="name_required" value="true" />
|
||||
{/if}
|
||||
{if !$settings.empty_postings_possible}
|
||||
<input type="hidden" id="text_required" value="true" />
|
||||
{/if}
|
||||
{if $terms_of_use_agreement}
|
||||
<input type="hidden" id="terms_of_use_required" value="true" />
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
<input type="hidden" id="data_privacy_agreement_required" value="true" />
|
||||
{/if}
|
||||
{if $quote} <input type="hidden" id="quote" value="true" />{/if}
|
||||
{if $form_type==0} <input type="hidden" id="name_required" value="true" />{/if}
|
||||
{if !$settings.empty_postings_possible} <input type="hidden" id="text_required" value="true" />{/if}
|
||||
{if $terms_of_use_agreement} <input type="hidden" id="terms_of_use_required" value="true" />{/if}
|
||||
{if $data_privacy_agreement} <input type="hidden" id="data_privacy_agreement_required" value="true" />{/if}
|
||||
|
||||
{if $form_type==0}
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
|
||||
<p>
|
||||
<label for="name" class="input">{#name_marking#}</label>
|
||||
<input id="name" type="text" size="40" name="{$fld_user_name}" value="{if $name}{$name}{/if}" maxlength="{$settings.username_maxlength}" tabindex="1" />
|
||||
</p>
|
||||
<div>
|
||||
<label for="name" class="input">{#name_marking#}</label>
|
||||
<input id="name" type="text" size="40" name="{$fld_user_name}" value="{if $name}{$name}{/if}" maxlength="{$settings.username_maxlength}" required />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="email" class="input">{#email_marking#}</label>
|
||||
<input id="email" type="text" size="40" name="{$fld_user_email}" value="{if $email}{$email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="2" /> <span class="xsmall">{#optional_email#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="email" class="input">{#email_marking#} <span class="xsmall">{#optional_email#}</span></label>
|
||||
<input id="email" type="email" size="40" name="{$fld_user_email}" value="{if $email}{$email}{/if}" maxlength="{$settings.email_maxlength}" />
|
||||
</div>
|
||||
|
||||
<p class="hp">
|
||||
<label for="repeat_email" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="repeat_email" type="text" size="40" name="{$fld_repeat_email}" value="{if $honey_pot_email}{$honey_pot_email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</p>
|
||||
<div class="hp">
|
||||
<label for="repeat_email" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="repeat_email" type="email" size="40" name="{$fld_repeat_email}" value="{if $honey_pot_email}{$honey_pot_email}{/if}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="hp" class="input">{#hp_marking#}</label>
|
||||
<input id="hp" type="text" size="40" name="{$fld_hp}" value="{if $hp}{$hp}{/if}" maxlength="{$settings.hp_maxlength}" tabindex="3" /> <span class="xsmall">{#optional#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="hp" class="input">{#hp_marking#} <span class="xsmall">{#optional#}</span></label>
|
||||
<input id="hp" type="url" size="40" name="{$fld_hp}" value="{if $hp}{$hp}{/if}" maxlength="{$settings.hp_maxlength}" />
|
||||
</div>
|
||||
|
||||
<p class="hp">
|
||||
<label for="phone" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="phone" class="login" type="text" size="30" name="{$fld_phone}" value="{if $honey_pot_phone}{$honey_pot_phone}{/if}" maxlength="35" tabindex="-1" />
|
||||
</p>
|
||||
<div class="hp">
|
||||
<label for="phone" class="main">{#honeypot_field_marking#}</label>
|
||||
<input id="phone" class="login" type="tel" size="30" name="{$fld_phone}" value="{if $honey_pot_phone}{$honey_pot_phone}{/if}" maxlength="35" />
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<label for="location" class="input">{#location_marking#}</label>
|
||||
<input id="location" type="text" size="40" name="{$fld_location}" value="{if $location}{$location}{/if}" maxlength="{$settings.location_maxlength}" tabindex="4" /> <span class="xsmall">{#optional#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="location" class="input">{#location_marking#} <span class="xsmall">{#optional#}</span></label>
|
||||
<input id="location" type="text" size="40" name="{$fld_location}" value="{if $location}{$location}{/if}" maxlength="{$settings.location_maxlength}" />
|
||||
</div>
|
||||
|
||||
{if $settings.remember_userdata == 1 && $posting_mode==0 && !$user}
|
||||
<p>
|
||||
<input id="setcookie" class="checkbox" type="checkbox" name="setcookie" value="1"{if $setcookie} checked="checked"{/if} /> <label for="setcookie">{#remember_userdata_marking#}</label>{if $cookie} <span id="delete_cookie"><a href="index.php?mode=delete_cookie">{#delete_cookie_linkname#}</a></span>{/if}
|
||||
</p>
|
||||
<div>
|
||||
<input id="setcookie" type="checkbox" name="setcookie" value="1"{if $setcookie} checked="checked"{/if} /><label for="setcookie">{#remember_userdata_marking#}</label>{if $cookie} <span id="delete_cookie"><a href="index.php?mode=delete_cookie">{#delete_cookie_linkname#}</a></span>{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
{if $categories}
|
||||
<p><label for="p_category" class="input">{#category_marking#}</label>
|
||||
<select id="p_category" size="1" name="p_category" tabindex="5"{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0} disabled="disabled"{/if}>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select></p>
|
||||
{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0}
|
||||
<input type="hidden" name="p_category" value="{$p_category}" />
|
||||
{/if}
|
||||
<div>
|
||||
<label for="p_category" class="input">{#category_marking#}</label>
|
||||
<select id="p_category" size="1" name="p_category" {if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0} disabled="disabled"{/if}>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0} <option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
{if $posting_mode==0 && $id>0 || $posting_mode==1 && $pid>0}
|
||||
<input type="hidden" name="p_category" value="{$p_category}" />
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<p><label for="subject" class="input">{#subject_marking#}</label>
|
||||
<input id="subject" type="text" size="50" name="{$fld_subject}" value="{if $subject}{$subject}{/if}" maxlength="{$settings.subject_maxlength}" tabindex="6" />
|
||||
</p>
|
||||
<div>
|
||||
<label for="subject" class="input">{#subject_marking#}</label>
|
||||
<input id="subject" type="text" size="50" name="{$fld_subject}" value="{if $subject}{$subject}{/if}" maxlength="{$settings.subject_maxlength}" required />
|
||||
</div>
|
||||
|
||||
{* Tags
|
||||
0 == Off
|
||||
|
@ -140,158 +136,196 @@
|
|||
3 == everyone
|
||||
*}
|
||||
{if $settings.tags > 0 && ( ($settings.tags == 1 && ($admin || $mod)) || ($settings.tags == 2 && ($user_type === 0 || $admin || $mod)) || $settings.tags > 2 )}
|
||||
<p>
|
||||
<label for="tags" class="input">{#tags_marking#}</label>
|
||||
<input id="tags" type="text" size="50" name="tags" value="{$tags|default:""}" maxlength="253" tabindex="-1" /> <span class="xsmall">{#tags_note#}</span>
|
||||
</p>
|
||||
<div>
|
||||
<label for="tags" class="input">{#tags_marking#} <span class="xsmall">{#tags_note#}</span></label>
|
||||
<input id="tags" type="text" size="50" name="tags" value="{$tags|default:""}" maxlength="253" tabindex="-1" />
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="message">
|
||||
<label for="text" class="textarea">{#message_marking#}</label><br />
|
||||
<fieldset id="message">
|
||||
|
||||
<textarea id="text" cols="80" rows="21" name="text" tabindex="7">{if $text}{$text}{/if}</textarea>
|
||||
<div id="formatting-help">
|
||||
<h3>{#bbcode_help_heading#}</h3>
|
||||
<p><a href="#entry-input">{#bbcode_help_skip_link#}</a></p>
|
||||
{*<!--
|
||||
This list is read out to generte the default BBCode buttons or displayed if
|
||||
JavaScript isn't available.
|
||||
-->*}
|
||||
<dl id="bbcode-instructions">
|
||||
<div>
|
||||
<dt id="b" title="{#bbcode_bold_label#}">{#bbcode_bold_title#}</dt>
|
||||
<dd>{#bbcode_bold_instruction#}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt id="i" title="{#bbcode_italic_label#}">{#bbcode_italic_title#}</dt>
|
||||
<dd>{#bbcode_italic_instruction#}</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt id="link" title="{#bbcode_link_label#}">{#bbcode_link_title#}</dt>
|
||||
<dd>{#bbcode_link_instruction#}</dd>
|
||||
</div>
|
||||
{if $settings.bbcode_color}
|
||||
<div>
|
||||
<dt id="color" title="{#bbcode_color_label#}">{#bbcode_color_title#}</dt>
|
||||
<dd>{#bbcode_color_instruction#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_size}
|
||||
<div>
|
||||
<dt id="size" title="{#bbcode_size_label#}">{#bbcode_size_title#}</dt>
|
||||
<dd id="small" title="{#bbcode_size_label_small#}">{#bbcode_size_instruction_small#}</dd>
|
||||
<dd id="large" title="{#bbcode_size_label_large#}">{#bbcode_size_instruction_large#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
<div>
|
||||
<dt id="list" title="{#bbcode_list_label#}">{#bbcode_list_title#}</dt>
|
||||
<dd>{#bbcode_list_instruction#}</dd>
|
||||
</div>
|
||||
{if $settings.bbcode_img}
|
||||
<div>
|
||||
<dt id="img" title="{#bbcode_image_label#}">{#bbcode_image_title#}</dt>
|
||||
<dd title="{#bbcode_image_label_default#}">{#bbcode_image_instr_default#}</dd>
|
||||
<dd id="left" title="{#bbcode_image_label_left#}">{#bbcode_image_instr_left#}</dd>
|
||||
<dd id="right" title="{#bbcode_image_label_right#}">{#bbcode_image_instr_right#}</dd>
|
||||
<dd id="thumbnail" title="{#bbcode_image_label_thumb#}">{#bbcode_image_instr_thumb#}</dd>
|
||||
<dd id="thumbnail-left" title="{#bbcode_image_label_thumb_left#}">{#bbcode_image_instr_thumb_left#}</dd>
|
||||
<dd id="thumbnail-right" title="{#bbcode_image_label_thumb_right#}">{#bbcode_image_instr_thumb_right#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $upload_images}
|
||||
<div>
|
||||
<dt id="upload" title="{#bbcode_upload_label#}">{#bbcode_upload_title#}</dt>
|
||||
<dd><a href="index.php?mode=upload_image">{#bbcode_upload_instruction#}</a></dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<div>
|
||||
<dt id="tex" title="{#bbcode_tex_label#}">{#bbcode_tex_title#}</dt>
|
||||
<dd>{#bbcode_tex_instruction#}</dd>
|
||||
</div>
|
||||
{/if}
|
||||
{if $settings.bbcode_code}
|
||||
<div>
|
||||
<dt id="code" title="{#bbcode_code_label#}">{#bbcode_code_title#}</dt>
|
||||
<dd id="inlinecode" title="{#bbcode_code_label_inline#}">{#bbcode_code_instruction_inline#}</dd>
|
||||
<dd title="{#bbcode_code_label_general#}">{#bbcode_code_instruction_general#}</dd>
|
||||
{if $code_languages}
|
||||
{foreach from=$code_languages item=code_language}
|
||||
<dd id="{$code_language}" title="{#bbcode_code_label_specific#|replace:"[language]":$code_language}">{#bbcode_code_instruction_spec#|replace:"[language]":$code_language}</dd>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</dl>
|
||||
{/if}
|
||||
|
||||
<div id="format-bar">
|
||||
{if $settings.smilies && $smilies}
|
||||
<dl id="smiley-instructions">
|
||||
{foreach name="smilies" from=$smilies item=smiley}
|
||||
<div>
|
||||
<dt class="{if $smarty.foreach.smilies.index<6}default{else}additional{/if}" title="{#insert_smiley_title#}">{$smiley.code}</dt>
|
||||
<dd><img src="images/smilies/{$smiley.file}" alt="{$smiley.code}" /></dd>
|
||||
</div>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div id="entry-input">
|
||||
<label for="text" class="textarea">{#message_marking#}</label>
|
||||
|
||||
<div>
|
||||
|
||||
<div id="format-bar">
|
||||
{if $settings.bbcode}
|
||||
<div id="bbcode-bar">
|
||||
<div id="bbcode-bar">
|
||||
{*<!--
|
||||
Here you can insert custom BBCode buttons. If you leave this div empty
|
||||
the default buttons will be inserted. Example button:
|
||||
<button title="Foo bar!" name="foo">Foo</button>
|
||||
-->*}
|
||||
</div>
|
||||
</div>
|
||||
{if $settings.smilies && $smilies}
|
||||
<div id="smiley-bar">
|
||||
<div id="smiley-bar">
|
||||
{*<!--
|
||||
Like custom BBCode buttons, example:
|
||||
<button title="Insert smiley" name=":-)"><img src="..." /></button>
|
||||
-->*}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{*<!--
|
||||
This list is read out to generte the default BBCode buttons or displayed if
|
||||
JavaScript isn't available.
|
||||
-->*}
|
||||
<dl id="bbcode-instructions">
|
||||
<dt id="b" title="{#bbcode_bold_label#}">{#bbcode_bold_title#}</dt>
|
||||
<dd>{#bbcode_bold_instruction#}</dd>
|
||||
<dt id="i" title="{#bbcode_italic_label#}">{#bbcode_italic_title#}</dt>
|
||||
<dd>{#bbcode_italic_instruction#}</dd>
|
||||
<dt id="link" title="{#bbcode_link_label#}">{#bbcode_link_title#}</dt>
|
||||
<dd>{#bbcode_link_instruction#}</dd>
|
||||
{if $settings.bbcode_color}
|
||||
<dt id="color" title="{#bbcode_color_label#}">{#bbcode_color_title#}</dt>
|
||||
<dd>{#bbcode_color_instruction#}</dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_size}
|
||||
<dt id="size" title="{#bbcode_size_label#}">{#bbcode_size_title#}</dt>
|
||||
<dd id="small" title="{#bbcode_size_label_small#}">{#bbcode_size_instruction_small#}</dd>
|
||||
<dd id="large" title="{#bbcode_size_label_large#}">{#bbcode_size_instruction_large#}</dd>
|
||||
{/if}
|
||||
<dt id="list" title="{#bbcode_list_label#}">{#bbcode_list_title#}</dt>
|
||||
<dd>{#bbcode_list_instruction#}</dd>
|
||||
{if $settings.bbcode_img}
|
||||
<dt id="img" title="{#bbcode_image_label#}">{#bbcode_image_title#}</dt>
|
||||
<dd title="{#bbcode_image_label_default#}">{#bbcode_image_instr_default#}</dd>
|
||||
<dd id="left" title="{#bbcode_image_label_left#}">{#bbcode_image_instr_left#}</dd>
|
||||
<dd id="right" title="{#bbcode_image_label_right#}">{#bbcode_image_instr_right#}</dd>
|
||||
<dd id="thumbnail" title="{#bbcode_image_label_thumb#}">{#bbcode_image_instr_thumb#}</dd>
|
||||
<dd id="thumbnail-left" title="{#bbcode_image_label_thumb_left#}">{#bbcode_image_instr_thumb_left#}</dd>
|
||||
<dd id="thumbnail-right" title="{#bbcode_image_label_thumb_right#}">{#bbcode_image_instr_thumb_right#}</dd>
|
||||
{/if}
|
||||
{if $upload_images}
|
||||
<dt id="upload" title="{#bbcode_upload_label#}">{#bbcode_upload_title#}</dt>
|
||||
<dd><a href="index.php?mode=upload_image">{#bbcode_upload_instruction#}</a></dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_latex && $settings.bbcode_latex_uri}
|
||||
<dt id="tex" title="{#bbcode_tex_label#}">{#bbcode_tex_title#}</dt>
|
||||
<dd>{#bbcode_tex_instruction#}</dd>
|
||||
{/if}
|
||||
{if $settings.bbcode_code}
|
||||
<dt id="code" title="{#bbcode_code_label#}">{#bbcode_code_title#}</dt>
|
||||
<dd id="inlinecode" title="{#bbcode_code_label_inline#}">{#bbcode_code_instruction_inline#}</dd>
|
||||
<dd title="{#bbcode_code_label_general#}">{#bbcode_code_instruction_general#}</dd>
|
||||
{if $code_languages}
|
||||
{foreach from=$code_languages item=code_language}
|
||||
<dd id="{$code_language}" title="{#bbcode_code_label_specific#|replace:"[language]":$code_language}">{#bbcode_code_instruction_spec#|replace:"[language]":$code_language}</dd>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/if}
|
||||
</dl>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{if $settings.smilies && $smilies}
|
||||
<dl id="smiley-instructions">
|
||||
{foreach name="smilies" from=$smilies item=smiley}
|
||||
<dt class="{if $smarty.foreach.smilies.index<6}default{else}additional{/if}" title="{#insert_smiley_title#}">{$smiley.code}</dt>
|
||||
<dd><img src="images/smilies/{$smiley.file}" alt="{$smiley.code}" /></dd>
|
||||
{/foreach}
|
||||
</dl>
|
||||
{/if}
|
||||
<textarea id="text" cols="80" rows="21" name="text">{if $text}{$text}{/if}</textarea>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
{if $signature || $provide_email_notification || $provide_sticky || $terms_of_use_agreement || $data_privacy_agreement}
|
||||
<fieldset>
|
||||
<fieldset>
|
||||
{if $signature}
|
||||
<p>
|
||||
<input id="show_signature" type="checkbox" name="show_signature" value="1"{if $show_signature && $show_signature==1} checked="checked"{/if} /> <label for="show_signature">{#show_signature_marking#}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="show_signature" type="checkbox" name="show_signature" value="1"{if $show_signature && $show_signature==1} checked="checked"{/if} /> <label for="show_signature">{#show_signature_marking#}</label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $provide_email_notification}
|
||||
<p>
|
||||
<input id="email_notification" type="checkbox" name="email_notification" value="1"{if $email_notification && $email_notification==1} checked="checked"{/if} /> <label for="email_notification">{if $id==0}{#email_notific_reply_thread#}{else}{#email_notific_reply_post#}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="email_notification" type="checkbox" name="email_notification" value="1"{if $email_notification && $email_notification==1} checked="checked"{/if} /> <label for="email_notification">{if $id==0}{#email_notific_reply_thread#}{else}{#email_notific_reply_post#}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $provide_sticky}
|
||||
<ul>
|
||||
<li><input id="sticky_none" type="radio" name="sticky" value="0"{if !$sticky or ($sticky && $sticky==0)} checked="checked"{/if} /> <label for="sticky_none">{#sticky_none#}</label></li>
|
||||
<ul id="sticky-selection">
|
||||
<li><input id="sticky_none" type="radio" name="sticky" value="0"{if !$sticky or ($sticky && $sticky==0)} checked="checked"{/if} /><label for="sticky_none">{#sticky_none#}</label></li>
|
||||
{if $categories}
|
||||
<li><input id="sticky_cat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /> <label for="sticky_cat">{#sticky_single_cat#}</label></li>
|
||||
<li><input id="sticky_all" type="radio" name="sticky" value="2"{if $sticky && $sticky==2} checked="checked"{/if} /> <label for="sticky_all">{#sticky_all_cats#}</label></li>
|
||||
<li><input id="sticky_cat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /><label for="sticky_cat">{#sticky_single_cat#}</label></li>
|
||||
<li><input id="sticky_all" type="radio" name="sticky" value="2"{if $sticky && $sticky==2} checked="checked"{/if} /><label for="sticky_all">{#sticky_all_cats#}</label></li>
|
||||
{else}
|
||||
<li><input id="sticky_nocat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /> <label for="sticky_nocat">{#sticky_thread#}</label></li>
|
||||
<li><input id="sticky_nocat" type="radio" name="sticky" value="1"{if $sticky && $sticky==1} checked="checked"{/if} /><label for="sticky_nocat">{#sticky_thread#}</label></li>
|
||||
{/if}
|
||||
</ul>
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
{if $terms_of_use_agreement}
|
||||
{assign var=terms_of_use_url value=$settings.terms_of_use_url}
|
||||
<p>
|
||||
<input id="terms_of_use_agree" tabindex="8" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
{assign var=data_privacy_statement_url value=$settings.data_privacy_statement_url}
|
||||
<p>
|
||||
<input id="data_privacy_statement_agree" tabindex="9" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_privacy_statement\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</p>
|
||||
<div>
|
||||
<input id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_privacy_statement\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
{if $captcha}
|
||||
<fieldset>
|
||||
<legend>{#captcha_marking#}</legend>
|
||||
<fieldset>
|
||||
<legend>{#captcha_marking#}</legend>
|
||||
{if $captcha.type==2}
|
||||
<p><img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" tabindex="9" /></p>
|
||||
<p><img class="captcha" src="modules/captcha/captcha_image.php?{$session.name}={$session.id}" alt="{#captcha_image_alt#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" /></p>
|
||||
{else}
|
||||
<p><label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" maxlength="5" tabindex="10" /></p>
|
||||
<div>
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" maxlength="5" />
|
||||
</div>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
<fieldset>
|
||||
<p><input type="submit" name="save_entry" value="{#message_submit_button#}" title="{#message_submit_title#}" tabindex="11" /> <input type="submit" name="preview" value="{#message_preview_button#}" title="{#message_preview_title#}" tabindex="11" /> <img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" /></p>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
<fieldset>
|
||||
<div>
|
||||
<button name="save_entry" value="{#message_submit_button#}" title="{#message_submit_title#}">{#message_submit_button#}</button>
|
||||
<button name="preview" value="{#message_preview_button#}" title="{#message_preview_title#}">{#message_preview_button#}</button>
|
||||
<img id="throbber-submit" class="js-visibility-hidden" src="{$THEMES_DIR}/{$theme}/images/throbber_submit.gif" alt="" width="16" height="16" />
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
<h1>{#delete_postings_hl#}</h1>
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p>{if $admin||$mod}{#delete_posting_replies_confirm#}{else}{#delete_posting_confirm#}{/if}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="delete_posting" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page}<input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $category}<input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<input type="submit" name="delete_posting_confirm" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_postings_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{if $admin||$mod}{#delete_posting_replies_confirm#}{else}{#delete_posting_confirm#}{/if}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="delete_posting" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page} <input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $category} <input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<div>
|
||||
<button name="delete_posting_confirm" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
<h1>{#delete_marked_hl#}</h1>
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p>{#delete_marked_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="submit" name="delete_marked_submit" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_marked_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_marked_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div>
|
||||
<button name="delete_marked_submit" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#delete_spam_hl#}</h1>
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p>{#delete_spam_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="submit" name="delete_spam_submit" value="{#delete_posting_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
<h1>{#delete_spam_hl#}</h1>
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#delete_spam_confirm#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div>
|
||||
<button name="delete_spam_submit" value="{#delete_posting_submit#}">{#delete_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#flag_ham_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 0 && $akismet_spam_check_status == 1 && $b8_spam == 0 && $b8_training_type == 1}
|
||||
{#posting_not_flagged_as_spam#}
|
||||
{else}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p>{#flag_ham_warning#}</p>
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$disp_time|date_format:#time_format#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<input type="submit" name="report_flag_ham_submit" value="{#report_flag_ham_submit#}" />
|
||||
<input type="submit" name="flag_ham_submit" value="{#flag_ham_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
<h1>{#flag_ham_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 0 && $akismet_spam_check_status == 1 && $b8_spam == 0 && $b8_training_type == 1}
|
||||
{#posting_not_flagged_as_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#flag_ham_warning#}</p>
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="{$ISO_time}">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<div class="buttonbar">
|
||||
<button name="report_flag_ham_submit" value="{#report_flag_ham_submit#}">{#report_flag_ham_submit#}</button>
|
||||
<button name="flag_ham_submit" value="{#flag_ham_submit#}">{#flag_ham_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
|
@ -1,29 +1,37 @@
|
|||
{config_load file=$language_file section="manage_postings"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
{assign var='input_days' value='</label><input type="text" name="days" value="" size="5" />'}
|
||||
<h1>{#manage_postings_hl#}</h1>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/marked.png" width="11" height="11" alt="" /> {#mark_postings#}</legend>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<p><input id="mark_mode_1" type="radio" name="mark_mode" value="1" /><label for="mark_mode_1">{$smarty.config.mark_old_threads|replace:"[days]":$input_days}<br />
|
||||
<input id="mark_mode_2" type="radio" name="mark_mode" value="2" /><label for="mark_mode_2">{#mark_all_postings#}</label><br />
|
||||
<input id="mark_mode_3" type="radio" name="mark_mode" value="3" /><label for="mark_mode_3">{#unmark_all_postings#}</label></p>
|
||||
<p><input type="submit" name="mark_submit" value="{#submit_button_ok#}" /></p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<h1>{#manage_postings_hl#}</h1>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/marked.png" width="11" height="11" alt="" /> {#mark_postings#}</legend>
|
||||
<ul>
|
||||
<li><input id="mark_mode_1" type="radio" name="mark_mode" value="1" /><label for="mark_mode_1">{$smarty.config.mark_old_threads|replace:"[days]":$input_days}</li>
|
||||
<li><input id="mark_mode_2" type="radio" name="mark_mode" value="2" /><label for="mark_mode_2">{#mark_all_postings#}</label></li>
|
||||
<li><input id="mark_mode_3" type="radio" name="mark_mode" value="3" /><label for="mark_mode_3">{#unmark_all_postings#}</label></li>
|
||||
</ul>
|
||||
<div>
|
||||
<button name="mark_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/locked.png" width="14" height="12" alt="" /> {#lock_postings#}</legend>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p><input id="lock_mode_1" type="radio" name="lock_mode" value="1" /><label for="lock_mode_1">{$smarty.config.lock_old_threads|replace:"[days]":$input_days}<br />
|
||||
<input id="lock_mode_2" type="radio" name="lock_mode" value="2" /><label for="lock_mode_2">{#lock_all_postings#}</label><br />
|
||||
<input id="lock_mode_3" type="radio" name="lock_mode" value="3" /><label for="lock_mode_3">{#unlock_all_postings#}</label></p>
|
||||
<p><input type="submit" name="lock_submit" value="{#submit_button_ok#}" /></p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<fieldset class="manage-postings">
|
||||
<legend><img src="{$THEMES_DIR}/{$theme}/images/locked.png" width="14" height="12" alt="" /> {#lock_postings#}</legend>
|
||||
<ul>
|
||||
<li><input id="lock_mode_1" type="radio" name="lock_mode" value="1" /><label for="lock_mode_1">{$smarty.config.lock_old_threads|replace:"[days]":$input_days}</li>
|
||||
<li><input id="lock_mode_2" type="radio" name="lock_mode" value="2" /><label for="lock_mode_2">{#lock_all_postings#}</label></li>
|
||||
<li><input id="lock_mode_3" type="radio" name="lock_mode" value="3" /><label for="lock_mode_3">{#unlock_all_postings#}</label></li>
|
||||
</ul>
|
||||
<div>
|
||||
<button name="lock_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
{config_load file=$language_file section="move_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{$smarty.config.$no_authorisation}</p>
|
||||
<p class="notice caution">{$smarty.config.$no_authorisation}</p>
|
||||
{else}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<h1>{#move_posting_hl#}</h1>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<h1>{#move_posting_hl#}</h1>
|
||||
{if $errors}{include file="$theme/subtemplates/errors.inc.tpl"}{/if}
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$formated_time}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="move_posting" value="{$move_posting}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="move_posting" value="{$move_posting}" />
|
||||
<input type="hidden" name="back" value="{$back}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $posting_type==0}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" />"}
|
||||
<input type="hidden" name="move_mode" value="1" />
|
||||
<p>{#move_posting#|replace:"[number]":$input_move_to}</p>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" />"}
|
||||
<input type="hidden" name="move_mode" value="1" />
|
||||
<p>{#move_posting#|replace:"[number]":$input_move_to}</p>
|
||||
{else}
|
||||
{assign var="input_move_to" value="<input type=\"text\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_1').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<p><input id="move_mode_0" type="radio" name="move_mode" value="0" checked="checked" /> <!--<label for="move_mode_0">-->{#move_posting_new_thread#}<!--</label>--><br />
|
||||
<input id="move_mode_1" type="radio" name="move_mode" value="1" /> <!--<label for="move_mode_1">-->{#move_posting#|replace:"[number]":$input_move_to}<!--</label>--></p>
|
||||
{assign var="input_move_to" value="<input type=\"number\" inputmode=\"decimal\" name=\"move_to\" value=\"\" size=\"5\" onclick=\"document.getElementById('move_mode_0').checked=false; document.getElementById('move_mode_1').checked='checked'; \" />"}
|
||||
<ul>
|
||||
<li><input id="move_mode_0" type="radio" name="move_mode" value="0" checked="checked" /> <label for="move_mode_0">{#move_posting_new_thread#}</label></li>
|
||||
<li><input id="move_mode_1" type="radio" name="move_mode" value="1" /> <label for="move_mode_1">{#move_posting#|replace:"[number]":$input_move_to}</label></li>
|
||||
</ul>
|
||||
{/if}
|
||||
<p><input type="submit" name="move_posting_submit" value="{#move_posting_submit#}" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div>
|
||||
<button name="move_posting_submit" value="{#move_posting_submit#}">{#move_posting_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
{config_load file=$language_file section="delete_posting"}
|
||||
{if $no_authorisation}
|
||||
<p class="caution">{#no_authorisation#}</p>
|
||||
<p class="notice caution">{#no_authorisation#}</p>
|
||||
{else}
|
||||
<h1>{#report_spam_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 1 && $akismet_spam_check_status == 1 && $b8_spam == 1 && $b8_training_type == 2}
|
||||
{#posting_already_spam#}
|
||||
{else}
|
||||
<p class="caution">{#caution#}</p>
|
||||
<p>{#report_spam_warning#}</p>
|
||||
<p>{if $akismet_spam_check_status==2}{#spamcheck_akismet_timeout_error#}{/if}</p>
|
||||
<p>{if $akismet_spam_check_status==3}{#spamcheck_akismet_api_error#}{/if}</p>
|
||||
|
||||
<p><strong>{$subject}</strong> - <strong>{$name}</strong>, {$disp_time|date_format:#time_format#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back}<input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page}<input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $order}<input type="hidden" name="order" value="{$order}" />{/if}
|
||||
{if $descasc}<input type="hidden" name="descasc" value="{$descasc}" />{/if}
|
||||
{if $category}<input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<input type="submit" name="report_spam_delete_submit" value="{#report_spam_delete_submit#}" />
|
||||
<input type="submit" name="report_spam_submit" value="{#report_spam_submit#}" />
|
||||
<input type="submit" name="delete_submit" value="{#delete_only_submit#}" />
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
<h1>{#report_spam_hl#}</h1>
|
||||
{if !$id}
|
||||
{#postings_doesnt_exist#}
|
||||
{elseif $akismet_spam == 1 && $akismet_spam_check_status == 1 && $b8_spam == 1 && $b8_training_type == 2}
|
||||
{#posting_already_spam#}
|
||||
{else}
|
||||
<p class="notice caution">{#caution#}</p>
|
||||
<p>{#report_spam_warning#}</p>
|
||||
{if $akismet_spam_check_status==2} <p>{#spamcheck_akismet_timeout_error#}</p>{/if}
|
||||
{if $akismet_spam_check_status==3} <p>{#spamcheck_akismet_api_error#}</p>{/if}
|
||||
|
||||
<p><span class="subject">{$subject}</span> - <span class="metadata"><span class="author-name">{$name}</span>, <span class="tail"><time datetime="{$ISO_time}">{$formated_time}</time></span></span></p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="posting" />
|
||||
<input type="hidden" name="id" value="{$id}" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $back} <input type="hidden" name="back" value="{$back}" />{/if}
|
||||
{if $page} <input type="hidden" name="page" value="{$page}" />{/if}
|
||||
{if $order} <input type="hidden" name="order" value="{$order}" />{/if}
|
||||
{if $descasc} <input type="hidden" name="descasc" value="{$descasc}" />{/if}
|
||||
{if $category} <input type="hidden" name="category" value="{$category}" />{/if}
|
||||
<div class="buttonbar">
|
||||
<button name="report_spam_delete_submit" value="{#report_spam_delete_submit#}">{#report_spam_delete_submit#}</button>
|
||||
<button name="report_spam_submit" value="{#report_spam_submit#}">{#report_spam_submit#}</button>
|
||||
<button name="delete_submit" value="{#delete_only_submit#}">{#delete_only_submit#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
<p>{#unsubscribed_message#}</p>
|
||||
{else}
|
||||
<h2>{#unsubscribe_error_hl#}</h2>
|
||||
<p class="caution">{#unsubscribe_error_message#}</p>
|
||||
<p class="notice caution">{#unsubscribe_error_message#}</p>
|
||||
{/if}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{config_load file=$language_file section="register"}
|
||||
{if $captcha}{config_load file=$language_file section="captcha"}{/if}
|
||||
<p class="normal">{#register_exp#}</p>
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -10,46 +9,69 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="mode" value="register" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $captcha}<input type="hidden" name="{$captcha.session_name}" value="{$captcha.session_id}" />{/if}
|
||||
<div id="card">
|
||||
<p>{#register_exp#}</p>
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="register" />
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
{if $captcha} <input type="hidden" name="{$captcha.session_name}" value="{$captcha.session_id}" />{/if}
|
||||
|
||||
<p><label for="new_user_name" class="main">{#register_username#}</label><br />
|
||||
<input id="new_user_name" class="login" type="text" size="30" name="{$fld_user_name}" value="{$new_user_name|default:''}" maxlength="{$settings.username_maxlength}" tabindex="1" /></p>
|
||||
<div>
|
||||
<label for="new_user_name" class="main">{#register_username#}</label>
|
||||
<input id="new_user_name" class="login" type="text" size="30" name="{$fld_user_name}" value="{$new_user_name|default:''}" maxlength="{$settings.username_maxlength}" autofocus required />
|
||||
</div>
|
||||
|
||||
<p><label for="reg_pw" class="main">{#register_pw#}</label><br />
|
||||
<input id="reg_pw" class="login" type="password" size="30" name="{$fld_pword}" maxlength="255" tabindex="2" /></p>
|
||||
<div>
|
||||
<label for="reg_pw" class="main">{#register_pw#}</label>
|
||||
<input id="reg_pw" class="login" type="password" spellcheck="false" autocomplete="off" writingsuggestions="false" size="30" name="{$fld_pword}" maxlength="255" required />
|
||||
</div>
|
||||
|
||||
<p class="hp"><label for="phone" class="main">{#register_honeypot_field#}</label><br />
|
||||
<input id="phone" class="login" type="text" size="30" name="{$fld_phone}" value="{$honey_pot_phone|default:''}" maxlength="35" tabindex="-1" /></p>
|
||||
<div class="hp">
|
||||
<label for="phone" class="main">{#register_honeypot_field#}</label>
|
||||
<input id="phone" class="login" type="tel" size="30" name="{$fld_phone}" value="{$honey_pot_phone|default:''}" maxlength="35" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
<p><label for="new_user_email" class="main">{#register_user_email#}</label><br />
|
||||
<input id="new_user_email" class="login" type="text" size="30" name="{$fld_user_email}" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="3" /></p>
|
||||
<div>
|
||||
<label for="new_user_email" class="main">{#register_user_email#}</label>
|
||||
<input id="new_user_email" class="login" type="email" size="30" name="{$fld_user_email}" value="{$new_user_email|default:''}" maxlength="{$settings.email_maxlength}" required />
|
||||
</div>
|
||||
|
||||
<p class="hp"><label for="repeat_email" class="main">{#register_honeypot_field#}</label><br />
|
||||
<input id="repeat_email" class="login" type="text" size="30" name="{$fld_repeat_email}" value="{$honey_pot_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="-1" /></p>
|
||||
<div class="hp">
|
||||
<label for="repeat_email" class="main">{#register_honeypot_field#}</label>
|
||||
<input id="repeat_email" class="login" type="email" size="30" name="{$fld_repeat_email}" value="{$honey_pot_email|default:''}" maxlength="{$settings.email_maxlength}" tabindex="-1" />
|
||||
</div>
|
||||
|
||||
{if $terms_of_use_agreement}
|
||||
{assign var=terms_of_use_url value=$settings.terms_of_use_url}
|
||||
<p><input tabindex="4" id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label></p>
|
||||
<div>
|
||||
<input id="terms_of_use_agree" type="checkbox" name="terms_of_use_agree" value="1"{if $terms_of_use_agree && $terms_of_use_agree==1} checked="checked"{/if} /> <label for="terms_of_use_agree">{if $terms_of_use_url}{#terms_of_use_agreement#|replace:"[[":"<a id=\"terms_of_use\" href=\"$terms_of_use_url\">"|replace:"]]":"</a>"}{else}{#terms_of_use_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $data_privacy_agreement}
|
||||
{assign var=data_privacy_statement_url value=$settings.data_privacy_statement_url}
|
||||
<p><input tabindex="5" id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_priv_declaration\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label></p>
|
||||
<div>
|
||||
<input id="data_privacy_statement_agree" type="checkbox" name="data_privacy_statement_agree" value="1"{if $data_privacy_statement_agree && $data_privacy_statement_agree==1} checked="checked"{/if} /> <label for="data_privacy_statement_agree">{if $data_privacy_statement_url}{#data_privacy_agreement#|replace:"[[":"<a id=\"data_priv_declaration\" href=\"$data_privacy_statement_url\">"|replace:"]]":"</a>"}{else}{#data_privacy_agreement#|replace:"[[":""|replace:"]]":""}{/if}</label>
|
||||
</div>
|
||||
{/if}
|
||||
{if $captcha}
|
||||
{if $captcha.type==2}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$captcha.session_name}={$captcha.session_id}" alt="{#captcha_image_alt_reg#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label><br />
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" tabindex="6" /></p>
|
||||
<div>
|
||||
<strong class="label-like">{#captcha_marking#}</span><br />
|
||||
<img class="captcha" src="modules/captcha/captcha_image.php?{$captcha.session_name}={$captcha.session_id}" alt="{#captcha_image_alt_reg#}" width="180" height="40" /><br />
|
||||
<label for="captcha_code">{#captcha_expl_image#}</label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="10" required />
|
||||
</div>
|
||||
{else}
|
||||
<p><strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label><input id="captcha_code" type="text" name="captcha_code" value="" size="5" tabindex="7" /></p>
|
||||
<div>
|
||||
<strong>{#captcha_marking#}</strong><br />
|
||||
<label for="captcha_code">{#captcha_expl_math#} {$captcha.number_1} + {$captcha.number_2} = </label>
|
||||
<input id="captcha_code" type="text" name="captcha_code" value="" size="5" required />
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
<p><input type="submit" name="register_submit" value="{#submit_button_ok#}" tabindex="8" /></p>
|
||||
</div>
|
||||
</form>
|
||||
<div class="buttonbar">
|
||||
<button name="register_submit" value="{#submit_button_ok#}">{#submit_button_ok#}</button>
|
||||
<p><a href="index.php?mode=login">{#register_link_to_login#}</a></p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
|
@ -1,26 +1,46 @@
|
|||
{if !$list_spam}
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<div style="margin-bottom:20px;">
|
||||
<input type="hidden" name="mode" value="search" />
|
||||
<input type="text" name="search" value="{$search|default:""}" size="30" />
|
||||
<input type="hidden" name="mode" value="search" />
|
||||
<div>
|
||||
<label for="search_term">{#search_term#}</label>
|
||||
<input type="search" name="search" id="searchterm" value="{$search|default:""}" size="30" />
|
||||
</div>
|
||||
{if $categories}
|
||||
<select size="1" name="p_category">
|
||||
<option value="0"{if $category==0} selected="selected"{/if}>{#all_categories#}</option>
|
||||
<div>
|
||||
<label for="search-category">{#search_category#}</label>
|
||||
<select size="1" name="p_category" id="search-category">
|
||||
<option value="0"{if $category==0} selected="selected"{/if}>{#all_categories#}</option>
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{if $key!=0} <option value="{$key}"{if $key==$p_category} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
{/if}
|
||||
<input type="submit" name="search_submit" value="{#search_submit_button#}" />{if $settings.tags>0}<br />
|
||||
<span class="small"><input id="searchfulltext" type="radio" name="method" value="0"{if $method == 'fulltext'} checked="checked"{/if} /><label for="searchfulltext">{#search_fulltext#}</label> <input id="searchtags" type="radio" class="search-radio" name="method" value="tags"{if $method == 'tags'} checked="checked"{/if} /><label for="searchtags">{#search_tags#}</label></span>{/if}
|
||||
</div></form>
|
||||
</select>
|
||||
</div>{/if}
|
||||
{if $settings.tags>0}
|
||||
<ul>
|
||||
<li><input id="searchfulltext" type="radio" name="method" value="0"{if $method == 'fulltext'} checked="checked"{/if} /><label for="searchfulltext">{#search_fulltext#}</label></li>
|
||||
<li><input id="searchtags" type="radio" class="search-radio" name="method" value="tags"{if $method == 'tags'} checked="checked"{/if} /><label for="searchtags">{#search_tags#}</label></li>
|
||||
</ul>{/if}
|
||||
<div>
|
||||
<button name="search_submit" value="{#search_submit_button#}">{#search_submit_button#}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{if $search || $list_spam}
|
||||
{if $search_results}
|
||||
<p>{if $search_results_count>1}{$smarty.config.several_postings_found|replace:"[number]":$search_results_count}{else}{#one_posting_found#}{/if}</p>
|
||||
<ul class="searchresults">
|
||||
{section name=result loop=$search_results}
|
||||
<li><a class="{if $search_results[result].pid==0}thread-search{else}reply-search{/if}{if $search_results[result].is_read} read{/if}" href="index.php?id={$search_results[result].id}">{$search_results[result].subject}</a>{if $search_results[result].no_text} <img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if} - <strong>{$search_results[result].name}</strong>, <span id="p{$search_results[result].id}" class="tail">{$search_results[result].formated_time} <a href="index.php?mode=thread&id={$search_results[result].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a> {if $search_results[result].category}<a href="index.php?mode=index&category={$search_results[result].category}"><span class="category">({$search_results[result].category_name})</span></a>{/if}</span></li>
|
||||
<li><a class="subject {if $search_results[result].pid==0}thread-search{else}reply-search{/if}{if $search_results[result].is_read} read{/if}" href="index.php?id={$search_results[result].id}">{$search_results[result].subject}</a>
|
||||
<span class="metadata">
|
||||
<span class="author-name">{$search_results[result].name}</span>
|
||||
<span id="p{$search_results[result].id}" class="tail">
|
||||
{$search_results[result].formated_time}
|
||||
{if $search_results[result].no_text}<img class="no-text" src="{$THEMES_DIR}/{$theme}/images/no_text.png" title="{#no_text_title#}" alt="{#no_text_alt#}" width="11" height="9" />{/if}
|
||||
<a href="index.php?mode=thread&id={$search_results[result].id}" title="{#open_whole_thread#}"><img src="{$THEMES_DIR}/{$theme}/images/complete_thread.png" alt="{#open_whole_thread#}" width="11" height="11" /></a>
|
||||
{if $search_results[result].category}<a href="index.php?mode=index&category={$search_results[result].category}"><span class="category">({$search_results[result].category_name})</span></a>{/if}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
{/section}
|
||||
</ul>
|
||||
{if $page_browse && $page_browse.total_items > $page_browse.items_per_page}
|
||||
|
|
|
@ -20,29 +20,30 @@
|
|||
{if $data.$element.user_type==2}
|
||||
{assign var=admin_name value=$data.$element.name}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{elseif $data.$element.user_type==1}
|
||||
{assign var=mod_name value=$data.$element.name}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{elseif $data.$element.user_id>0}
|
||||
{assign var=user_name value=$data.$element.name}
|
||||
{assign var=name value="<span class=\"registered_user\">$user_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$user_name</span>"}
|
||||
{else}
|
||||
{assign var=name value=$data.$element.name}
|
||||
{assign var=visitor_name value=$data.$element.name}
|
||||
{assign var=name value="<span class=\"author-name\">$visitor_name</span>"}
|
||||
{/if}
|
||||
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) && $data.$element.user_id>0}
|
||||
{assign var=posting_user_id value=$data.$element.user_id}
|
||||
{assign var=name value="<a href=\"index.php?mode=user&show_user=$posting_user_id\">$name</a>"}
|
||||
{/if}
|
||||
<div class="thread-posting{if $data.$element.new} new{/if}{if $data.$element.is_read} read{/if}" id="p{$data.$element.id}">
|
||||
<div class="header">
|
||||
<article class="thread-posting{if $data.$element.new} new{/if}{if $data.$element.is_read} read{/if}" id="p{$data.$element.id}">
|
||||
<header class="header">
|
||||
{if $data.$element.avatar}<img id="avatar-{$data.$element.id}" class="avatar" src="{$data.$element.avatar.image}" alt="{#avatar_img_alt#}" width="{$data.$element.avatar.width}" height="{$data.$element.avatar.height}" />{/if}
|
||||
<h{if $data.$element.pid==0}1{else}2{/if} id="headline-{$data.$element.id}">{$data.$element.subject}{if $data.$element.pid==0 && $category_name} <span class="category">({$category_name})</span>{/if}</h{if $data.$element.pid==0}1{else}2{/if}>
|
||||
<p class="author">{if $data.$element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$data.$element.location|replace:"[time]":$data.$element.formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$data.$element.formated_time}{/if} <span class="ago">({if $data.$element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$data.$element.ago.days_rounded}{else}{if $data.$element.ago.days==0 && $data.$element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$data.$element.ago.minutes}{elseif $data.$element.ago.days==0 && $data.$element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{/if}{/if})</span>{if $admin && $data.$element.ip} <span class="ip">({$data.$element.ip})</span>{/if}{if $data.$element.pid!=0}{assign var="parent_posting" value=$data.$element.pid} <span class="op-link"><a href="#p{$data.$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}{if $data.$element.edited}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$data.$element.edited_by|replace:"[time]":$data.$element.formated_edit_time}</span>{/if}</p>
|
||||
</div>
|
||||
<p class="author">{if $data.$element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$data.$element.location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$data.$element.ISO_time}">{$data.$element.formated_time}</time> <span class="ago">({if $data.$element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$data.$element.ago.days_rounded}{else}{if $data.$element.ago.days==0 && $data.$element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$data.$element.ago.minutes}{elseif $data.$element.ago.days==0 && $data.$element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$data.$element.ago.hours|replace:"[minutes]":$data.$element.ago.minutes}{/if}{/if})</span>{if $admin && $data.$element.ip} <span class="ip">({$data.$element.ip})</span>{/if}{if $data.$element.pid!=0}{assign var="parent_posting" value=$data.$element.pid} <span class="op-link"><a href="#p{$data.$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}
|
||||
{if $data.$element.edited}<br /><span class="edited">{#edited_by#|replace:"[name]":$data.$element.edited_by}<time datetime="{$data.$element.ISO_edit_time}">{$data.$element.formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper" id="posting-{$data.$element.id}">
|
||||
<div class="body">
|
||||
{if $data.$element.posting}
|
||||
|
@ -50,19 +51,19 @@
|
|||
{else}
|
||||
<p>{#no_text#}</p>
|
||||
{/if}
|
||||
</div>
|
||||
{if $data.$element.signature}
|
||||
<p class="signature">--<br />
|
||||
{$data.$element.signature}</p>
|
||||
<div class="signature"><p>--<br />
|
||||
{$data.$element.signature}</p></div>
|
||||
{/if}
|
||||
{if $data.$element.tags}
|
||||
<p class="tags">{#tags_marking#}<br />
|
||||
{foreach name="tags" from=$data.$element.tags item=tag}<a href="index.php?mode=search&search={$tag.escaped}&method=tags">{$tag.display}</a>{if !$smarty.foreach.tags.last}, {/if}{/foreach}</p>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="posting-footer">
|
||||
<footer class="posting-footer">
|
||||
<div class="reply">{if $data.$element.locked==0}<a class="stronglink" href="index.php?mode=posting&id={$data.$element.id}&back=thread" title="{#reply_link_title#}">{#reply_link#}</a>{else}<span class="locked">{#posting_locked#}</span>{/if}</div>
|
||||
<div class="info">
|
||||
{if $data.$element.views}<span class="views">{if $data.$element.views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$data.$element.views}{/if}</span>{/if}
|
||||
{if $data.$element.views}<div class="views">{if $data.$element.views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$data.$element.views}{/if}</div>{/if}
|
||||
{if $data.$element.options}
|
||||
<ul class="options">
|
||||
<li><a href="#top" class="go-to-top-link" title="{#back_to_top_link_title#}">{#back_to_top_link#}</a></li>
|
||||
|
@ -78,10 +79,8 @@
|
|||
<li><a href="index.php?mode=posting&unlock_thread={$data.$element.id}&back=thread" class="lock-thread" title="{#unlock_thread_linktitle#}">{#unlock_thread_linkname#}</a></li>{/if}{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
{if is_array($child_array[$element])}
|
||||
{foreach from=$child_array[$element] item=child}{tree element=$child level=$level+1}{/foreach}
|
||||
{/if}
|
||||
|
|
|
@ -20,29 +20,30 @@
|
|||
{if $element.user_type==2}
|
||||
{assign var=admin_name value=$element.name}
|
||||
{assign var=admin_title value=$smarty.config.administrator_title}
|
||||
{assign var=name value="<span class=\"admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name admin registered_user\" title=\"$admin_title\">$admin_name</span>"}
|
||||
{elseif $element.user_type==1}
|
||||
{assign var=mod_name value=$element.name}
|
||||
{assign var=mod_title value=$smarty.config.moderator_title}
|
||||
{assign var=name value="<span class=\"mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name mod registered_user\" title=\"$mod_title\">$mod_name</span>"}
|
||||
{elseif $element.user_id>0}
|
||||
{assign var=user_name value=$element.name}
|
||||
{assign var=name value="<span class=\"registered_user\">$user_name</span>"}
|
||||
{assign var=name value="<span class=\"author-name registered_user\">$user_name</span>"}
|
||||
{else}
|
||||
{assign var=name value=$element.name}
|
||||
{assign var=visitor_name value=$element.name}
|
||||
{assign var=name value="<span class=\"author-name\">$visitor_name</span>"}
|
||||
{/if}
|
||||
|
||||
{if (($settings.user_area_access == 0 and ($admin or $mod)) or ($settings.user_area_access == 1 and $user) or $settings.user_area_access == 2) &&$element.user_id>0}
|
||||
{assign var=posting_user_id value=$element.user_id}
|
||||
{assign var=name value="<a href=\"index.php?mode=user&show_user=$posting_user_id\">$name</a>"}
|
||||
{/if}
|
||||
<div class="thread-posting{if $element.new} new{/if}{if $element.is_read} read{/if}" id="p{$element.id}">
|
||||
<div class="header">
|
||||
<article class="thread-posting{if $element.new} new{/if}{if $element.is_read} read{/if}" id="p{$element.id}">
|
||||
<header class="header">
|
||||
{if $element.avatar}<img id="avatar-{$element.id}" class="avatar" src="{$element.avatar.image}" alt="{#avatar_img_alt#}" width="{$element.avatar.width}" height="{$element.avatar.height}" />{/if}
|
||||
<h{if $element.pid==0}1{else}2{/if} id="headline-{$element.id}">{$element.subject}{if $element.pid==0 && $category_name} <span class="category">({$category_name})</span>{/if}</h{if $element.pid==0}1{else}2{/if}>
|
||||
<p class="author">{if $element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$element.location|replace:"[time]":$element.formated_time}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[time]":$element.formated_time}{/if} <span class="ago">({if $element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$element.ago.days_rounded}{else}{if $element.ago.days==0 && $element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$element.ago.minutes}{elseif $element.ago.days==0 && $element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{/if}{/if})</span>{if $admin && $element.ip} <span class="ip">({$element.ip})</span>{/if}{if $element.pid!=0}{assign var="parent_posting" value=$element.pid} <span class="op-link"><a href="#p{$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}{if $element.edited}<br />
|
||||
<span class="edited">{#edited_by#|replace:"[name]":$element.edited_by|replace:"[time]":$element.formated_edit_time}</span>{/if}</p>
|
||||
</div>
|
||||
<p class="author">{if $element.location}{#posted_by_location#|replace:"[name]":$name|replace:"[email_hp]":$email_hp|replace:"[location]":$element.location}{else}{#posted_by#|replace:"[name]":$name|replace:"[email_hp]":$email_hp}{/if}<time datetime="{$element.ISO_time}">{$element.formated_time}</time> <span class="ago">({if $element.ago.days>1}{#posting_several_days_ago#|replace:"[days]":$element.ago.days_rounded}{else}{if $element.ago.days==0 && $element.ago.hours==0}{#posting_minutes_ago#|replace:"[minutes]":$element.ago.minutes}{elseif $element.ago.days==0 && $element.ago.hours!=0}{#posting_hours_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{else}{#posting_one_day_ago#|replace:"[hours]":$element.ago.hours|replace:"[minutes]":$element.ago.minutes}{/if}{/if})</span>{if $admin && $element.ip} <span class="ip">({$element.ip})</span>{/if}{if $element.pid!=0}{assign var="parent_posting" value=$element.pid} <span class="op-link"><a href="#p{$element.pid}" title="{#original_posting_linktitle#|replace:"[name]":$data.$parent_posting.name}">@ {$data.$parent_posting.name}</a></span>{/if}
|
||||
{if $element.edited}<br /><span class="edited">{#edited_by#|replace:"[name]":$element.edited_by}<time datetime="{$element.ISO_edit_time}">{$element.formated_edit_time}</time></span>{/if}</p>
|
||||
</header>
|
||||
<div class="wrapper" id="posting-{$element.id}">
|
||||
<div class="body">
|
||||
{if $element.posting}
|
||||
|
@ -50,19 +51,19 @@
|
|||
{else}
|
||||
<p>{#no_text#}</p>
|
||||
{/if}
|
||||
</div>
|
||||
{if $element.signature}
|
||||
<p class="signature">--<br />
|
||||
{$element.signature}</p>
|
||||
<div class="signature"><p>--<br />
|
||||
{$element.signature}</p></div>
|
||||
{/if}
|
||||
{if $element.tags}
|
||||
<p class="tags">{#tags_marking#}<br />
|
||||
{foreach name="tags" from=$element.tags item=tag}<a href="index.php?mode=search&search={$tag.escaped}&method=tags">{$tag.display}</a>{if !$smarty.foreach.tags.last}, {/if}{/foreach}</p>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="posting-footer">
|
||||
<footer class="posting-footer">
|
||||
<div class="reply">{if $element.locked==0}<a class="stronglink" href="index.php?mode=posting&id={$element.id}&back=thread" title="{#reply_link_title#}">{#reply_link#}</a>{else}<span class="locked">{#posting_locked#}</span>{/if}</div>
|
||||
<div class="info">
|
||||
{if $element.views}<span class="views">{if $element.views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$element.views}{/if}</span>{/if}
|
||||
{if $element.views}<div class="views">{if $element.views==1}{#one_view#}{else}{#several_views#|replace:"[views]":$element.views}{/if}</div>{/if}
|
||||
{if $element.options}
|
||||
<ul class="options">
|
||||
<li><a href="#top" class="go-to-top-link" title="{#back_to_top_link_title#}">{#back_to_top_link#}</a></li>
|
||||
|
@ -78,10 +79,8 @@
|
|||
<li><a href="index.php?mode=posting&unlock_thread={$element.id}&back=thread" class="lock-thread" title="{#unlock_thread_linktitle#}">{#unlock_thread_linkname#}</a></li>{/if}{/if}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
{/foreach}
|
||||
</div>
|
||||
{if $settings.rss_feed==1}<div class="complete-thread">
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
{config_load file=$language_file section="user"}
|
||||
<div id="usernav">
|
||||
<h2 id="admin_header">{#user_list_header#}</h2>
|
||||
<div id="usersearch">
|
||||
<label for="search-user">{#search_user#}</label><form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<form action="index.php" method="get" accept-charset="{#charset#}">
|
||||
<input type="hidden" name="mode" value="user" />
|
||||
<input id="search-user" type="text" name="search_user" value="{if $search_user}{$search_user}{else}{#search_user_default_value#}{/if}" size="25" alt="{#search_user_default_value#}" />{* <input type="image" src="{$THEMES_DIR}/{$theme}/images/submit.png" alt="[»]" />*}
|
||||
<div>
|
||||
<label for="search-user">{#search_user#}</label>
|
||||
<input id="search-user" type="search" name="search_user" value="{if $search_user}{$search_user}{/if}" placeholder="{#search_user_default_value#}" size="35" />
|
||||
<button>{#go#}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="userpagination">
|
||||
{if $pagination}
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
|
@ -17,14 +18,11 @@
|
|||
{/foreach}
|
||||
{if $pagination.next}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}&page={$pagination.next}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#next_page_link_title#}">{#next_page_link#}</a></li>{/if}
|
||||
</ul>
|
||||
{else}
|
||||
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $total_users > 0}
|
||||
<table class="normaltab" border="0" cellpadding="5" cellspacing="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=user_name&descasc={if $descasc=="ASC" && $order=="user_name"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#user_name#}</a>{if $order=="user_name" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="user_name" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>
|
||||
<th><a href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=user_type&descasc={if $descasc=="ASC" && $order=="user_type"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#user_type#}</a>{if $order=="user_type" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="user_type" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>
|
||||
|
@ -34,22 +32,25 @@
|
|||
{*{if $settings.count_users_online>0}<th><a href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=online&descasc={if $descasc=="ASC" && $order=="online"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#user_online#}</a>{if $order=="online" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="online" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>{/if}*}
|
||||
{if $mod || $admin}<th><a href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&order=user_lock&descasc={if $descasc=="ASC" && $order=="user_lock"}DESC{else}ASC{/if}&ul={$ul}" title="{#order_linktitle#}">{#user_blockage#}</a>{if $order=="user_lock" && $descasc=="ASC"} <img src="{$THEMES_DIR}/{$theme}/images/asc.png" alt="[asc]" width="5" height="9" />{elseif $order=="user_lock" && $descasc=="DESC"} <img src="{$THEMES_DIR}/{$theme}/images/desc.png" alt="[desc]" width="5" height="9" />{/if}</th>{/if}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$userdata item=row}
|
||||
{cycle values="a,b" assign=c}
|
||||
<tr class="{$c}">
|
||||
<td><a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}"><strong>{$row.user_name}</strong></a></td>
|
||||
<td><a href="index.php?mode=user&show_user={$row.user_id}" title="{#show_userdata_linktitle#|replace:"[user]":$row.user_name}"><span class="author-name">{$row.user_name}</span></a></td>
|
||||
<td><span class="small">{if $row.user_type==2}{#admin#}{elseif $row.user_type==1}{#mod#}{else}{#user#}{/if}</span></td>
|
||||
<td><span class="small">{if $row.user_hp!=''}<a href="{$row.user_hp}" title="{$row.user_hp}"><img src="{$THEMES_DIR}/{$theme}/images/homepage.png" alt="{#homepage#}" width="13" height="13" /></a>{else} {/if}</span></td>
|
||||
<td><span class="small">{if $row.user_email}<a href="index.php?mode=contact&user_id={$row.user_id}" title="{#mailto_user#|replace:"[user]":$row.user_name}"><img src="{$THEMES_DIR}/{$theme}/images/email.png" alt="{#email#}" width="13" height="10" /></a>{else} {/if}</span></td>
|
||||
<td><span class="small">{if $row.user_email}<a href="index.php?mode=contact&recipient_user_id={$row.user_id}" title="{#mailto_user#|replace:"[user]":$row.user_name}"><img src="{$THEMES_DIR}/{$theme}/images/email.png" alt="{#email#}" width="13" height="10" /></a>{else} {/if}</span></td>
|
||||
{*<td><span class="small">{if $row.postings>0}<a href="index.php?mode=user&action=show_posts&id={$row.user_id}">{$row.postings}</a>{else}{$row.postings}{/if}</span></td>*}
|
||||
{*{if $settings.count_users_online>0}<td class="{$c}"><span class="small">{if $row.online}<span style="color:red;">{#online#}</span>{else} {/if}</span></td>{/if}*}
|
||||
{if $mod || $admin}<td><span class="small">{if $row.user_type>0}{if $row.user_lock==0}{#unlocked#}{else}{#locked#}{/if}{elseif $row.user_lock==0}<a href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&user_lock={$row.user_id}&page={$page}&order={$order}&descasc={$descasc}" title="{#lock_title#}">{#unlocked#}</a>{else}<a class="user-locked" href="index.php?mode=user{if $search_user_encoded}&search_user={$search_user_encoded}{/if}&user_lock={$row.user_id}&page={$page}&order={$order}&descasc={$descasc}" title="{#unlock_title#}">{#user_locked#}</a>{/if}</span></td>{/if}
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{if $pagination}
|
||||
<ul class="pagination pagination-index-table">
|
||||
<ul class="pagination">
|
||||
{if $pagination.previous}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $pagination.previous>1}&page={$pagination.previous}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}" title="{#previous_page_link_title#}">{#previous_page_link#}</a></li>{/if}
|
||||
{foreach from=$pagination.items item=item}
|
||||
{if $item==0}<li>…</li>{elseif $item==$pagination.current}<li><span class="current">{$item}</span></li>{else}<li><a href="index.php?mode={$mode}{if $action}&action={$action}{/if}{if $search_user_encoded}&search_user={$search_user_encoded}{/if}{if $method && $method!='fulltext'}&method={$method}{/if}{if $id}&id={$id}{/if}{if $item>1}&page={$item}{/if}{if $p_category && $p_category>0}&p_category={$p_category}{/if}{if $order}&order={$order}{/if}{if $descasc}&descasc={$descasc}{/if}">{$item}</a></li>{/if}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{config_load file=$language_file section="user_edit"}
|
||||
{if $errors}
|
||||
<p class="caution">{#error_headline#}</p>
|
||||
<p class="notice caution">{#error_headline#}</p>
|
||||
<ul>
|
||||
{section name=mysec loop=$errors}
|
||||
{assign var="error" value=$errors[mysec]}
|
||||
|
@ -8,7 +8,7 @@
|
|||
{/section}
|
||||
</ul>
|
||||
{/if}
|
||||
{if $msg}<p class="ok">{$smarty.config.$msg}</p>{/if}
|
||||
{if $msg}<p class="notice ok">{$smarty.config.$msg}</p>{/if}
|
||||
<form action="index.php" method="post" accept-charset="{#charset#}">
|
||||
<div>
|
||||
<input type="hidden" name="csrf_token" value="{$CSRF_TOKEN}" />
|
||||
|
@ -44,7 +44,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_hp"><strong>{#edit_user_hp#}</strong></label></td>
|
||||
<td class="d"><input id="user_hp" type="text" size="40" name="user_hp" value="{$user_hp}" maxlength="{$settings.hp_maxlength}" /></td>
|
||||
<td class="d"><input id="user_hp" type="url" size="40" name="user_hp" value="{$user_hp}" maxlength="{$settings.hp_maxlength}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_real_name"><strong>{#edit_user_real_name#}</strong></label></td>
|
||||
|
@ -59,7 +59,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_birthday"><strong>{#edit_user_birthday#}</strong></label></td>
|
||||
<td class="d"><input id="user_birthday" type="text" size="40" name="user_birthday" value="{$user_birthday}" /> <span class="small">({#birthday_format#})</span></td>
|
||||
<td class="d"><input id="user_birthday" type="date" size="40" name="user_birthday" value="{$user_birthday}" /> <span class="small">({#birthday_format#})</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="c"><label for="user_location"><strong>{#edit_user_location#}</strong></label></td>
|
||||
|
@ -77,11 +77,6 @@
|
|||
<tr>
|
||||
<td class="c"><strong>{#edit_user_cat_selection#}</strong></td>
|
||||
<td class="d">
|
||||
{*<select id="category_selection" name="category_selection[]" multiple="multiple" size="{if $number_of_categories>10}10{else}{$number_of_categories}{/if}">
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<option value="{$key}"{if isset($category_selection) && in_array($key,$category_selection)} selected="selected"{/if}>{$val}</option>{/if}
|
||||
{/foreach}
|
||||
</select>*}
|
||||
<ul class="checkboxlist">
|
||||
{foreach key=key item=val from=$categories}
|
||||
{if $key!=0}<li><input id="category_{$key}" type="checkbox" name="category_selection[]" value="{$key}"{if isset($category_selection) && in_array($key,$category_selection)} checked="checked"{/if} /><label for="category_{$key}">{$val}</label></li>{/if}
|
||||
|
|