Compare commits
1592 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4996846126 | ||
|
|
b5e680ef0f | ||
|
|
140ac8761d | ||
|
|
b634c3cad8 | ||
|
|
dadf57fd55 | ||
|
|
eaa878645b | ||
|
|
b76bdcab13 | ||
|
|
2d7eeae515 | ||
|
|
9a89bf3a1b | ||
|
|
1b4006b9a3 | ||
|
|
1c88afc176 | ||
|
|
6854ff7407 | ||
|
|
e0c9908a2b | ||
|
|
9ccf4b81e9 | ||
|
|
ecc95254f1 | ||
|
|
812dfa0298 | ||
|
|
3002126d44 | ||
|
|
68cf9864c6 | ||
|
|
286bd55424 | ||
|
|
552ceb2e49 | ||
|
|
807e06f8a6 | ||
|
|
46a9e89db2 | ||
|
|
ccd7e27410 | ||
|
|
e34de96b5d | ||
|
|
2069837ffc | ||
|
|
44358e503a | ||
|
|
446b76dbbb | ||
|
|
e7419198dd | ||
|
|
46e7d5c334 | ||
|
|
791fc8920b | ||
|
|
6711688b73 | ||
|
|
9d9e0960c5 | ||
|
|
68b243f4ff | ||
|
|
0643475b20 | ||
|
|
71c66c4cdd | ||
|
|
61f943a895 | ||
|
|
d2fba40472 | ||
|
|
38ad62d4b7 | ||
|
|
5f77867c36 | ||
|
|
2044fc8e72 | ||
|
|
8fdc620197 | ||
|
|
38a8b4410f | ||
|
|
9f374290ad | ||
|
|
bca0afa86d | ||
|
|
d0a74065c0 | ||
|
|
158e3e6954 | ||
|
|
478766994b | ||
|
|
46da9a8b47 | ||
|
|
6306d6a18b | ||
|
|
ed54e3ef0c | ||
|
|
9eb415b79c | ||
|
|
d02e6c36c1 | ||
|
|
11326bce1a | ||
|
|
d24316d809 | ||
|
|
d8bb1c64a4 | ||
|
|
2c89b28a53 | ||
|
|
99ad0f4f16 | ||
|
|
ec021a72ca | ||
|
|
5f838e48a1 | ||
|
|
e31522f310 | ||
|
|
abf8a7bfcf | ||
|
|
7ee3bd1727 | ||
|
|
5b62c517e5 | ||
|
|
ea527c580c | ||
|
|
12acc2191d | ||
|
|
c1227a9f2e | ||
|
|
fa97aac0ab | ||
|
|
cc21416254 | ||
|
|
772b6449c0 | ||
|
|
d2a1655832 | ||
|
|
b1f14fd670 | ||
|
|
0bbaba2c3e | ||
|
|
3f98302449 | ||
|
|
5857effadd | ||
|
|
52b1880593 | ||
|
|
049a499843 | ||
|
|
d9e64e978c | ||
|
|
bf54579ffa | ||
|
|
e6bfe744d8 | ||
|
|
593b11f7a5 | ||
|
|
93ea98f744 | ||
|
|
af78256355 | ||
|
|
b73b968d37 | ||
|
|
998fd77ee4 | ||
|
|
373b21121b | ||
|
|
6cae1e4b75 | ||
|
|
b9a0ef7cdb | ||
|
|
3853fde6ed | ||
|
|
719d0e9cfb | ||
|
|
7929bc4da4 | ||
|
|
e6a4c8758a | ||
|
|
070d25ca4b | ||
|
|
5bbbf25fe8 | ||
|
|
391cffae02 | ||
|
|
2d41386fd0 | ||
|
|
301e7a1b1c | ||
|
|
49a001f527 | ||
|
|
7f36382cc6 | ||
|
|
acea787547 | ||
|
|
8101fd3ede | ||
|
|
2ef617da09 | ||
|
|
33d41ac99d | ||
|
|
5bab8a5fc3 | ||
|
|
2b6c85e2cf | ||
|
|
122d79dc80 | ||
|
|
fc8db41bf8 | ||
|
|
708873506b | ||
|
|
54754f1d9d | ||
|
|
94180f0e2d | ||
|
|
daf730ab12 | ||
|
|
2a5ae2d485 | ||
|
|
72f7894bf9 | ||
|
|
84359510c5 | ||
|
|
2338089b51 | ||
|
|
a0bc7dabe4 | ||
|
|
d173fbaff7 | ||
|
|
ccf901dfbf | ||
|
|
306101fee9 | ||
|
|
0cc4deb495 | ||
|
|
b018d51c11 | ||
|
|
e2ddf73757 | ||
|
|
6284f76c43 | ||
|
|
3540961812 | ||
|
|
9c19cd17b3 | ||
|
|
d9d00c0652 | ||
|
|
8589f28536 | ||
|
|
d49d2b2d96 | ||
|
|
6b7b261461 | ||
|
|
b19cb5accb | ||
|
|
f1f228358f | ||
|
|
fa503fc5ad | ||
|
|
3e2231a8e7 | ||
|
|
ec8782b3b5 | ||
|
|
f35af8fe0c | ||
|
|
6207e24081 | ||
|
|
fd5fb1ab33 | ||
|
|
f969e375bc | ||
|
|
f6f376a23c | ||
|
|
80d4353e43 | ||
|
|
74f2860521 | ||
|
|
a21358748b | ||
|
|
716ab2cb95 | ||
|
|
8450b49306 | ||
|
|
dc6df43e8f | ||
|
|
3cf8cf24f7 | ||
|
|
d1647a1cb7 | ||
|
|
674dad9aa9 | ||
|
|
abff50d9b6 | ||
|
|
2838b58151 | ||
|
|
9e4b3143df | ||
|
|
5aaa3a8297 | ||
|
|
2b781defac | ||
|
|
7d4b3c52cd | ||
|
|
278765ed30 | ||
|
|
c0895aa638 | ||
|
|
0ac73f5b0e | ||
|
|
0c22c79045 | ||
|
|
1df94beaf4 | ||
|
|
6ac3c6caf3 | ||
|
|
bdd52ad3c0 | ||
|
|
1641e1fdc5 | ||
|
|
1a2f4d9931 | ||
|
|
8388533630 | ||
|
|
a152da8dbd | ||
|
|
096b2bb292 | ||
|
|
6b179d204b | ||
|
|
e4e5141978 | ||
|
|
2799ba6762 | ||
|
|
b93ebc781e | ||
|
|
d7f6d265fa | ||
|
|
74267a0f9d | ||
|
|
bf8d10d3fe | ||
|
|
8f99c070a8 | ||
|
|
94b93c34e6 | ||
|
|
12781a6fc8 | ||
|
|
0845725ded | ||
|
|
2e947cd66f | ||
|
|
6971392003 | ||
|
|
71e51ee730 | ||
|
|
a991cb1359 | ||
|
|
f3dd0c37c1 | ||
|
|
0989a7a058 | ||
|
|
0e80fb3930 | ||
|
|
2535ca5ebe | ||
|
|
8e4380a170 | ||
|
|
3509044e03 | ||
|
|
c61971e7eb | ||
|
|
a1748116f6 | ||
|
|
1bb9381027 | ||
|
|
7e335a660b | ||
|
|
0761948012 | ||
|
|
281aa4fcc7 | ||
|
|
f82794df11 | ||
|
|
c3297982f7 | ||
|
|
668040b48e | ||
|
|
060319d2ea | ||
|
|
1eb4dc0e8e | ||
|
|
66a5d95ed9 | ||
|
|
0cc4b4ea0a | ||
|
|
2b65156d47 | ||
|
|
1967e94f64 | ||
|
|
98aee57309 | ||
|
|
b805ce2e5f | ||
|
|
cba13d7a7d | ||
|
|
c549ea4f1d | ||
|
|
c8a36b0c36 | ||
|
|
0ea94ae9c8 | ||
|
|
5be701a09a | ||
|
|
b3adcbe97d | ||
|
|
5e7cb9b63f | ||
|
|
8755e12b53 | ||
|
|
863933cc56 | ||
|
|
c3d71b992f | ||
|
|
1714f1fb33 | ||
|
|
c0841d17b3 | ||
|
|
7cf857fd93 | ||
|
|
dc5638ef55 | ||
|
|
1ce0d2d535 | ||
|
|
6a5c79787d | ||
|
|
511f7571c2 | ||
|
|
f26b019a44 | ||
|
|
d2012e1712 | ||
|
|
a9a4e9af63 | ||
|
|
ba64d8aef6 | ||
|
|
fe1ebd8299 | ||
|
|
a15acd0382 | ||
|
|
1007dac3cb | ||
|
|
64facf06d0 | ||
|
|
83a2d7d816 | ||
|
|
c76ba45e77 | ||
|
|
4a1c82b140 | ||
|
|
46d22c53ea | ||
|
|
d819efc34b | ||
|
|
805147a0f6 | ||
|
|
7647af3673 | ||
|
|
2140e03bd9 | ||
|
|
7814b373b4 | ||
|
|
4183b631f3 | ||
|
|
77e03d27bd | ||
|
|
01a44515ce | ||
|
|
4697a1fbf5 | ||
|
|
50dcce6c59 | ||
|
|
9fef51e3e9 | ||
|
|
add30ed905 | ||
|
|
a1a6220e47 | ||
|
|
a140f8ecc1 | ||
|
|
57f4a56727 | ||
|
|
5a19a3d4db | ||
|
|
735e4f5297 | ||
|
|
47cfa00f0e | ||
|
|
3821609831 | ||
|
|
2944dbf057 | ||
|
|
e6fd931b39 | ||
|
|
8a08e80368 | ||
|
|
3bf91b97f1 | ||
|
|
d0d69befa4 | ||
|
|
be7b9e23d3 | ||
|
|
72f6db8577 | ||
|
|
ba921a8eae | ||
|
|
d72f1c0788 | ||
|
|
36ef4dff01 | ||
|
|
b8981f54fa | ||
|
|
b276309c2c | ||
|
|
7af7268440 | ||
|
|
6f0dcb6699 | ||
|
|
51e88a7c56 | ||
|
|
ea053a251d | ||
|
|
b8cbeb5b01 | ||
|
|
b734d1f3fb | ||
|
|
d6c8538c13 | ||
|
|
c47b7f5cef | ||
|
|
7f8d8ce50a | ||
|
|
f64825e730 | ||
|
|
5aef24cb98 | ||
|
|
06da0228a6 | ||
|
|
252a91231f | ||
|
|
9d1cbc0063 | ||
|
|
ec68169445 | ||
|
|
2e067f8de5 | ||
|
|
2c633fe567 | ||
|
|
adfdc0c817 | ||
|
|
5e6c7ac4b6 | ||
|
|
81d08cbef1 | ||
|
|
053a31fef5 | ||
|
|
4df5702eff | ||
|
|
2afa1c14c9 | ||
|
|
2b05a550c5 | ||
|
|
a927aae498 | ||
|
|
426af6f844 | ||
|
|
24c7950dcb | ||
|
|
b143c5f525 | ||
|
|
215a29c0ac | ||
|
|
e5319bfbe3 | ||
|
|
4739c5317c | ||
|
|
55d7991829 | ||
|
|
f92ef62843 | ||
|
|
a364f1f258 | ||
|
|
0665dba08f | ||
|
|
04d4cc50af | ||
|
|
2ee6b3c819 | ||
|
|
7d5128db80 | ||
|
|
35e07a1201 | ||
|
|
31d01f0aa4 | ||
|
|
45fb1c859d | ||
|
|
9d4515432c | ||
|
|
f3be40fd72 | ||
|
|
dd25b5dc1f | ||
|
|
e72d8c0a5f | ||
|
|
4e3cbbc378 | ||
|
|
62847190dd | ||
|
|
a7ee21e621 | ||
|
|
cbe29004bd | ||
|
|
eae00a3897 | ||
|
|
a832bea536 | ||
|
|
c6767fa9f2 | ||
|
|
8e398363fe | ||
|
|
f3f6dc16ea | ||
|
|
b50d6012ea | ||
|
|
9e1623e37d | ||
|
|
2f0852cb70 | ||
|
|
309e6d06e2 | ||
|
|
efdfa5a074 | ||
|
|
cddeb1eeac | ||
|
|
bad0316a94 | ||
|
|
522b4d3087 | ||
|
|
530d841674 | ||
|
|
d3cca6a3e2 | ||
|
|
a5ccbb48c7 | ||
|
|
367d5168bd | ||
|
|
f4bf6e1d9f | ||
|
|
8cdf4a2161 | ||
|
|
ba684e1025 | ||
|
|
c63ec881b1 | ||
|
|
9c90d2834b | ||
|
|
7b7fde2a00 | ||
|
|
127617ceaa | ||
|
|
44a1937237 | ||
|
|
5899c9e7a5 | ||
|
|
d4a2b63b4e | ||
|
|
6ad980975a | ||
|
|
5cee058e69 | ||
|
|
5a32b757f6 | ||
|
|
76dbec58d9 | ||
|
|
072957b6ec | ||
|
|
76003767d5 | ||
|
|
27f9ae0949 | ||
|
|
229033a618 | ||
|
|
85337f9a09 | ||
|
|
ddeeb97338 | ||
|
|
3e0ec62751 | ||
|
|
2239850ba9 | ||
|
|
d5712e70cb | ||
|
|
f61a0376dc | ||
|
|
7ff4937108 | ||
|
|
2d7232a392 | ||
|
|
6cd36b4b13 | ||
|
|
5678dd2251 | ||
|
|
5fe659d6b1 | ||
|
|
a1659237ab | ||
|
|
61077d332a | ||
|
|
5d8026c3c8 | ||
|
|
b4f68afd3c | ||
|
|
1f6ddc245e | ||
|
|
92a960ebd5 | ||
|
|
9d0146918d | ||
|
|
d699ef0e3b | ||
|
|
6767c6406b | ||
|
|
33a96b967b | ||
|
|
7e4a6468a2 | ||
|
|
5007b9ee35 | ||
|
|
8c0c123627 | ||
|
|
605c7bc41f | ||
|
|
0123621025 | ||
|
|
3f2e5d56a6 | ||
|
|
dd43a8364c | ||
|
|
6c8b63db06 | ||
|
|
7e0034cd1a | ||
|
|
112b7d2db7 | ||
|
|
9792360f03 | ||
|
|
4d042239d6 | ||
|
|
2a5d91b474 | ||
|
|
61782b6e77 | ||
|
|
39482d5441 | ||
|
|
6835979dbf | ||
|
|
2dd46f61b6 | ||
|
|
24f18700bb | ||
|
|
01cb85005a | ||
|
|
1a4587a2a3 | ||
|
|
eb24ba1425 | ||
|
|
c0430bb20e | ||
|
|
08a4d74937 | ||
|
|
f8de6be004 | ||
|
|
cd4e7e2993 | ||
|
|
22e48beb8f | ||
|
|
545f7af4de | ||
|
|
53a9dbf5dd | ||
|
|
9ca1e197ee | ||
|
|
131b7a691d | ||
|
|
c3e1128ad6 | ||
|
|
2d5a14db22 | ||
|
|
4134f59a15 | ||
|
|
1a74082154 | ||
|
|
9fe7e17124 | ||
|
|
726f94e798 | ||
|
|
1e405e9d91 | ||
|
|
42973b1a10 | ||
|
|
a699a92e31 | ||
|
|
22ef20d0e7 | ||
|
|
a9c5913c1f | ||
|
|
74adacbe1f | ||
|
|
e2c85346b0 | ||
|
|
7129e5e2a2 | ||
|
|
af21b2edc4 | ||
|
|
f65f132649 | ||
|
|
7ac5201425 | ||
|
|
6488dd8d0c | ||
|
|
df854fe083 | ||
|
|
36db7c0b28 | ||
|
|
3c23f6b405 | ||
|
|
de98a00df5 | ||
|
|
96b31e8abb | ||
|
|
dec789fef7 | ||
|
|
3e18e50f89 | ||
|
|
53eb8ebe02 | ||
|
|
9551290fcf | ||
|
|
e838684ae5 | ||
|
|
b68bb7f4a6 | ||
|
|
119855aedf | ||
|
|
5b6b6740ca | ||
|
|
3ab38cdf31 | ||
|
|
5c79d9452a | ||
|
|
ce17432e78 | ||
|
|
7b9380360c | ||
|
|
a8655fc78d | ||
|
|
d16acc444b | ||
|
|
76c5f62cbd | ||
|
|
faedc2bd25 | ||
|
|
cfa2657da4 | ||
|
|
8e85752c65 | ||
|
|
9899d4fd3c | ||
|
|
1e7dc9b576 | ||
|
|
30bd67f3d8 | ||
|
|
311c7cb97f | ||
|
|
f75dd66601 | ||
|
|
0ea8d11360 | ||
|
|
70efdf099e | ||
|
|
bc3b430569 | ||
|
|
ee096bf60d | ||
|
|
f2b002c49b | ||
|
|
a50e6c04d0 | ||
|
|
e4861caed8 | ||
|
|
7a63c9a3a8 | ||
|
|
2397563b9a | ||
|
|
ce42fb4fb8 | ||
|
|
b98c6fed23 | ||
|
|
8d38348f15 | ||
|
|
64eb8f871a | ||
|
|
6614a7c320 | ||
|
|
9bf8fd049d | ||
|
|
6e6e3c504b | ||
|
|
e3163df594 | ||
|
|
3713332da0 | ||
|
|
68af642d73 | ||
|
|
f4ce532f69 | ||
|
|
2c62ff85a9 | ||
|
|
4f5fdeb090 | ||
|
|
3d1ede7c1b | ||
|
|
b3265046f7 | ||
|
|
02684758db | ||
|
|
655518a9d1 | ||
|
|
771fcfe06c | ||
|
|
f1ca2d8a39 | ||
|
|
0e58d83267 | ||
|
|
e08b15ede8 | ||
|
|
e6aca6aa17 | ||
|
|
70efb8a4e8 | ||
|
|
f1b77b1a2b | ||
|
|
cbe947fba4 | ||
|
|
a1375a4d6b | ||
|
|
44fae8c7cb | ||
|
|
12947c612f | ||
|
|
d4bd1db22e | ||
|
|
1a775ac6c3 | ||
|
|
baef0aaa22 | ||
|
|
1d7f29a526 | ||
|
|
6d1b5cf43a | ||
|
|
720676185f | ||
|
|
7d177dc608 | ||
|
|
ecf9a0eaf4 | ||
|
|
f37aad2148 | ||
|
|
df6424f4dc | ||
|
|
0622556422 | ||
|
|
c5fcf594fe | ||
|
|
831eb5cbe0 | ||
|
|
d4ef153daa | ||
|
|
f21862dfd3 | ||
|
|
f598ebbc74 | ||
|
|
806853e894 | ||
|
|
6640222b29 | ||
|
|
479cfefcac | ||
|
|
06e05f9816 | ||
|
|
840ccb2f9a | ||
|
|
6303370a15 | ||
|
|
d98c376b07 | ||
|
|
1da3ae4a1d | ||
|
|
c6ec43de6e | ||
|
|
6367bdd928 | ||
|
|
7a6128e4fd | ||
|
|
50cc1d8b54 | ||
|
|
667b0d4feb | ||
|
|
53cda218b4 | ||
|
|
4aa80b3e68 | ||
|
|
b2b8c9a948 | ||
|
|
102a4b0e22 | ||
|
|
48140c5220 | ||
|
|
cb969bdf17 | ||
|
|
c4d6ff8129 | ||
|
|
bf66bb7bb2 | ||
|
|
a4271117f8 | ||
|
|
134274ba5f | ||
|
|
cb8275309c | ||
|
|
6e89506076 | ||
|
|
5a29469d5f | ||
|
|
09e431d318 | ||
|
|
6de4b1402c | ||
|
|
0501e65cea | ||
|
|
48f526716a | ||
|
|
970023c03f | ||
|
|
b971916f61 | ||
|
|
efdaa5d5b3 | ||
|
|
3d185026f0 | ||
|
|
23d451c717 | ||
|
|
1ad87b46d5 | ||
|
|
9f21e447a8 | ||
|
|
22072a412b | ||
|
|
f4ceb44124 | ||
|
|
b4999f2c38 | ||
|
|
fc74e9dab7 | ||
|
|
4ba575bb1d | ||
|
|
8984e39043 | ||
|
|
99f917148c | ||
|
|
8c01c1adf6 | ||
|
|
6efbe4acfa | ||
|
|
d2ad40af02 | ||
|
|
9d08339f38 | ||
|
|
d11d5ecc95 | ||
|
|
619d075bd0 | ||
|
|
455af17c48 | ||
|
|
355a67aeb4 | ||
|
|
783e68e2dc | ||
|
|
bcd1a8feac | ||
|
|
ec0ffd7cce | ||
|
|
9068197508 | ||
|
|
6b7f9efae8 | ||
|
|
d74879e249 | ||
|
|
d29941902c | ||
|
|
227670703c | ||
|
|
9517dc7fce | ||
|
|
92fbcd8c40 | ||
|
|
88c334c82e | ||
|
|
39708289a7 | ||
|
|
e2846f25c9 | ||
|
|
387f6bf9a7 | ||
|
|
8cd2e08464 | ||
|
|
30e70cd638 | ||
|
|
ef18373c95 | ||
|
|
902f029c41 | ||
|
|
73e1ab1fde | ||
|
|
23d1b8dd9f | ||
|
|
0185f47b40 | ||
|
|
0cf514e01f | ||
|
|
4a320f4860 | ||
|
|
2640fea635 | ||
|
|
c08f728fe4 | ||
|
|
589f2a5f16 | ||
|
|
4261e3d23d | ||
|
|
bca1b3b639 | ||
|
|
6d050de576 | ||
|
|
7bd1528c8c | ||
|
|
c0ea8c59d6 | ||
|
|
c867d16763 | ||
|
|
df9e5c47ea | ||
|
|
ef22291efe | ||
|
|
b64f8fa9d8 | ||
|
|
d1b327ed47 | ||
|
|
7dabf61f6b | ||
|
|
4bfd4212f4 | ||
|
|
f010a0a35c | ||
|
|
1544d85369 | ||
|
|
15fbf01a29 | ||
|
|
d3bc75ccdf | ||
|
|
b5e317ad06 | ||
|
|
4bf63d4929 | ||
|
|
496e0b79cd | ||
|
|
8294faf6e6 | ||
|
|
a1ec325790 | ||
|
|
cfa063cfc9 | ||
|
|
a2dd8671b6 | ||
|
|
74933dd425 | ||
|
|
0d429b2f29 | ||
|
|
3a2782b578 | ||
|
|
99c5b164d9 | ||
|
|
1a5b678e0d | ||
|
|
2aae1337dc | ||
|
|
16c79dea35 | ||
|
|
a55b1002e1 | ||
|
|
7e8a036a7b | ||
|
|
3404aec242 | ||
|
|
dd50d3961a | ||
|
|
f6e79075d8 | ||
|
|
8c0d537841 | ||
|
|
a6b1e82e56 | ||
|
|
7e8363d849 | ||
|
|
791ae65f22 | ||
|
|
8738847a2d | ||
|
|
c470ebe386 | ||
|
|
4bb9d76bb3 | ||
|
|
1a4e55c10d | ||
|
|
ccb3193b3c | ||
|
|
801024d34d | ||
|
|
80122ee349 | ||
|
|
dbb00ee558 | ||
|
|
70c2a8f5ee | ||
|
|
791e15eb63 | ||
|
|
ced68fc73b | ||
|
|
703e846e37 | ||
|
|
e2497fbe7f | ||
|
|
1a29cd4896 | ||
|
|
f303a738d5 | ||
|
|
fa6c211a87 | ||
|
|
d7f7e66b17 | ||
|
|
f0934e4a51 | ||
|
|
0e7857f5c0 | ||
|
|
edc9f65924 | ||
|
|
52d9946f86 | ||
|
|
2290d75388 | ||
|
|
4d1f24d15c | ||
|
|
eb152add05 | ||
|
|
7e7b593660 | ||
|
|
c6896d5e01 | ||
|
|
876e0e95de | ||
|
|
420d389c27 | ||
|
|
333ee274b5 | ||
|
|
c07de94fe2 | ||
|
|
5f55b9026b | ||
|
|
e26ffa88b8 | ||
|
|
88f8f0653a | ||
|
|
aa9421f1a1 | ||
|
|
cb58112c69 | ||
|
|
8628755c07 | ||
|
|
25a957ebf6 | ||
|
|
8dbce81126 | ||
|
|
48ce1c60ff | ||
|
|
2d55bc5ea3 | ||
|
|
b921300708 | ||
|
|
70fd4543fc | ||
|
|
b6f582fac0 | ||
|
|
11ae5cbeab | ||
|
|
1d45ead71f | ||
|
|
e786543335 | ||
|
|
aec2d84d99 | ||
|
|
a904754ebb | ||
|
|
eeac9c1813 | ||
|
|
97ce6579a8 | ||
|
|
a1fe498049 | ||
|
|
c2d7ff2254 | ||
|
|
219be1f402 | ||
|
|
d399a2e4c4 | ||
|
|
81b4087da4 | ||
|
|
dc09f6f072 | ||
|
|
f4a8f10ba3 | ||
|
|
e44ecc137e | ||
|
|
f6a5de7062 | ||
|
|
0d27ba0f84 | ||
|
|
7298b58399 | ||
|
|
1099a2cd2f | ||
|
|
6032016631 | ||
|
|
c87709a741 | ||
|
|
dacb445b51 | ||
|
|
e902fc2090 | ||
|
|
4a490385c8 | ||
|
|
4c5c068adc | ||
|
|
fc395182e3 | ||
|
|
d71380e88b | ||
|
|
ecef40e3a1 | ||
|
|
8efbe99abc | ||
|
|
6588def851 | ||
|
|
797abf5367 | ||
|
|
7486dc94d0 | ||
|
|
612a8e5f78 | ||
|
|
76df8a08b5 | ||
|
|
ed8644facb | ||
|
|
b9689cad2c | ||
|
|
0069fe1850 | ||
|
|
a3bba23b23 | ||
|
|
b4a029a0b0 | ||
|
|
172a985595 | ||
|
|
88696e0863 | ||
|
|
61fc372bb0 | ||
|
|
16df69fac3 | ||
|
|
5579ea1043 | ||
|
|
a3de2c8f23 | ||
|
|
0aa26d9e3f | ||
|
|
cf23e694a3 | ||
|
|
cddf5d2922 | ||
|
|
758ae3c414 | ||
|
|
f737eded48 | ||
|
|
351ab0494e | ||
|
|
fbe9915c15 | ||
|
|
d7fa0ae6aa | ||
|
|
c80c412563 | ||
|
|
14d39ae961 | ||
|
|
1c47512066 | ||
|
|
05777c0812 | ||
|
|
2d40c6060a | ||
|
|
5fbe4f5d5f | ||
|
|
29ebc6230b | ||
|
|
5f04c9a2bb | ||
|
|
a4336cfff2 | ||
|
|
b402df024d | ||
|
|
7e6ba60948 | ||
|
|
51e94518f4 | ||
|
|
361c0d9729 | ||
|
|
2c951d8c4b | ||
|
|
aa6e53812b | ||
|
|
e39eefded5 | ||
|
|
41f6d77b7f | ||
|
|
9a60ff9306 | ||
|
|
e9c8ffe28f | ||
|
|
2eaefd0b6a | ||
|
|
b739cce3eb | ||
|
|
1afb392199 | ||
|
|
c2bb81dbd6 | ||
|
|
1a761b75e8 | ||
|
|
4e1bce320e | ||
|
|
436a2d7255 | ||
|
|
d9ea2e4dda | ||
|
|
da83856c00 | ||
|
|
7107660669 | ||
|
|
099a089145 | ||
|
|
d6815f7468 | ||
|
|
1aa5cffac6 | ||
|
|
3f1a4ed2f1 | ||
|
|
08a10d7866 | ||
|
|
4b3b1d2a1c | ||
|
|
3d9ec1a134 | ||
|
|
1301541e03 | ||
|
|
49cc27c7c9 | ||
|
|
0d27f01ec4 | ||
|
|
b0830f2eae | ||
|
|
75ae957684 | ||
|
|
e0c404a059 | ||
|
|
04e9b20871 | ||
|
|
46a7f142cd | ||
|
|
8418e01c56 | ||
|
|
cd1f77a48a | ||
|
|
47e178b564 | ||
|
|
2227998de5 | ||
|
|
8fb01f997d | ||
|
|
d7343e2b3d | ||
|
|
7fc27b3483 | ||
|
|
8258d70f07 | ||
|
|
1a87ad3431 | ||
|
|
099beb8153 | ||
|
|
27eef620ba | ||
|
|
a277d6a08a | ||
|
|
068691f8c5 | ||
|
|
c919f92446 | ||
|
|
4e16c7bd1b | ||
|
|
fc6b1ef5b0 | ||
|
|
c7fa3e3bdd | ||
|
|
b6e39159b7 | ||
|
|
5c35cb9cf8 | ||
|
|
db7ad0361d | ||
|
|
f737a7d683 | ||
|
|
917eb48e07 | ||
|
|
52c668eba1 | ||
|
|
55c4a06f99 | ||
|
|
b8266eed8d | ||
|
|
b1dcd62fb2 | ||
|
|
bfec89846b | ||
|
|
8724215bad | ||
|
|
ac8686179d | ||
|
|
309bc6da45 | ||
|
|
c96627ac85 | ||
|
|
048968ae66 | ||
|
|
0451caed38 | ||
|
|
c3366f746a | ||
|
|
fab235065f | ||
|
|
f0f8b85280 | ||
|
|
3f87caf3f3 | ||
|
|
8e232cec9d | ||
|
|
ff26914f72 | ||
|
|
f8fa912342 | ||
|
|
61ec0eecf7 | ||
|
|
c02d214f85 | ||
|
|
7d6df389ed | ||
|
|
5a285050a7 | ||
|
|
58b1d818d4 | ||
|
|
dac1b2bcaa | ||
|
|
7556ddfc3d | ||
|
|
a61eab4b36 | ||
|
|
d81fc02ddb | ||
|
|
ec858672d2 | ||
|
|
a05ffcba13 | ||
|
|
39a14ea788 | ||
|
|
ed33e19f4b | ||
|
|
c89d0c0d4f | ||
|
|
555b02fd16 | ||
|
|
fa6f292365 | ||
|
|
cf4f2209ff | ||
|
|
a031bd611e | ||
|
|
5eceecf442 | ||
|
|
61584baed7 | ||
|
|
49707925b6 | ||
|
|
3e0ff080bb | ||
|
|
85d4d85ee5 | ||
|
|
dfc78cafd6 | ||
|
|
3fa1e7c745 | ||
|
|
83da7e0f23 | ||
|
|
1e1af5f883 | ||
|
|
acdc7adbd7 | ||
|
|
4d7cc18c43 | ||
|
|
4e3ff66f2d | ||
|
|
7925d69a12 | ||
|
|
ce2d9bf90f | ||
|
|
c408f8b9c6 | ||
|
|
dfcb429278 | ||
|
|
c5020a7608 | ||
|
|
a166ae2553 | ||
|
|
4b099019e0 | ||
|
|
8567a5c931 | ||
|
|
3bc2bfd67e | ||
|
|
b98a67287c | ||
|
|
78887540a4 | ||
|
|
9fd003bb00 | ||
|
|
6b8fcf120d | ||
|
|
1d37cbec80 | ||
|
|
e8d32dd018 | ||
|
|
2203614991 | ||
|
|
ca2304abb8 | ||
|
|
50f5cfcbf3 | ||
|
|
149a92e822 | ||
|
|
2f45c5547d | ||
|
|
e3e60b3068 | ||
|
|
d41bd0eab9 | ||
|
|
2c279b71df | ||
|
|
483c621fac | ||
|
|
d554480697 | ||
|
|
7f887b872c | ||
|
|
240168e925 | ||
|
|
53a58f8a7c | ||
|
|
8479cb28ca | ||
|
|
304f7883d9 | ||
|
|
2692429e82 | ||
|
|
7732c23e3d | ||
|
|
e43cb08db6 | ||
|
|
023940466f | ||
|
|
ca59efa379 | ||
|
|
2542c5ef30 | ||
|
|
3b56ca328f | ||
|
|
86afbe6fe1 | ||
|
|
6d21c1794c | ||
|
|
e57d1f411a | ||
|
|
1978fbc48f | ||
|
|
be8593d288 | ||
|
|
7acaa371c7 | ||
|
|
fc65161989 | ||
|
|
b9d0236793 | ||
|
|
9922b6a7a7 | ||
|
|
ac88dde05b | ||
|
|
f2a6bce07b | ||
|
|
1a9dfa8a58 | ||
|
|
75d75df881 | ||
|
|
2cdc2ee211 | ||
|
|
a552a5cb8f | ||
|
|
63be896ca4 | ||
|
|
0a276c6ec6 | ||
|
|
9d678d86a9 | ||
|
|
92e17646ed | ||
|
|
c4c884bd7c | ||
|
|
aeb912a559 | ||
|
|
016bee7f72 | ||
|
|
bf7b8eb99b | ||
|
|
f4fd6f73e0 | ||
|
|
cefd447a67 | ||
|
|
496fb8b60b | ||
|
|
0e7d1b01cc | ||
|
|
a7c4e6b5ab | ||
|
|
252e1de3a5 | ||
|
|
830305267a | ||
|
|
f46328889f | ||
|
|
3a35acd1b6 | ||
|
|
d7fadc322e | ||
|
|
3f738233fd | ||
|
|
b0e2208bdb | ||
|
|
40f630a55d | ||
|
|
0ae979e34a | ||
|
|
b9a6a3b3e5 | ||
|
|
09376584df | ||
|
|
5d9c9447f0 | ||
|
|
cebf984217 | ||
|
|
4390d9cf62 | ||
|
|
09c3898fad | ||
|
|
9c87379bf5 | ||
|
|
cd43291738 | ||
|
|
34bc17a55f | ||
|
|
5d441c68b6 | ||
|
|
3ce983c7b6 | ||
|
|
ed8d2e2412 | ||
|
|
34adefe7b5 | ||
|
|
0a10c75c28 | ||
|
|
71e71e75df | ||
|
|
79e22c2b9c | ||
|
|
2b05666f1a | ||
|
|
3ef03e4a43 | ||
|
|
7dba6c61e0 | ||
|
|
aa2b99be7f | ||
|
|
f4f797a477 | ||
|
|
24b9fed88b | ||
|
|
6825c679c0 | ||
|
|
909c123cd9 | ||
|
|
1f3d7f996c | ||
|
|
70cf265951 | ||
|
|
3728b87360 | ||
|
|
6d66f85a5c | ||
|
|
7bb42186e6 | ||
|
|
70917d9155 | ||
|
|
724a8372e1 | ||
|
|
a4595d3014 | ||
|
|
b5f6e9e532 | ||
|
|
3f75dd8fa3 | ||
|
|
709d163a78 | ||
|
|
16f85cfbaa | ||
|
|
7d0edf7403 | ||
|
|
87bf71684d | ||
|
|
4a7f5e6ed8 | ||
|
|
03509a3195 | ||
|
|
3c3d0d055e | ||
|
|
7d46bf53c1 | ||
|
|
dac82f5c47 | ||
|
|
04b9ecf190 | ||
|
|
d6395878bc | ||
|
|
a5e070b7d9 | ||
|
|
a5affe3ab1 | ||
|
|
b29a49e0f0 | ||
|
|
9423032df7 | ||
|
|
a4b71f01e3 | ||
|
|
a11bdf667f | ||
|
|
fbf101d0ff | ||
|
|
2665a07237 | ||
|
|
e53d75bb6c | ||
|
|
fe33179197 | ||
|
|
9ee1edcb8c | ||
|
|
6cb6cca7f8 | ||
|
|
36963661d4 | ||
|
|
8894e606b0 | ||
|
|
923574566b | ||
|
|
9712518f2b | ||
|
|
a66585e14b | ||
|
|
275bd7c9c6 | ||
|
|
3bf0fbb1e9 | ||
|
|
50737c5cff | ||
|
|
442e67eabc | ||
|
|
a14139cf9a | ||
|
|
244f283be7 | ||
|
|
6e67220fcc | ||
|
|
66a1f20705 | ||
|
|
e07af8de27 | ||
|
|
eb256a647d | ||
|
|
727980f7e0 | ||
|
|
a2f728de3c | ||
|
|
89f3355c76 | ||
|
|
207b5f4c66 | ||
|
|
c4ab45ade1 | ||
|
|
1ac06334b0 | ||
|
|
51e6a6e9a8 | ||
|
|
be38d6d284 | ||
|
|
251ed1d857 | ||
|
|
192356aff4 | ||
|
|
f4add715f0 | ||
|
|
045efb6df2 | ||
|
|
81d25051ad | ||
|
|
428cacd35f | ||
|
|
767783027c | ||
|
|
f3f9a5cbef | ||
|
|
07cad1d6a9 | ||
|
|
9bc05fb9e6 | ||
|
|
1e4fa1df0b | ||
|
|
dc7e0adf5b | ||
|
|
4da6d97653 | ||
|
|
e64f04b927 | ||
|
|
83072b0dce | ||
|
|
c603e32b19 | ||
|
|
6692d4f71e | ||
|
|
86be688cf9 | ||
|
|
cd8c30960e | ||
|
|
2da97611a7 | ||
|
|
69c748e1e4 | ||
|
|
d2b4cb35f8 | ||
|
|
d5dc59df3c | ||
|
|
112ce17761 | ||
|
|
6c3e300543 | ||
|
|
2390fd8432 | ||
|
|
42a34c2ea6 | ||
|
|
67b067355d | ||
|
|
ac11640938 | ||
|
|
a415941829 | ||
|
|
f8ace055f9 | ||
|
|
4e5bee3840 | ||
|
|
8db374bcd8 | ||
|
|
1b18cfc104 | ||
|
|
988b4a44a2 | ||
|
|
85ea218545 | ||
|
|
2ea6bfa6fb | ||
|
|
eb5961564e | ||
|
|
e6d527268d | ||
|
|
8745f0b93c | ||
|
|
c42a5015ce | ||
|
|
1e7c107682 | ||
|
|
edaf25cebd | ||
|
|
2b6252f874 | ||
|
|
8a7212bdb3 | ||
|
|
891e1ec648 | ||
|
|
4319d7d041 | ||
|
|
e255e2f4fc | ||
|
|
3e06ac9fe2 | ||
|
|
e7c32ec1f0 | ||
|
|
e178f9c40f | ||
|
|
43baccd837 | ||
|
|
3d755c1c95 | ||
|
|
4655544ed4 | ||
|
|
1d2bc15cf4 | ||
|
|
d9eaf2f2fd | ||
|
|
1e34c77459 | ||
|
|
c7b71f8c0a | ||
|
|
817c89e26e | ||
|
|
feb2f52d4d | ||
|
|
48ae4e63fb | ||
|
|
2909976697 | ||
|
|
cc098fb66c | ||
|
|
5f092ad7cd | ||
|
|
99cd7f2b9d | ||
|
|
7ff415973f | ||
|
|
69bff0fafb | ||
|
|
19b4a3a5a0 | ||
|
|
68cd966f3b | ||
|
|
fc78d5c5ed | ||
|
|
384b6bd610 | ||
|
|
25a70e20b2 | ||
|
|
a86a99d090 | ||
|
|
fb7871cb87 | ||
|
|
c873fd768c | ||
|
|
81a83e6f9e | ||
|
|
af102fee19 | ||
|
|
2eace0a015 | ||
|
|
939dfb8a6c | ||
|
|
c36a297113 | ||
|
|
e88a313640 | ||
|
|
cb4dc1fe5e | ||
|
|
e533cc7f7d | ||
|
|
795add0751 | ||
|
|
c175c89cc7 | ||
|
|
ecdaf2acdb | ||
|
|
6e2b9e3a13 | ||
|
|
04b1a4866a | ||
|
|
facdccd6c7 | ||
|
|
3dc7e79cfd | ||
|
|
f164d2e901 | ||
|
|
e4ae9cf436 | ||
|
|
8c031b6c0d | ||
|
|
80da7081f9 | ||
|
|
ac91c09778 | ||
|
|
161cc6c209 | ||
|
|
61af6d6569 | ||
|
|
48f6d9b8e1 | ||
|
|
963c5d60b8 | ||
|
|
19a9630b2b | ||
|
|
f52d111d48 | ||
|
|
51e6bc742f | ||
|
|
a9d3d84b36 | ||
|
|
f00c59b908 | ||
|
|
c4224fef73 | ||
|
|
614e4170f4 | ||
|
|
0ec477c849 | ||
|
|
8e97adac09 | ||
|
|
b2a5c3859b | ||
|
|
838639ad10 | ||
|
|
3c697881ff | ||
|
|
87215fde46 | ||
|
|
e20eae3e18 | ||
|
|
84fef324b1 | ||
|
|
e0f676c2f4 | ||
|
|
837e36eba6 | ||
|
|
591e232650 | ||
|
|
c601476ead | ||
|
|
af84d05fd3 | ||
|
|
9476743f55 | ||
|
|
98dab4ed0f | ||
|
|
5e575e2f83 | ||
|
|
0c95bc508e | ||
|
|
c4fd78dfd2 | ||
|
|
e8bc2c79a9 | ||
|
|
f7ec84633d | ||
|
|
b628ba287d | ||
|
|
fd93ef9702 | ||
|
|
2c08318ee4 | ||
|
|
b611bb42ea | ||
|
|
71a4315ffe | ||
|
|
045dcdb686 | ||
|
|
669688006f | ||
|
|
92cac64108 | ||
|
|
aceb686d70 | ||
|
|
d1a4097c45 | ||
|
|
5609bf131b | ||
|
|
1604a56909 | ||
|
|
d55a921e81 | ||
|
|
801066801c | ||
|
|
64ee68568b | ||
|
|
06bc28ed5a | ||
|
|
12db763560 | ||
|
|
9131024585 | ||
|
|
8c66281379 | ||
|
|
e8ba092710 | ||
|
|
73fa16f983 | ||
|
|
95a9c7a642 | ||
|
|
bfe396eec9 | ||
|
|
b320d6854d | ||
|
|
a4b2debca1 | ||
|
|
0c38ca2924 | ||
|
|
82495cb249 | ||
|
|
29d81e1f0c | ||
|
|
e2b5ace07d | ||
|
|
a816a703f2 | ||
|
|
19c2d437a4 | ||
|
|
9df1a2a1b7 | ||
|
|
e6e86f07b2 | ||
|
|
4c9303eba0 | ||
|
|
ce9534bb3d | ||
|
|
9a0ad6d1e3 | ||
|
|
7ef6ca25ba | ||
|
|
025c368ed9 | ||
|
|
ebabc1117c | ||
|
|
58e532dfd4 | ||
|
|
972ad7ae5d | ||
|
|
a1f64e9842 | ||
|
|
ebd11b302f | ||
|
|
95eb3d5111 | ||
|
|
a0fb429665 | ||
|
|
af712c4e1e | ||
|
|
e939b5e169 | ||
|
|
9d230d7b27 | ||
|
|
9b85ac923b | ||
|
|
6f3a3c62b7 | ||
|
|
db82e28857 | ||
|
|
512910189c | ||
|
|
9702fc8923 | ||
|
|
0c736232aa | ||
|
|
a5717eeb80 | ||
|
|
71145968ca | ||
|
|
2a7773eec3 | ||
|
|
b5f9e21a15 | ||
|
|
0f449e142a | ||
|
|
fefa2c8cd9 | ||
|
|
0eacefc1da | ||
|
|
e26c88e963 | ||
|
|
942d8f98e2 | ||
|
|
da964d047b | ||
|
|
ba167ddc90 | ||
|
|
f852f166f7 | ||
|
|
fd12ba4b8e | ||
|
|
c37da45612 | ||
|
|
d0e8cbea32 | ||
|
|
35fb3103f7 | ||
|
|
31b4fe1f96 | ||
|
|
8de0a01890 | ||
|
|
145bfeb6e5 | ||
|
|
7f85489f69 | ||
|
|
18a93ea829 | ||
|
|
2d87b0e06d | ||
|
|
bad689b5fd | ||
|
|
8f43a142b8 | ||
|
|
207076d637 | ||
|
|
d63149f33b | ||
|
|
e3220460a9 | ||
|
|
cf1cd55cfd | ||
|
|
52b7ce6aa3 | ||
|
|
6df924ff0f | ||
|
|
9adf059eaa | ||
|
|
04f6d4018f | ||
|
|
2c8a93b6d9 | ||
|
|
fe145f4b29 | ||
|
|
062a5112a5 | ||
|
|
9c90e52907 | ||
|
|
fb02bd2b61 | ||
|
|
7c86475eba | ||
|
|
6083270b61 | ||
|
|
f4e7061087 | ||
|
|
2ac5f713dc | ||
|
|
2fb73a9e3d | ||
|
|
da6af3b1aa | ||
|
|
2d87dc449c | ||
|
|
404fad65b5 | ||
|
|
2d5a7af22d | ||
|
|
6ee32bad32 | ||
|
|
d2d6b0ac6e | ||
|
|
cedc646b1d | ||
|
|
0cb27d7ca8 | ||
|
|
f2c29df22e | ||
|
|
9b92d1a1df | ||
|
|
f8f0d1ace7 | ||
|
|
7b130f2c49 | ||
|
|
6747625a5c | ||
|
|
b4f0657714 | ||
|
|
1c9e0da63c | ||
|
|
d2634566b8 | ||
|
|
cad748bc0d | ||
|
|
3e8b0d6394 | ||
|
|
e0ab401185 | ||
|
|
34ceca877e | ||
|
|
0ed406ae04 | ||
|
|
6695373e0b | ||
|
|
de3bfbd7dd | ||
|
|
076fe71999 | ||
|
|
0215d30281 | ||
|
|
7e65259d6f | ||
|
|
7525acfcd6 | ||
|
|
add4d2987f | ||
|
|
492c047f7e | ||
|
|
b9946a227c | ||
|
|
6afff6b32c | ||
|
|
f62f58a1be | ||
|
|
e7413d417d | ||
|
|
5263e67fa8 | ||
|
|
88dd50f3ab | ||
|
|
27304eb644 | ||
|
|
4eb836cbc7 | ||
|
|
fe7794f81a | ||
|
|
c3066e6f01 | ||
|
|
d757d7396d | ||
|
|
259d6d80e4 | ||
|
|
36fdb4d33d | ||
|
|
e3fb1073be | ||
|
|
ffef91d62f | ||
|
|
7214de04b7 | ||
|
|
1e83ce9489 | ||
|
|
9996eabe77 | ||
|
|
35b31ce0bf | ||
|
|
fd1f89e908 | ||
|
|
453468cc79 | ||
|
|
8a841d816f | ||
|
|
67c60419b8 | ||
|
|
ad4787ae1c | ||
|
|
32a63f3124 | ||
|
|
8e65ce57aa | ||
|
|
68da22bc28 | ||
|
|
ad82abde08 | ||
|
|
bd78cc73cd | ||
|
|
6bbd7cff42 | ||
|
|
c2e839defb | ||
|
|
09dad56bcf | ||
|
|
aae9917f9f | ||
|
|
70a77ca298 | ||
|
|
0f7ae90fb6 | ||
|
|
58ced7a6e7 | ||
|
|
0d0418f2d5 | ||
|
|
53436e790c | ||
|
|
ab9f2eaaa3 | ||
|
|
0c8b39b0bd | ||
|
|
d3cfdae79a | ||
|
|
5e95d62e1e | ||
|
|
63d7dd9f75 | ||
|
|
7e4896c79e | ||
|
|
2d4468b643 | ||
|
|
eee18cc4e5 | ||
|
|
5c5f8b4845 | ||
|
|
566762c5d2 | ||
|
|
966f5cfa2d | ||
|
|
ee38238199 | ||
|
|
6c54de1662 | ||
|
|
6130bcab38 | ||
|
|
7d42187fb1 | ||
|
|
18c27f17d8 | ||
|
|
533701b201 | ||
|
|
7b0864411b | ||
|
|
3ab6e550c4 | ||
|
|
dc032effb8 | ||
|
|
e594d23f79 | ||
|
|
277784bd11 | ||
|
|
65c5406ae8 | ||
|
|
1c6e503d2e | ||
|
|
9d0a483ab3 | ||
|
|
4640b00d3d | ||
|
|
7a1cf0e9ee | ||
|
|
c71695dfcb | ||
|
|
93376e16a5 | ||
|
|
7d2a124bbc | ||
|
|
651514aa54 | ||
|
|
3be38fabc5 | ||
|
|
198e32ea9d | ||
|
|
aac0e22962 | ||
|
|
cd4dd32e0d | ||
|
|
71a7860925 | ||
|
|
30da5c6261 | ||
|
|
16b148b713 | ||
|
|
a5102ee393 | ||
|
|
e8056e8e48 | ||
|
|
c764c45732 | ||
|
|
c260b90488 | ||
|
|
22b51dfb66 | ||
|
|
9d8089b287 | ||
|
|
5d2b3b4a54 | ||
|
|
fe1888e6c0 | ||
|
|
156fded994 | ||
|
|
78ea9ef8d3 | ||
|
|
05e320be77 | ||
|
|
1bbe74e8c6 | ||
|
|
faf559acd1 | ||
|
|
f931c822e8 | ||
|
|
7be6d9318e | ||
|
|
7e25bf46aa | ||
|
|
bd2ea48ecb | ||
|
|
1431b95c1d | ||
|
|
5d6f457b93 | ||
|
|
16de474503 | ||
|
|
78e1a9b064 | ||
|
|
a2ef3b8172 | ||
|
|
895546f502 | ||
|
|
b72fef9af3 | ||
|
|
ed642b9321 | ||
|
|
06918bc81d | ||
|
|
b69511de36 | ||
|
|
c3f7197eea | ||
|
|
a74347eefc | ||
|
|
6b17f71941 | ||
|
|
09faef4d74 | ||
|
|
53186f7060 | ||
|
|
ce300a78a6 | ||
|
|
76bd3af823 | ||
|
|
2d0e98b83c | ||
|
|
e33f13f8fb | ||
|
|
e40a5e97a6 | ||
|
|
cf79e948c3 | ||
|
|
b755201897 | ||
|
|
a2ffc65d1d | ||
|
|
36903cb9c8 | ||
|
|
edf7541001 | ||
|
|
742ac5bdea | ||
|
|
632c7ab24f | ||
|
|
93b3291de9 | ||
|
|
3a6640450c | ||
|
|
48bce54c48 | ||
|
|
d419c19324 | ||
|
|
1b85010f43 | ||
|
|
58aa86123a | ||
|
|
407f8df8a4 | ||
|
|
61685ce96a | ||
|
|
0b4eafdd9e | ||
|
|
f948811044 | ||
|
|
95a7130591 | ||
|
|
8854bb4a4b | ||
|
|
316cbfb59b | ||
|
|
2c2c0ad9ee | ||
|
|
741df3475e | ||
|
|
fb84ff92ae | ||
|
|
025421ff94 | ||
|
|
d5b91d4c01 | ||
|
|
6422c7925b | ||
|
|
96e0180f6e | ||
|
|
520f0b4ab4 | ||
|
|
075a12dbca | ||
|
|
0c90a1c613 | ||
|
|
326d9013b2 | ||
|
|
59a37a06ac | ||
|
|
fee70fd3d0 | ||
|
|
a8ed6a31e8 | ||
|
|
370f96aa99 | ||
|
|
715960ee94 | ||
|
|
1f55dd564c | ||
|
|
2678e879e3 | ||
|
|
1aeed1e4ec | ||
|
|
46fd811fa1 | ||
|
|
74b5f6f87c | ||
|
|
12b792bb38 | ||
|
|
c4026c9066 | ||
|
|
eb5f1f8156 | ||
|
|
8234c97a82 | ||
|
|
2b100c2792 | ||
|
|
3645336aeb | ||
|
|
1ea5e2bfd7 | ||
|
|
7ddb84c514 | ||
|
|
ec54bb99c4 | ||
|
|
1c4a73efa7 | ||
|
|
8327c46551 | ||
|
|
b8f9b6a83f | ||
|
|
cea6d2b155 | ||
|
|
4f83baee6f | ||
|
|
a72b7b788f | ||
|
|
011163669f | ||
|
|
591d6af124 | ||
|
|
a68b9b1904 | ||
|
|
009b90f9cb | ||
|
|
d84dda8fe1 | ||
|
|
e81bb0f967 | ||
|
|
0f53f6de07 | ||
|
|
e5182d667b | ||
|
|
f203232c60 | ||
|
|
e5206ff46d | ||
|
|
e0210130d7 | ||
|
|
9907b61aa9 | ||
|
|
778de7ca84 | ||
|
|
d8558bafb0 | ||
|
|
72c882b691 | ||
|
|
5ae08f7604 | ||
|
|
d7cfebbd31 | ||
|
|
2acdafd27b | ||
|
|
29ac558758 | ||
|
|
0d6b235b87 | ||
|
|
be189babd4 | ||
|
|
7fe2d484ab | ||
|
|
84bbe65ed7 | ||
|
|
9f835088da | ||
|
|
aea49ee61a | ||
|
|
d7dc9cfb04 | ||
|
|
62ca3c2478 | ||
|
|
7eca7c6b58 | ||
|
|
2f0831eec4 | ||
|
|
f97fad470a | ||
|
|
3e841584fa | ||
|
|
361fc247f7 | ||
|
|
972e10d82c | ||
|
|
858e643a4b | ||
|
|
86eb3e7526 | ||
|
|
a7bb3b3226 | ||
|
|
908db8fa6c | ||
|
|
cf3784b780 | ||
|
|
01755ad5b5 | ||
|
|
0f54212e90 | ||
|
|
df17f6f59f | ||
|
|
07c527e855 | ||
|
|
724505062c | ||
|
|
6b86ea9094 | ||
|
|
c34c6efe57 | ||
|
|
ab6db7e57d | ||
|
|
2c0838b2c3 | ||
|
|
435e8b7e5f | ||
|
|
f2aad0b6a2 | ||
|
|
bd0659b36f | ||
|
|
53953d4476 | ||
|
|
1ecf1372e9 | ||
|
|
83ac08a9d2 | ||
|
|
0e263e7f34 | ||
|
|
8e4cb28569 | ||
|
|
4917e8ca3c | ||
|
|
9e542e181d | ||
|
|
d92d1fb476 | ||
|
|
adaad84a1b | ||
|
|
2e95c0f6ee | ||
|
|
1dd041d67d | ||
|
|
b198ef8930 | ||
|
|
732098f461 | ||
|
|
7e6ada25d7 | ||
|
|
8ea4242591 | ||
|
|
9850484fa3 | ||
|
|
394a3677c1 | ||
|
|
551ebc31f2 | ||
|
|
4209c3e1f7 | ||
|
|
9fa1778225 | ||
|
|
5e8cdd6ba3 | ||
|
|
80abc153ea | ||
|
|
0cf220a31c | ||
|
|
4ca2d7c297 | ||
|
|
5928289ebc | ||
|
|
d9e56d730a | ||
|
|
baf7909964 | ||
|
|
344bfc9690 | ||
|
|
dfd6a77147 | ||
|
|
c0e0191945 | ||
|
|
92e1a4ca8c | ||
|
|
47e1228028 | ||
|
|
5339a8854d | ||
|
|
6e51f8fe3d | ||
|
|
6375e4b5a4 | ||
|
|
02127a28ac | ||
|
|
05122ddeec | ||
|
|
5e2413eefe | ||
|
|
1cc86d4276 | ||
|
|
96391cf873 | ||
|
|
a3eebf916f | ||
|
|
b91473f842 | ||
|
|
83c64b941c | ||
|
|
17ceff91c5 | ||
|
|
40b37e082b | ||
|
|
685223cd0f | ||
|
|
2077f0b717 | ||
|
|
56a46ab094 | ||
|
|
295ad31ba5 | ||
|
|
4cb5081b53 | ||
|
|
e83b9edd2d | ||
|
|
9ae3012689 | ||
|
|
24410b2ba8 | ||
|
|
204af4c8be | ||
|
|
507caa128f | ||
|
|
1da08d37d2 | ||
|
|
b8aa3660c3 | ||
|
|
222d5912bb | ||
|
|
8ee238ec65 | ||
|
|
7169a25422 | ||
|
|
46a55c202e | ||
|
|
3cbc7c502b | ||
|
|
32be3764b8 | ||
|
|
1350543537 | ||
|
|
378643a072 | ||
|
|
320c44b087 | ||
|
|
162e604feb | ||
|
|
b1e9c8101d | ||
|
|
c29957e316 | ||
|
|
acdb07bc38 | ||
|
|
c2157b502d | ||
|
|
7c5462a828 | ||
|
|
5f3e116e46 | ||
|
|
4e6567c20a | ||
|
|
639ee3539b | ||
|
|
d7e581532b | ||
|
|
88b076439c | ||
|
|
0691c3cee9 | ||
|
|
9929d469dd | ||
|
|
428d3b7950 | ||
|
|
ca25262e38 | ||
|
|
6059562beb | ||
|
|
149469230f | ||
|
|
2c2c4f9224 | ||
|
|
866393e1b4 | ||
|
|
66ba25b3dd | ||
|
|
190ac7075e | ||
|
|
736cb1c9f4 | ||
|
|
215868acfd | ||
|
|
182d570195 | ||
|
|
14c181bd06 | ||
|
|
4e91379691 | ||
|
|
1f60e3daad | ||
|
|
620db4e9e8 | ||
|
|
e52d009593 | ||
|
|
332b4e4d0a | ||
|
|
f6db836926 | ||
|
|
df93a27587 | ||
|
|
9bb57606b3 | ||
|
|
7eb5a169c1 | ||
|
|
8946ead961 | ||
|
|
5035a29129 | ||
|
|
8c0f6c1bfc | ||
|
|
365b6c6965 | ||
|
|
166465b8c2 | ||
|
|
e5f44f98ed | ||
|
|
5efe1d6b7c | ||
|
|
853ffaa69f | ||
|
|
7b8d5f0cb6 | ||
|
|
810aa0bbee | ||
|
|
e223d2ce63 | ||
|
|
d3a4b3d395 | ||
|
|
0009f1de1d | ||
|
|
a3c23052bf | ||
|
|
ff8f71fc60 | ||
|
|
02233a88c4 | ||
|
|
7803e58d2f | ||
|
|
337adc1bbf | ||
|
|
a0395966c8 | ||
|
|
0efc2493f1 | ||
|
|
7f16a3f2ac | ||
|
|
b17a77d152 | ||
|
|
391bbdee5c | ||
|
|
bbc9bb3043 | ||
|
|
a18a0166e6 | ||
|
|
8eaa1b0629 | ||
|
|
619eb19342 | ||
|
|
05c426b3b8 | ||
|
|
7810d55702 | ||
|
|
4dc0f2d505 | ||
|
|
c3c9d59267 | ||
|
|
edd20076ed | ||
|
|
ffeb0a39f3 | ||
|
|
59a0ab6d90 | ||
|
|
dc5c9aacf0 | ||
|
|
d15900ba85 | ||
|
|
4cb8c9dbb1 | ||
|
|
491e3f35ef | ||
|
|
b9c0d7b9c8 | ||
|
|
9db0baf400 | ||
|
|
45372fe769 | ||
|
|
3d37f531a5 | ||
|
|
92034a009d | ||
|
|
208e5fd254 |
11
.gitattributes
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
tests/ export-ignore
|
||||||
|
develop/ export-ignore
|
||||||
|
travis/ export-ignore
|
||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
||||||
|
.travis.yml export-ignore
|
||||||
|
phpunit.xml.* export-ignore
|
||||||
|
README.md export-ignore
|
||||||
|
git-tools/ export-ignore
|
||||||
|
.coveralls.yml export-ignore
|
||||||
|
build.xml export-ignore
|
||||||
414
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
name: Tests
|
||||||
|
|
||||||
|
env:
|
||||||
|
EXTNAME: board3/portal # Your extension vendor/package name
|
||||||
|
SNIFF: 1 # Run code sniffer on your code? 1 or 0
|
||||||
|
IMAGE_ICC: 0 # Run icc profile sniffer on your images? 1 or 0
|
||||||
|
EPV: 1 # Run EPV (Extension Pre Validator) on your code? 1 or 0
|
||||||
|
EXECUTABLE_FILES: 0 # Run check for executable files? 1 or 0
|
||||||
|
PHPBB_BRANCH: 3.3.x # The phpBB branch to run tests on
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: # Run tests when commits are pushed to these branches in your repo
|
||||||
|
- master
|
||||||
|
pull_request: # Run tests when pull requests are made on these branches in your repo
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# START Basic Checks Job (EPV, code sniffer, images check, etc.)
|
||||||
|
basic-checks:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.1'
|
||||||
|
db: "none"
|
||||||
|
NOTESTS: 1
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout phpBB
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: phpbb/phpbb
|
||||||
|
ref: ${{ env.PHPBB_BRANCH }}
|
||||||
|
path: phpBB3
|
||||||
|
|
||||||
|
- name: Checkout extension
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{ matrix.db }}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '1'
|
||||||
|
run: .github/setup-phpbb.sh $DB $PHP_VERSION $NOTESTS
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup EPV
|
||||||
|
if: ${{ env.EPV != 0 }}
|
||||||
|
run: composer require phpbb/epv:dev-master --dev --no-interaction --ignore-platform-reqs
|
||||||
|
working-directory: ./phpBB3/phpBB
|
||||||
|
|
||||||
|
- name: Run code sniffer
|
||||||
|
if: ${{ env.SNIFF != 0 }}
|
||||||
|
env:
|
||||||
|
NOTESTS: '1'
|
||||||
|
run: .github/ext-sniff.sh $EXTNAME $NOTESTS
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Check image ICC profiles
|
||||||
|
if: ${{ env.IMAGE_ICC != 0 }}
|
||||||
|
run: .github/check-image-icc-profiles.sh
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Check executable files
|
||||||
|
if: ${{ env.EXECUTABLE_FILES != 0 }}
|
||||||
|
run: .github/ext-check-executable-files.sh ./ $EXTNAME
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Run EPV
|
||||||
|
if: ${{ env.EPV != 0 }}
|
||||||
|
run: phpBB/vendor/bin/EPV.php run --dir="phpBB/ext/$EXTNAME/"
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
# END Basic Checks Job
|
||||||
|
|
||||||
|
# START MySQL and MariaDB Job
|
||||||
|
mysql-tests:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mariadb:10.1"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mariadb:10.2"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mariadb:10.3"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mariadb:10.4"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mariadb:10.5"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mysql:5.6"
|
||||||
|
db_alias: "MyISAM Tests"
|
||||||
|
MYISAM: 1
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mysql:5.6"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.3'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.4'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '7.4'
|
||||||
|
db: "mysql:8.0"
|
||||||
|
- php: '8.0'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
- php: '8.1'
|
||||||
|
db: "mysql:5.7"
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: ${{ matrix.db }}
|
||||||
|
env:
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
||||||
|
MYSQL_DATABASE: phpbb_tests
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
options: >-
|
||||||
|
--health-cmd="mysqladmin ping"
|
||||||
|
--health-interval=10s
|
||||||
|
--health-timeout=5s
|
||||||
|
--health-retries=3
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout phpBB
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: phpbb/phpbb
|
||||||
|
ref: ${{ env.PHPBB_BRANCH }}
|
||||||
|
path: phpBB3
|
||||||
|
|
||||||
|
- name: Checkout extension
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
echo "::set-output name=db::$db"
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup Extension composer dependencies
|
||||||
|
run: composer install
|
||||||
|
working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: ${{ matrix.MYISAM != 1 && '0' || '1' }}
|
||||||
|
run: .github/setup-database.sh $DB $MYISAM
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup PHPUnit files
|
||||||
|
run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
# END MySQL and MariaDB Job
|
||||||
|
|
||||||
|
# START PostgreSQL Job
|
||||||
|
postgres-tests:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:9.5"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:9.6"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:10"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:11"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:12"
|
||||||
|
- php: '7.1'
|
||||||
|
db: "postgres:13"
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: ${{ matrix.db != 'postgres:9.5' && matrix.db != 'postgres:9.6' && matrix.db != 'postgres:10' && matrix.db != 'postgres:11' && matrix.db != 'postgres:12' && matrix.db != 'postgres:13' && 'postgres:10' || matrix.db }}
|
||||||
|
env:
|
||||||
|
POSTGRES_HOST: localhost
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
options: >-
|
||||||
|
-v /var/run/postgresql:/var/run/postgresql
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout phpBB
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: phpbb/phpbb
|
||||||
|
ref: ${{ env.PHPBB_BRANCH }}
|
||||||
|
path: phpBB3
|
||||||
|
|
||||||
|
- name: Checkout extension
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
echo "::set-output name=db::$db"
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup Extension composer dependencies
|
||||||
|
run: composer install
|
||||||
|
working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: '0'
|
||||||
|
run: .github/setup-database.sh $DB $MYISAM
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup PHPUnit files
|
||||||
|
run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
# END PostgreSQL Job
|
||||||
|
|
||||||
|
# START Other Tests Job (SQLite 3 and mssql)
|
||||||
|
other-tests:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- php: '7.1'
|
||||||
|
db: "sqlite3"
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mcr.microsoft.com/mssql/server:2017-latest"
|
||||||
|
db_alias: 'MSSQL 2017'
|
||||||
|
- php: '7.2'
|
||||||
|
db: "mcr.microsoft.com/mssql/server:2019-latest"
|
||||||
|
db_alias: 'MSSQL 2019'
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
mssql:
|
||||||
|
image: ${{ matrix.db != 'mcr.microsoft.com/mssql/server:2017-latest' && matrix.db != 'mcr.microsoft.com/mssql/server:2019-latest' && 'mcr.microsoft.com/mssql/server:2017-latest' || matrix.db }}
|
||||||
|
env:
|
||||||
|
SA_PASSWORD: "Pssw0rd_12"
|
||||||
|
ACCEPT_EULA: "y"
|
||||||
|
ports:
|
||||||
|
- 1433:1433
|
||||||
|
options: >-
|
||||||
|
--health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'Pssw0rd_12' -Q \"Use [master]; CREATE DATABASE [phpbb_tests] COLLATE Latin1_General_CI_AS\" || exit 1"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
--health-start-period 10s
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
options: >-
|
||||||
|
--health-cmd "redis-cli ping"
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout phpBB
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: phpbb/phpbb
|
||||||
|
ref: ${{ env.PHPBB_BRANCH }}
|
||||||
|
path: phpBB3
|
||||||
|
|
||||||
|
- name: Checkout extension
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- id: database-type
|
||||||
|
env:
|
||||||
|
MATRIX_DB: ${{ matrix.db }}
|
||||||
|
run: |
|
||||||
|
if [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2017-latest' ] || [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2019-latest' ]
|
||||||
|
then
|
||||||
|
db='mssql'
|
||||||
|
else
|
||||||
|
db=$(echo "${MATRIX_DB%%:*}")
|
||||||
|
fi
|
||||||
|
echo "::set-output name=db::$db"
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, mysqli, sqlite, pdo_sqlite, intl, gd, exif, iconv, sqlsrv, pdo_sqlsrv, ldap
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Setup environment for phpBB
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
PHP_VERSION: ${{ matrix.php }}
|
||||||
|
NOTESTS: '0'
|
||||||
|
run: .github/setup-phpbb.sh $DB $PHP_VERSION ${NOTESTS:-0}
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup Extension composer dependencies
|
||||||
|
run: composer install
|
||||||
|
working-directory: phpBB3/phpBB/ext/${{ env.EXTNAME }}
|
||||||
|
|
||||||
|
- name: Setup database
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
MYISAM: '0'
|
||||||
|
run: .github/setup-database.sh $DB $MYISAM
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Setup PHPUnit files
|
||||||
|
run: mkdir -p phpBB/ext/$EXTNAME/.github && cp .github/phpunit* $_
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
env:
|
||||||
|
DB: ${{steps.database-type.outputs.db}}
|
||||||
|
run: phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/.github/phpunit-$DB-github.xml --bootstrap ./tests/bootstrap.php
|
||||||
|
working-directory: ./phpBB3
|
||||||
|
# END Other Tests Job
|
||||||
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/.idea/*
|
||||||
|
/tests/test_config.php
|
||||||
|
/vendor/
|
||||||
|
/build/
|
||||||
24
README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Board3 Portal 2.3.x
|
||||||
|
|
||||||
|
Board Portal 2.3.x is a second generation portal for phpBB 3.3.x. It adds a portal with several blocks to your forum.
|
||||||
|
You can change the settings, move the blocks, add new blocks and more in the ACP.
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
|
||||||
|
You can download the current development version of Board3 Portal 2.3.x here or download the current release at [www.board3.de](https://www.board3.de/ "Board3 • Portal").
|
||||||
|
Board3 Portal 2.3.x can be installed via the phpBB 3.3 ACP.
|
||||||
|
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
Support for Board3 Portal can be found at [www.board3.de](https://www.board3.de/ "Board3 • Portal") or on [www.phpbb.com](https://www.phpbb.com/customise/db/mod/board3_portal/support/ "phpBB • Board3 Portal").
|
||||||
|
|
||||||
|
## Wiki
|
||||||
|
|
||||||
|
A wiki with some basic information can be found here: https://github.com/board3/Board3-Portal/wiki
|
||||||
|
|
||||||
|
## AUTOMATED TESTING
|
||||||
|
|
||||||
|
We are starting to have unit and functional tests in order to prevent regressions. You can check our GitHub Actions builds below.
|
||||||
|
|
||||||
|
master - [](https://github.com/board3/Board3-Portal/actions/workflows/tests.yml)
|
||||||
29
acp/portal_info.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\acp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package module_install
|
||||||
|
*/
|
||||||
|
class portal_info
|
||||||
|
{
|
||||||
|
public function module()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'filename' => '\board3\portal\acp\portal_module',
|
||||||
|
'title' => 'ACP_PORTAL',
|
||||||
|
'version' => '2.1.0',
|
||||||
|
'modes' => array(
|
||||||
|
'config' => array('title' => 'ACP_PORTAL_GENERAL_INFO', 'auth' => 'ext_board3/portal && acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
|
||||||
|
'modules' => array('title' => 'ACP_PORTAL_MODULES', 'auth' => 'ext_board3/portal && acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
708
acp/portal_module.php
Normal file
@@ -0,0 +1,708 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\acp;
|
||||||
|
|
||||||
|
class portal_module
|
||||||
|
{
|
||||||
|
public $u_action;
|
||||||
|
public $new_config = [];
|
||||||
|
|
||||||
|
/** @var \board3\portal\modules\module_interface */
|
||||||
|
protected $c_class;
|
||||||
|
|
||||||
|
protected $db, $user, $cache, $template, $display_vars, $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container;
|
||||||
|
protected $root_path, $request, $php_ext, $portal_helper, $modules_helper, $log, $portal_columns;
|
||||||
|
|
||||||
|
/** @var \board3\portal\portal\modules\manager */
|
||||||
|
protected $modules_manager;
|
||||||
|
|
||||||
|
/** @var \board3\portal\portal\modules\constraints_handler */
|
||||||
|
protected $modules_constraints;
|
||||||
|
|
||||||
|
/** @var \board3\portal\controller\helper */
|
||||||
|
protected $board3_controller_helper;
|
||||||
|
|
||||||
|
/** @var int Board3 module enabled */
|
||||||
|
const B3_MODULE_ENABLED = 1;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $db, $user, $cache, $request, $template, $table_prefix;
|
||||||
|
global $config, $phpbb_root_path, $phpbb_admin_path, $phpbb_container, $phpEx, $phpbb_log;
|
||||||
|
|
||||||
|
$user->add_lang_ext('board3/portal', array('portal', 'portal_acp'));
|
||||||
|
|
||||||
|
$this->root_path = $phpbb_root_path . 'ext/board3/portal/';
|
||||||
|
|
||||||
|
$this->db = $db;
|
||||||
|
$this->user = $user;
|
||||||
|
$this->cache = $cache;
|
||||||
|
$this->template = $template;
|
||||||
|
$this->config = $config;
|
||||||
|
$this->request = $request;
|
||||||
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
|
$this->phpbb_admin_path = $phpbb_admin_path;
|
||||||
|
$this->php_ext = $phpEx;
|
||||||
|
$this->phpbb_container = $phpbb_container;
|
||||||
|
$this->portal_helper = $this->phpbb_container->get('board3.portal.helper');
|
||||||
|
$this->modules_helper = $this->phpbb_container->get('board3.portal.modules_helper');
|
||||||
|
$this->log = $phpbb_log;
|
||||||
|
$this->portal_columns = $this->phpbb_container->get('board3.portal.columns');
|
||||||
|
$this->modules_manager = $this->phpbb_container->get('board3.portal.modules.manager');
|
||||||
|
$this->modules_constraints = $this->phpbb_container->get('board3.portal.modules.constraints_handler');
|
||||||
|
$this->board3_controller_helper = $this->phpbb_container->get('board3.portal.controller_helper');
|
||||||
|
|
||||||
|
if (!defined('PORTAL_MODULES_TABLE'))
|
||||||
|
{
|
||||||
|
define('PORTAL_MODULES_TABLE', $this->phpbb_container->getParameter('board3.portal.modules.table'));
|
||||||
|
define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.portal.config.table'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('obtain_portal_config'))
|
||||||
|
{
|
||||||
|
include($this->root_path . 'includes/functions.' . $this->php_ext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function main($id, $mode)
|
||||||
|
{
|
||||||
|
$submit = ($this->request->is_set_post('submit')) ? true : false;
|
||||||
|
|
||||||
|
$form_key = 'acp_portal';
|
||||||
|
add_form_key($form_key);
|
||||||
|
|
||||||
|
// Setup modules manager class
|
||||||
|
$this->modules_manager->set_u_action($this->u_action)
|
||||||
|
->set_acp_class(__CLASS__);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validation types are:
|
||||||
|
* string, int, bool,
|
||||||
|
* script_path (absolute path in url - beginning with / and no trailing slash),
|
||||||
|
* rpath (relative), rwpath (realtive, writeable), path (relative path, but able to escape the root), wpath (writeable)
|
||||||
|
*/
|
||||||
|
switch ($mode)
|
||||||
|
{
|
||||||
|
case 'config':
|
||||||
|
$display_vars = array(
|
||||||
|
'title' => 'ACP_PORTAL_GENERAL_TITLE',
|
||||||
|
'vars' => array(
|
||||||
|
'legend1' => 'ACP_PORTAL_CONFIG_INFO',
|
||||||
|
'board3_enable' => array('lang' => 'PORTAL_ENABLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'board3_left_column' => array('lang' => 'PORTAL_LEFT_COLUMN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'board3_right_column' => array('lang' => 'PORTAL_RIGHT_COLUMN', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'board3_display_jumpbox' => array('lang' => 'PORTAL_DISPLAY_JUMPBOX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
|
||||||
|
'legend2' => 'ACP_PORTAL_COLUMN_WIDTH_SETTINGS',
|
||||||
|
'board3_left_column_width' => ['lang' => 'PORTAL_LEFT_COLUMN_WIDTH', 'validate' => 'int', 'type' => 'number:150:400', 'explain' => true, 'append' => ' ' . $this->user->lang('PIXEL')],
|
||||||
|
'board3_right_column_width' => ['lang' => 'PORTAL_RIGHT_COLUMN_WIDTH', 'validate' => 'int', 'type' => 'number:150:400', 'explain' => true, 'append' => ' ' . $this->user->lang('PIXEL')],
|
||||||
|
|
||||||
|
'legend3' => 'ACP_PORTAL_SHOW_ALL',
|
||||||
|
'board3_show_all_pages' => array('lang' => 'ACP_PORTAL_SHOW_ALL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
|
||||||
|
'board3_show_all_side' => array('lang' => 'PORTAL_SHOW_ALL_SIDE', 'validate' => 'bool', 'type' => 'custom', 'method' => array('board3.portal.modules_helper', 'display_left_right'), 'submit' => array('board3.portal.modules_helper', 'store_left_right'), 'explain' => true),
|
||||||
|
|
||||||
|
'legend4' => 'ACP_FA',
|
||||||
|
'board3_fa_styles' => array('lang' => 'ACP_FA', 'validate' => 'string', 'type' => 'custom', 'method' => array('board3.portal.modules_helper', 'display_fa_styles'), 'submit' => array('board3.portal.modules_helper', 'store_fa_styles'), 'explain' => true),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$module_id = $this->request->variable('module_id', 0);
|
||||||
|
if ($module_id)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . PORTAL_MODULES_TABLE . '
|
||||||
|
WHERE module_id = ' . (int) $module_id;
|
||||||
|
$result = $this->db->sql_query_limit($sql, 1);
|
||||||
|
$module_data = $this->db->sql_fetchrow($result);
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
if ($module_data !== false)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!($this->c_class = $this->portal_helper->get_module($module_data['module_classname'])))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load module language
|
||||||
|
$this->board3_controller_helper->load_module_language($this->c_class);
|
||||||
|
|
||||||
|
$module_name = $this->user->lang[$this->c_class->get_name()];
|
||||||
|
$display_vars = $this->c_class->get_template_acp($module_id);
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'MODULE_NAME' => (isset($this->c_class->hide_name) && $this->c_class->hide_name == true)? '' : $module_data['module_name'],
|
||||||
|
'MODULE_IMAGE' => $module_data['module_image_src'],
|
||||||
|
'MODULE_IMAGE_WIDTH' => $module_data['module_image_width'],
|
||||||
|
'MODULE_IMAGE_HEIGHT' => $module_data['module_image_height'],
|
||||||
|
'MODULE_IMAGE_SRC' => ($module_data['module_image_src']) ? $this->root_path . 'styles/all/theme/images/portal/' . $module_data['module_image_src'] : '',
|
||||||
|
'MODULE_FA' => $module_data['module_fa_icon'],
|
||||||
|
'MODULE_FA_SIZE' => $module_data['module_fa_size'],
|
||||||
|
'MODULE_ENABLED' => ($module_data['module_status']) ? true : false,
|
||||||
|
'MODULE_SHOW_IMAGE' => (in_array($this->portal_columns->number_to_string($module_data['module_column']), array(''))) ? false : true,
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($module_data['module_classname'] != '\board3\portal\modules\custom')
|
||||||
|
{
|
||||||
|
$groups_ary = explode(',', $module_data['module_group_ids']);
|
||||||
|
|
||||||
|
// get group info from database and assign the block vars
|
||||||
|
$sql = 'SELECT group_id, group_name
|
||||||
|
FROM ' . GROUPS_TABLE . '
|
||||||
|
ORDER BY group_id ASC';
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
while ($row = $this->db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$this->template->assign_block_vars('permission_setting', array(
|
||||||
|
'SELECTED' => (in_array($row['group_id'], $groups_ary)) ? true : false,
|
||||||
|
'GROUP_NAME' => (isset($this->user->lang['G_' . $row['group_name']])) ? $this->user->lang['G_' . $row['group_name']] : $row['group_name'],
|
||||||
|
'GROUP_ID' => $row['group_id'],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_var('SHOW_MODULE_OPTIONS', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->new_config = $this->config;
|
||||||
|
$cfg_array = ($this->request->is_set('config')) ? $this->request->variable('config', array('' => ''), true) : $this->new_config;
|
||||||
|
$error = array();
|
||||||
|
|
||||||
|
// We validate the complete config if wished
|
||||||
|
validate_config_vars($display_vars['vars'], $cfg_array, $error);
|
||||||
|
if ($submit && !check_form_key($form_key))
|
||||||
|
{
|
||||||
|
$error[] = $this->user->lang['FORM_INVALID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not write values if there is an error
|
||||||
|
if (sizeof($error))
|
||||||
|
{
|
||||||
|
$submit = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset module
|
||||||
|
$reset_module = $this->request->variable('module_reset', 0);
|
||||||
|
|
||||||
|
if ($reset_module && !empty($module_data))
|
||||||
|
{
|
||||||
|
$this->modules_manager->reset_module($id, $mode, $module_id, $module_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We go through the display_vars to make sure no one is trying to set variables he/she is not allowed to...
|
||||||
|
foreach ($display_vars['vars'] as $config_name => $null)
|
||||||
|
{
|
||||||
|
if ($submit && ((isset($null['type']) && $null['type'] == 'custom') || (isset($null['submit_type']) && $null['submit_type'] == 'custom')))
|
||||||
|
{
|
||||||
|
if (!is_array($null['submit']))
|
||||||
|
{
|
||||||
|
if (method_exists($this->c_class, $null['submit']))
|
||||||
|
{
|
||||||
|
$func = array($this->c_class, $null['submit']);
|
||||||
|
$args = ($module_id != 0) ? array($config_name, $module_id) : $config_name;
|
||||||
|
}
|
||||||
|
else if (function_exists($null['submit']))
|
||||||
|
{
|
||||||
|
$func = $null['submit'];
|
||||||
|
$args = ($module_id != 0) ? array($cfg_array[$config_name], $config_name, $module_id) : $config_name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new \RuntimeException($this->user->lang('UNKNOWN_MODULE_METHOD', $module_data['module_classname']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($null['submit'][0] == 'board3.portal.modules_helper')
|
||||||
|
{
|
||||||
|
$func = array($this->modules_helper, $null['submit'][1]);
|
||||||
|
$args = ($module_id != 0) ? array($config_name, $module_id) : array($config_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$args = ($module_id != 0) ? array($cfg_array[$config_name], $config_name, $module_id) : array($config_name);
|
||||||
|
$func = $null['submit'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
call_user_func_array($func, $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($null['type']) && $null['type'] == 'custom')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
|
||||||
|
|
||||||
|
if ($submit)
|
||||||
|
{
|
||||||
|
$this->config->set($config_name, $config_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($submit)
|
||||||
|
{
|
||||||
|
$module_permission = $this->request->variable('permission-setting', array(0 => ''));
|
||||||
|
$groups_ary = array();
|
||||||
|
|
||||||
|
// get groups and check if the selected groups actually exist
|
||||||
|
$sql = 'SELECT group_id
|
||||||
|
FROM ' . GROUPS_TABLE . '
|
||||||
|
ORDER BY group_id ASC';
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
while ($row = $this->db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$groups_ary[] = $row['group_id'];
|
||||||
|
}
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$module_permission = array_intersect($module_permission, $groups_ary);
|
||||||
|
$module_permission = implode(',', $module_permission);
|
||||||
|
|
||||||
|
$sql_ary = array(
|
||||||
|
'module_image_src' => $this->request->variable('module_image', ''),
|
||||||
|
'module_image_width' => $this->request->variable('module_img_width', 16),
|
||||||
|
'module_image_height' => $this->request->variable('module_img_height', 16),
|
||||||
|
'module_fa_icon' => $this->request->variable('module_fa', ''),
|
||||||
|
'module_fa_size' => $this->request->variable('module_fa_size', 16),
|
||||||
|
'module_group_ids' => $module_permission,
|
||||||
|
'module_status' => $this->request->variable('module_status', self::B3_MODULE_ENABLED),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!(isset($this->c_class->hide_name) && $this->c_class->hide_name == true))
|
||||||
|
{
|
||||||
|
$sql_ary['module_name'] = $this->request->variable('module_name', '', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if module image file actually exists
|
||||||
|
$img_error = check_file_src($sql_ary['module_image_src'], '', $module_id, false);
|
||||||
|
|
||||||
|
$sql = 'UPDATE ' . PORTAL_MODULES_TABLE . '
|
||||||
|
SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . '
|
||||||
|
WHERE module_id = ' . (int) $module_id;
|
||||||
|
$this->db->sql_query($sql);
|
||||||
|
|
||||||
|
$this->cache->destroy('sql', PORTAL_MODULES_TABLE);
|
||||||
|
$this->cache->destroy('sql', CONFIG_TABLE);
|
||||||
|
|
||||||
|
if (isset($module_name))
|
||||||
|
{
|
||||||
|
if (isset($module_data) && $module_data['module_classname'] !== '\board3\portal\modules\custom')
|
||||||
|
{
|
||||||
|
$this->log->add('admin', $this->user->data['user_id'], $this->user->data['user_ip'], 'LOG_PORTAL_CONFIG', false, array($module_name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->log->add('admin', $this->user->data['user_id'], $this->user->data['user_ip'], 'LOG_PORTAL_CONFIG', false, array($this->user->lang['ACP_PORTAL_' . strtoupper($mode) . '_INFO']));
|
||||||
|
}
|
||||||
|
trigger_error($this->user->lang['CONFIG_UPDATED'] . ((!empty($img_error) ? '<br /><br />' . $this->user->lang['MODULE_IMAGE_ERROR'] . '<br />' . $img_error : '')) . adm_back_link(($module_id) ? append_sid("{$this->phpbb_admin_path}index.{$this->php_ext}", 'i=\board3\portal\acp\portal_module&mode=modules') : $this->u_action));
|
||||||
|
}
|
||||||
|
|
||||||
|
// show custom HTML files on the settings page of the modules instead of the standard board3 portal one, if chosen by module
|
||||||
|
if (!isset($this->c_class->custom_acp_tpl) || empty($this->c_class->custom_acp_tpl))
|
||||||
|
{
|
||||||
|
$this->tpl_name = 'portal/acp_portal_config';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->tpl_name = 'portal/' . $this->c_class->custom_acp_tpl;
|
||||||
|
}
|
||||||
|
$this->page_title = $display_vars['title'];
|
||||||
|
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'L_TITLE' => $this->user->lang($display_vars['title']),
|
||||||
|
'L_TITLE_EXPLAIN' => (isset($this->user->lang[$display_vars['title'] . '_EXP'])) ? $this->user->lang[$display_vars['title'] . '_EXP'] : '',
|
||||||
|
|
||||||
|
'S_ERROR' => (sizeof($error)) ? true : false,
|
||||||
|
'ERROR_MSG' => implode('<br />', $error),
|
||||||
|
|
||||||
|
'B3P_U_ACTION' => $this->modules_manager->get_module_link('config', $module_id),
|
||||||
|
'B3P_ACP_ROOT' => $this->root_path,
|
||||||
|
));
|
||||||
|
|
||||||
|
// Output relevant page
|
||||||
|
foreach ($display_vars['vars'] as $config_key => $vars)
|
||||||
|
{
|
||||||
|
if (!is_array($vars) && strpos($config_key, 'legend') === false)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($config_key, 'legend') !== false)
|
||||||
|
{
|
||||||
|
$this->template->assign_block_vars('options', array(
|
||||||
|
'S_LEGEND' => true,
|
||||||
|
'LEGEND' => (isset($this->user->lang[$vars])) ? $this->user->lang[$vars] : $vars)
|
||||||
|
);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->new_config[$config_key] = $this->config[$config_key];
|
||||||
|
$type = explode(':', $vars['type']);
|
||||||
|
|
||||||
|
$l_explain = '';
|
||||||
|
if ($vars['explain'])
|
||||||
|
{
|
||||||
|
$l_explain = (isset($this->user->lang[$vars['lang'] . '_EXP'])) ? $this->user->lang[$vars['lang'] . '_EXP'] : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($vars['type'] != 'custom')
|
||||||
|
{
|
||||||
|
$content = build_cfg_template($type, $config_key, $this->new_config, $config_key, $vars);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$args = array($this->new_config[$config_key], $config_key, $module_id);
|
||||||
|
if (!is_array($vars['method']))
|
||||||
|
{
|
||||||
|
$func = array($this->c_class, $vars['method']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($vars['method'][0] == 'board3.portal.modules_helper')
|
||||||
|
{
|
||||||
|
$func = array($this->modules_helper, $vars['method'][1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$func = $vars['method'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$content = call_user_func_array($func, $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($content))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_block_vars('options', array(
|
||||||
|
'KEY' => $config_key,
|
||||||
|
'TITLE' => (isset($this->user->lang[$vars['lang']])) ? $this->user->lang[$vars['lang']] : $vars['lang'],
|
||||||
|
'S_EXPLAIN' => $vars['explain'],
|
||||||
|
'TITLE_EXPLAIN' => $l_explain,
|
||||||
|
'CONTENT' => $content,
|
||||||
|
));
|
||||||
|
|
||||||
|
unset($display_vars['vars'][$config_key]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'modules':
|
||||||
|
$action = $this->request->variable('action', '');
|
||||||
|
$module_id = $this->request->variable('module_id', '');
|
||||||
|
|
||||||
|
// Create an array of already installed modules
|
||||||
|
$portal_modules = obtain_portal_modules();
|
||||||
|
$installed_modules = $module_column = array();
|
||||||
|
|
||||||
|
foreach ($portal_modules as $cur_module)
|
||||||
|
{
|
||||||
|
$installed_modules[] = $cur_module['module_classname'];
|
||||||
|
// Create an array with the columns the module is in
|
||||||
|
$module_column[$cur_module['module_classname']][] = $this->portal_columns->number_to_string($cur_module['module_column']);
|
||||||
|
}
|
||||||
|
$this->modules_constraints->set_module_column($module_column);
|
||||||
|
unset($module_column);
|
||||||
|
|
||||||
|
if ($action == 'move_up')
|
||||||
|
{
|
||||||
|
$this->modules_manager->move_module_vertical($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_UP);
|
||||||
|
}
|
||||||
|
else if ($action == 'move_down')
|
||||||
|
{
|
||||||
|
$this->modules_manager->move_module_vertical($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_DOWN);
|
||||||
|
}
|
||||||
|
else if ($action == 'move_right')
|
||||||
|
{
|
||||||
|
$this->modules_manager->move_module_horizontal($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_RIGHT);
|
||||||
|
}
|
||||||
|
else if ($action == 'move_left')
|
||||||
|
{
|
||||||
|
$this->modules_manager->move_module_horizontal($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_LEFT);
|
||||||
|
}
|
||||||
|
else if ($action == 'delete')
|
||||||
|
{
|
||||||
|
$this->modules_manager->module_delete($id, $mode, $action, $module_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$add_list = $this->request->variable('add', array('' => ''));
|
||||||
|
$add_module = key($add_list);
|
||||||
|
$add_column = $this->request->variable('add_column', $this->portal_columns->string_to_number($add_module));
|
||||||
|
if ($add_column)
|
||||||
|
{
|
||||||
|
$submit = ($this->request->is_set_post('submit')) ? true : false;
|
||||||
|
if ($submit)
|
||||||
|
{
|
||||||
|
$module_classname = $this->request->variable('module_classname', '');
|
||||||
|
|
||||||
|
if (!($this->c_class = $this->portal_helper->get_module($module_classname)))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not add modules that shouldn't be added
|
||||||
|
if (!$this->modules_constraints->can_add_module($this->c_class, $add_column))
|
||||||
|
{
|
||||||
|
trigger_error($this->user->lang('UNABLE_TO_ADD_MODULE') . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not install if module already exists in the
|
||||||
|
// column and it can't be added more than once
|
||||||
|
if (!$this->c_class->can_multi_include() && !$this->modules_constraints->can_move_module($this->portal_columns->number_to_string($add_column), $module_classname))
|
||||||
|
{
|
||||||
|
trigger_error($this->user->lang['MODULE_ADD_ONCE'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'SELECT module_order
|
||||||
|
FROM ' . PORTAL_MODULES_TABLE . '
|
||||||
|
WHERE module_column = ' . (int) $add_column . '
|
||||||
|
ORDER BY module_order DESC';
|
||||||
|
$result = $this->db->sql_query_limit($sql, 1);
|
||||||
|
$module_order = 1 + (int) $this->db->sql_fetchfield('module_order');
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$sql_ary = array(
|
||||||
|
'module_classname' => $module_classname,
|
||||||
|
'module_column' => $add_column,
|
||||||
|
'module_order' => $module_order,
|
||||||
|
'module_name' => $this->c_class->get_name(),
|
||||||
|
'module_image_src' => $this->c_class->get_image(),
|
||||||
|
'module_group_ids' => '',
|
||||||
|
'module_image_height' => 16,
|
||||||
|
'module_image_width' => 16,
|
||||||
|
'module_status' => self::B3_MODULE_ENABLED,
|
||||||
|
);
|
||||||
|
$sql = 'INSERT INTO ' . PORTAL_MODULES_TABLE . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
|
||||||
|
$this->db->sql_query($sql);
|
||||||
|
|
||||||
|
$module_id = $this->db->sql_nextid();
|
||||||
|
|
||||||
|
$error = $this->c_class->install($module_id);
|
||||||
|
|
||||||
|
$this->cache->purge(); // make sure we don't get errors after re-adding a module
|
||||||
|
|
||||||
|
// if something went wrong, handle the errors accordingly and undo the above query
|
||||||
|
if (!empty($error) && $error != true)
|
||||||
|
{
|
||||||
|
if (is_array($error))
|
||||||
|
{
|
||||||
|
$error_output = '';
|
||||||
|
foreach ($error as $cur_error)
|
||||||
|
{
|
||||||
|
$error_output .= $cur_error . '<br />';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error_output = $error;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'DELETE FROM ' . PORTAL_MODULES_TABLE . ' WHERE module_id = ' . (int) $module_id;
|
||||||
|
$this->db->sql_query($sql);
|
||||||
|
|
||||||
|
trigger_error($error_output . adm_back_link($this->u_action));
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_refresh(3, $this->modules_manager->get_module_link('config', $module_id));
|
||||||
|
|
||||||
|
trigger_error($this->user->lang['SUCCESS_ADD'] . adm_back_link($this->u_action));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_var('S_EDIT', true);
|
||||||
|
$fileinfo = $name_ary = array();
|
||||||
|
$modules_list = $this->portal_helper->get_all_modules();
|
||||||
|
|
||||||
|
// Find new modules
|
||||||
|
foreach ($modules_list as $module_class => $module)
|
||||||
|
{
|
||||||
|
// Module can't be added to this column
|
||||||
|
if (!$this->modules_constraints->can_add_module($module, $add_column))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not install if module already exists in the
|
||||||
|
// column and it can't be added more than once
|
||||||
|
if (!$module->can_multi_include() && !$this->modules_constraints->can_move_module($this->portal_columns->number_to_string($add_column), $module_class))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($module->get_allowed_columns() & $this->portal_columns->string_to_constant($add_module))
|
||||||
|
{
|
||||||
|
// Load module language
|
||||||
|
$this->board3_controller_helper->load_module_language($module);
|
||||||
|
|
||||||
|
$fileinfo[] = array(
|
||||||
|
'module' => $module_class,
|
||||||
|
'name' => $this->user->lang[$module->get_name()],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// we sort the $fileinfo array by the name of the modules
|
||||||
|
foreach ($fileinfo as $key => $cur_file)
|
||||||
|
{
|
||||||
|
$name_ary[$key] = $cur_file['name'];
|
||||||
|
}
|
||||||
|
array_multisort($name_ary, SORT_REGULAR, $fileinfo);
|
||||||
|
$options = '';
|
||||||
|
|
||||||
|
foreach ($fileinfo as $module)
|
||||||
|
{
|
||||||
|
$options .= '<option value="' . $module['module'] . '">' . $module['name'] . '</option>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$s_hidden_fields = build_hidden_fields(array(
|
||||||
|
'add_column' => $this->portal_columns->string_to_number($add_module),
|
||||||
|
));
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'S_MODULE_NAMES' => $options,
|
||||||
|
'S_HIDDEN_FIELDS' => $s_hidden_fields,
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($this->request->is_ajax())
|
||||||
|
{
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'S_AJAX_REQUEST' => true,
|
||||||
|
'U_ACTION' => str_replace('&', '&', $this->modules_manager->get_module_link('modules', $module_id)),
|
||||||
|
));
|
||||||
|
$this->template->set_filenames(array(
|
||||||
|
'body' => 'portal/acp_portal_modules.html')
|
||||||
|
);
|
||||||
|
$this->modules_manager->handle_ajax_request(array(
|
||||||
|
'MESSAGE_BODY' => $this->template->assign_display('body'),
|
||||||
|
'MESSAGE_TITLE' => $this->user->lang['ADD_MODULE'],
|
||||||
|
'MESSAGE_TEXT' => $this->user->lang['ADD_MODULE'],
|
||||||
|
|
||||||
|
'YES_VALUE' => $this->user->lang['SUBMIT'],
|
||||||
|
'S_CONFIRM_ACTION' => str_replace('&', '&', $this->modules_manager->get_module_link('modules', $module_id)), //inefficient, rewrite whole function
|
||||||
|
'S_HIDDEN_FIELDS' => $s_hidden_fields
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$portal_modules = obtain_portal_modules();
|
||||||
|
|
||||||
|
foreach ($portal_modules as $row)
|
||||||
|
{
|
||||||
|
if (!($this->c_class = $this->portal_helper->get_module($row['module_classname'])))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load module language
|
||||||
|
$this->board3_controller_helper->load_module_language($this->c_class);
|
||||||
|
|
||||||
|
$template_column = $this->portal_columns->number_to_string($row['module_column']);
|
||||||
|
|
||||||
|
// find out of we can move modules to the left or right
|
||||||
|
if (($this->c_class->get_allowed_columns() & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($row['module_column'] + 1))) || ($this->c_class->get_allowed_columns() & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($row['module_column'] + 2)) && $row['module_column'] != 2))
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* check if we can actually move
|
||||||
|
* this only applies to modules in the center column as the side modules
|
||||||
|
* will automatically skip the center column when moving if they need to
|
||||||
|
*/
|
||||||
|
if ($row['module_classname'] != '\board3\portal\modules\custom')
|
||||||
|
{
|
||||||
|
$column_string = $this->portal_columns->number_to_string($row['module_column'] + 1); // move 1 right
|
||||||
|
|
||||||
|
if ($column_string == 'right' && !$this->modules_constraints->can_move_module(array('left', 'right'), $row['module_classname']))
|
||||||
|
{
|
||||||
|
$move_right = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_right = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_right = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_right = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($this->c_class->get_allowed_columns() & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($row['module_column'] - 1))) || ($this->c_class->get_allowed_columns() & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($row['module_column'] - 2)) && $row['module_column'] != 2))
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* check if we can actually move
|
||||||
|
* this only applies to modules in the center column as the side modules
|
||||||
|
* will automatically skip the center column when moving if they need to
|
||||||
|
*/
|
||||||
|
if ($row['module_classname'] != '\board3\portal\modules\custom')
|
||||||
|
{
|
||||||
|
$column_string = $this->portal_columns->number_to_string($row['module_column'] - 1); // move 1 left
|
||||||
|
|
||||||
|
if ($column_string == 'left' && !$this->modules_constraints->can_move_module(array('left', 'right'), $row['module_classname']))
|
||||||
|
{
|
||||||
|
$move_left = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_left = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_left = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$move_left = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_block_vars('modules_' . $template_column, array(
|
||||||
|
'MODULE_NAME' => (isset($this->user->lang[$row['module_name']])) ? $this->user->lang[$row['module_name']] : $row['module_name'],
|
||||||
|
'MODULE_IMAGE' => ($row['module_image_src']) ? '<img src="' . $this->root_path . 'styles/all/theme/images/portal/' . $row['module_image_src'] . '" alt="' . $this->user->lang['MODULE_IMAGE'] . '" />' : '',
|
||||||
|
'MODULE_ENABLED' => ($row['module_status']) ? true : false,
|
||||||
|
|
||||||
|
'U_DELETE' => $this->modules_manager->get_module_link('modules', $row['module_id']) . '&action=delete&module_classname=' . $row['module_classname'],
|
||||||
|
'U_EDIT' => $this->modules_manager->get_module_link('config', $row['module_id']),
|
||||||
|
'U_MOVE_UP' => $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_up',
|
||||||
|
'U_MOVE_DOWN' => $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_down',
|
||||||
|
'U_MOVE_RIGHT' => ($move_right) ? $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_right' : '',
|
||||||
|
'U_MOVE_LEFT' => ($move_left) ? $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_left' : '',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'ICON_MOVE_LEFT' => '<img src="' . $this->root_path . 'adm/images/icon_left.gif" alt="' . $this->user->lang['MOVE_LEFT'] . '" title="' . $this->user->lang['MOVE_LEFT'] . '" />',
|
||||||
|
'ICON_MOVE_LEFT_DISABLED' => '<img src="' . $this->root_path . 'adm/images/icon_left_disabled.gif" alt="' . $this->user->lang['MOVE_LEFT'] . '" title="' . $this->user->lang['MOVE_LEFT'] . '" />',
|
||||||
|
'ICON_MOVE_RIGHT' => '<img src="' . $this->root_path . 'adm/images/icon_right.gif" alt="' . $this->user->lang['MOVE_RIGHT'] . '" title="' . $this->user->lang['MOVE_RIGHT'] . '" />',
|
||||||
|
'ICON_MOVE_RIGHT_DISABLED' => '<img src="' . $this->root_path . 'adm/images/icon_right_disabled.gif" alt="' . $this->user->lang['MOVE_RIGHT'] . '" title="' . $this->user->lang['MOVE_RIGHT'] . '" />',
|
||||||
|
'B3P_U_ACTION' => $this->modules_manager->get_module_link('modules', $module_id),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->tpl_name = 'portal/acp_portal_modules';
|
||||||
|
$this->page_title = 'ACP_PORTAL_MODULES';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
trigger_error('NO_MODE', E_USER_ERROR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 240 B |
|
Before Width: | Height: | Size: 166 B After Width: | Height: | Size: 166 B |
|
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 241 B |
|
Before Width: | Height: | Size: 166 B After Width: | Height: | Size: 166 B |
439
adm/style/portal/acp_editor.js
Normal file
@@ -0,0 +1,439 @@
|
|||||||
|
/**
|
||||||
|
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||||
|
* Includes unixsafe colour palette selector by SHS`
|
||||||
|
* stripped parts that are useless for the portal
|
||||||
|
*/
|
||||||
|
|
||||||
|
var panels = new Array('options-panel', 'attach-panel', 'poll-panel');
|
||||||
|
var show_panel = 'options-panel';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows the help messages in the helpline window
|
||||||
|
*/
|
||||||
|
function helpline(help)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix a bug involving the TextRange object. From
|
||||||
|
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
|
||||||
|
*/
|
||||||
|
function initInsertions()
|
||||||
|
{
|
||||||
|
var doc;
|
||||||
|
|
||||||
|
if (document.forms[form_name])
|
||||||
|
{
|
||||||
|
doc = document;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
doc = opener.document;
|
||||||
|
}
|
||||||
|
|
||||||
|
var textarea = doc.getElementById(text_name);
|
||||||
|
|
||||||
|
if (is_ie && typeof(baseHeight) != 'number')
|
||||||
|
{
|
||||||
|
textarea.focus();
|
||||||
|
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* bbstyle
|
||||||
|
*/
|
||||||
|
function bbstyle(bbnumber)
|
||||||
|
{
|
||||||
|
if (bbnumber != -1)
|
||||||
|
{
|
||||||
|
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
insert_text('[*]');
|
||||||
|
document.getElementById(text_name).focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply bbcodes
|
||||||
|
*/
|
||||||
|
function bbfontstyle(bbopen, bbclose)
|
||||||
|
{
|
||||||
|
theSelection = false;
|
||||||
|
|
||||||
|
var textarea = document.getElementById(text_name);
|
||||||
|
|
||||||
|
textarea.focus();
|
||||||
|
|
||||||
|
if ((clientVer >= 4) && is_ie && is_win)
|
||||||
|
{
|
||||||
|
// Get text selection
|
||||||
|
theSelection = document.selection.createRange().text;
|
||||||
|
|
||||||
|
if (theSelection)
|
||||||
|
{
|
||||||
|
// Add tags around selection
|
||||||
|
document.selection.createRange().text = bbopen + theSelection + bbclose;
|
||||||
|
document.getElementById(text_name).focus();
|
||||||
|
theSelection = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (document.getElementById(text_name).selectionEnd && (document.getElementById(text_name).selectionEnd - document.getElementById(text_name).selectionStart > 0))
|
||||||
|
{
|
||||||
|
mozWrap(document.getElementById(text_name), bbopen, bbclose);
|
||||||
|
document.getElementById(text_name).focus();
|
||||||
|
theSelection = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//The new position for the cursor after adding the bbcode
|
||||||
|
var caret_pos = getCaretPosition(textarea).start;
|
||||||
|
var new_pos = caret_pos + bbopen.length;
|
||||||
|
|
||||||
|
// Open tag
|
||||||
|
insert_text(bbopen + bbclose);
|
||||||
|
|
||||||
|
// Center the cursor when we don't have a selection
|
||||||
|
// Gecko and proper browsers
|
||||||
|
if (!isNaN(textarea.selectionStart))
|
||||||
|
{
|
||||||
|
textarea.selectionStart = new_pos;
|
||||||
|
textarea.selectionEnd = new_pos;
|
||||||
|
}
|
||||||
|
// IE
|
||||||
|
else if (document.selection)
|
||||||
|
{
|
||||||
|
var range = textarea.createTextRange();
|
||||||
|
range.move("character", new_pos);
|
||||||
|
range.select();
|
||||||
|
storeCaret(textarea);
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea.focus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert text at position
|
||||||
|
*/
|
||||||
|
function insert_text(text, spaces, popup)
|
||||||
|
{
|
||||||
|
var textarea;
|
||||||
|
|
||||||
|
if (!popup)
|
||||||
|
{
|
||||||
|
textarea = document.getElementById(text_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textarea = opener.document.getElementById(text_name);
|
||||||
|
}
|
||||||
|
if (spaces)
|
||||||
|
{
|
||||||
|
text = ' ' + text + ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isNaN(textarea.selectionStart))
|
||||||
|
{
|
||||||
|
var sel_start = textarea.selectionStart;
|
||||||
|
var sel_end = textarea.selectionEnd;
|
||||||
|
|
||||||
|
mozWrap(textarea, text, '')
|
||||||
|
textarea.selectionStart = sel_start + text.length;
|
||||||
|
textarea.selectionEnd = sel_end + text.length;
|
||||||
|
}
|
||||||
|
else if (textarea.createTextRange && textarea.caretPos)
|
||||||
|
{
|
||||||
|
if (baseHeight != textarea.caretPos.boundingHeight)
|
||||||
|
{
|
||||||
|
textarea.focus();
|
||||||
|
storeCaret(textarea);
|
||||||
|
}
|
||||||
|
|
||||||
|
var caret_pos = textarea.caretPos;
|
||||||
|
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textarea.value = textarea.value + text;
|
||||||
|
}
|
||||||
|
if (!popup)
|
||||||
|
{
|
||||||
|
textarea.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add inline attachment at position
|
||||||
|
*/
|
||||||
|
function attach_inline(index, filename)
|
||||||
|
{
|
||||||
|
insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
|
||||||
|
document.getElementById(text_name).focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add quote text to message
|
||||||
|
*/
|
||||||
|
function addquote(post_id, username)
|
||||||
|
{
|
||||||
|
var message_name = 'message_' + post_id;
|
||||||
|
var theSelection = '';
|
||||||
|
var divarea = false;
|
||||||
|
|
||||||
|
if (document.all)
|
||||||
|
{
|
||||||
|
divarea = document.all[message_name];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
divarea = document.getElementById(message_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get text selection - not only the post content :(
|
||||||
|
if (window.getSelection)
|
||||||
|
{
|
||||||
|
theSelection = window.getSelection().toString();
|
||||||
|
}
|
||||||
|
else if (document.getSelection)
|
||||||
|
{
|
||||||
|
theSelection = document.getSelection();
|
||||||
|
}
|
||||||
|
else if (document.selection)
|
||||||
|
{
|
||||||
|
theSelection = document.selection.createRange().text;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null)
|
||||||
|
{
|
||||||
|
if (divarea.innerHTML)
|
||||||
|
{
|
||||||
|
theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
|
||||||
|
theSelection = theSelection.replace(/<br\/>/ig, '\n');
|
||||||
|
theSelection = theSelection.replace(/<\;/ig, '<');
|
||||||
|
theSelection = theSelection.replace(/>\;/ig, '>');
|
||||||
|
theSelection = theSelection.replace(/&\;/ig, '&');
|
||||||
|
theSelection = theSelection.replace(/ \;/ig, ' ');
|
||||||
|
}
|
||||||
|
else if (document.all)
|
||||||
|
{
|
||||||
|
theSelection = divarea.innerText;
|
||||||
|
}
|
||||||
|
else if (divarea.textContent)
|
||||||
|
{
|
||||||
|
theSelection = divarea.textContent;
|
||||||
|
}
|
||||||
|
else if (divarea.firstChild.nodeValue)
|
||||||
|
{
|
||||||
|
theSelection = divarea.firstChild.nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (theSelection)
|
||||||
|
{
|
||||||
|
if (bbcodeEnabled)
|
||||||
|
{
|
||||||
|
insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var lines = split_lines(theSelection);
|
||||||
|
for (i = 0; i < lines.length; i++)
|
||||||
|
{
|
||||||
|
insert_text('> ' + lines[i] + '\n')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function split_lines(text)
|
||||||
|
{
|
||||||
|
var lines = text.split('\n');
|
||||||
|
var splitLines = new Array();
|
||||||
|
var j = 0;
|
||||||
|
for(i = 0; i < lines.length; i++)
|
||||||
|
{
|
||||||
|
if (lines[i].length <= 80)
|
||||||
|
{
|
||||||
|
splitLines[j] = lines[i];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var line = lines[i];
|
||||||
|
do
|
||||||
|
{
|
||||||
|
var splitAt = line.indexOf(' ', 80);
|
||||||
|
|
||||||
|
if (splitAt == -1)
|
||||||
|
{
|
||||||
|
splitLines[j] = line;
|
||||||
|
j++
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
splitLines[j] = line.substring(0, splitAt);
|
||||||
|
line = line.substring(splitAt);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (splitAt != -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return splitLines;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* From http://www.massless.org/mozedit/
|
||||||
|
*/
|
||||||
|
function mozWrap(txtarea, open, close)
|
||||||
|
{
|
||||||
|
var selLength = (typeof(txtarea.textLength) == 'undefined') ? txtarea.value.length : txtarea.textLength;
|
||||||
|
var selStart = txtarea.selectionStart;
|
||||||
|
var selEnd = txtarea.selectionEnd;
|
||||||
|
var scrollTop = txtarea.scrollTop;
|
||||||
|
|
||||||
|
if (selEnd == 1 || selEnd == 2)
|
||||||
|
{
|
||||||
|
selEnd = selLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
var s1 = (txtarea.value).substring(0,selStart);
|
||||||
|
var s2 = (txtarea.value).substring(selStart, selEnd)
|
||||||
|
var s3 = (txtarea.value).substring(selEnd, selLength);
|
||||||
|
|
||||||
|
txtarea.value = s1 + open + s2 + close + s3;
|
||||||
|
txtarea.selectionStart = selStart + open.length;
|
||||||
|
txtarea.selectionEnd = selEnd + open.length;
|
||||||
|
txtarea.focus();
|
||||||
|
txtarea.scrollTop = scrollTop;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert at Caret position. Code from
|
||||||
|
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
||||||
|
*/
|
||||||
|
function storeCaret(textEl)
|
||||||
|
{
|
||||||
|
if (textEl.createTextRange)
|
||||||
|
{
|
||||||
|
textEl.caretPos = document.selection.createRange().duplicate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Color pallette
|
||||||
|
*/
|
||||||
|
function colorPalette(dir, width, height) {
|
||||||
|
var r = 0,
|
||||||
|
g = 0,
|
||||||
|
b = 0,
|
||||||
|
numberList = new Array(6),
|
||||||
|
color = '',
|
||||||
|
html = '';
|
||||||
|
|
||||||
|
numberList[0] = '00';
|
||||||
|
numberList[1] = '40';
|
||||||
|
numberList[2] = '80';
|
||||||
|
numberList[3] = 'BF';
|
||||||
|
numberList[4] = 'FF';
|
||||||
|
|
||||||
|
html += '<table>';
|
||||||
|
|
||||||
|
for (r = 0; r < 5; r++) {
|
||||||
|
if (dir == 'h') {
|
||||||
|
html += '<tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (g = 0; g < 5; g++) {
|
||||||
|
if (dir == 'v') {
|
||||||
|
html += '<tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
for (b = 0; b < 5; b++) {
|
||||||
|
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
||||||
|
html += '<td style="background-color: #' + color + '; width: ' + width + 'px; height: ' + height + 'px;">';
|
||||||
|
html += '<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;" style="display: block; width: ' + width + 'px; height: ' + height + 'px; " alt="#' + color + '" title="#' + color + '"></a>';
|
||||||
|
html += '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir == 'v') {
|
||||||
|
html += '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir == 'h') {
|
||||||
|
html += '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
html += '</table>';
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#color_palette_placeholder').each(function() {
|
||||||
|
$(this).html(colorPalette('h', 5, 10));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caret Position object
|
||||||
|
*/
|
||||||
|
function caretPosition()
|
||||||
|
{
|
||||||
|
var start = null;
|
||||||
|
var end = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the caret position in an textarea
|
||||||
|
*/
|
||||||
|
function getCaretPosition(txtarea)
|
||||||
|
{
|
||||||
|
var caretPos = new caretPosition();
|
||||||
|
|
||||||
|
// simple Gecko/Opera way
|
||||||
|
if(txtarea.selectionStart || txtarea.selectionStart == 0)
|
||||||
|
{
|
||||||
|
caretPos.start = txtarea.selectionStart;
|
||||||
|
caretPos.end = txtarea.selectionEnd;
|
||||||
|
}
|
||||||
|
// dirty and slow IE way
|
||||||
|
else if(document.selection)
|
||||||
|
{
|
||||||
|
|
||||||
|
// get current selection
|
||||||
|
var range = document.selection.createRange();
|
||||||
|
|
||||||
|
// a new selection of the whole textarea
|
||||||
|
var range_all = document.body.createTextRange();
|
||||||
|
range_all.moveToElementText(txtarea);
|
||||||
|
|
||||||
|
// calculate selection start point by moving beginning of range_all to beginning of range
|
||||||
|
var sel_start;
|
||||||
|
for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
|
||||||
|
{
|
||||||
|
range_all.moveStart('character', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
txtarea.sel_start = sel_start;
|
||||||
|
|
||||||
|
// we ignore the end value for IE, this is already dirty enough and we don't need it
|
||||||
|
caretPos.start = txtarea.sel_start;
|
||||||
|
caretPos.end = txtarea.sel_start;
|
||||||
|
}
|
||||||
|
|
||||||
|
return caretPos;
|
||||||
|
}
|
||||||
206
adm/style/portal/acp_portal_calendar.html
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if S_EDIT %}
|
||||||
|
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_EVENTS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="event_title">{{ lang('EVENT_TITLE') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd><input name="event_title" type="text" id="event_title" value="{{ EVENT_TITLE }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="event_desc">{{ lang('EVENT_DESC') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd><textarea id="event_desc" rows="6" cols="6" name="event_desc">{{ EVENT_DESC }}</textarea></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="event_start_date">{{ lang('ACP_PORTAL_EVENT_START_DATE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_EVENT_START_DATE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input name="event_start_date" type="text" id="event_start_date" value="{{ EVENT_START_DATE }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="event_all_day">{{ lang('EVENT_ALL_DAY') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input onchange="phpbb.toggleDisplay('end', -1)" type="radio" class="radio" name="event_all_day" value="1" id="event_all_day"{% if EVENT_ALL_DAY %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input onchange="phpbb.toggleDisplay('end', 1)" type="radio" class="radio" name="event_all_day" value="0"{% if not EVENT_ALL_DAY %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div id="end"{% if EVENT_ALL_DAY %}style="display: none;"{% endif %}>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="event_end_date">{{ lang('ACP_PORTAL_EVENT_END_DATE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_EVENT_END_DATE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input name="event_end_date" type="text" id="event_end_date" value="{{ EVENT_END_DATE }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="event_url">{{ lang('EVENT_LINK') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('EVENT_LINK_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input name="event_url" type="text" id="event_url" value="{{ EVENT_URL }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="permission-setting-calendar">{{ lang('ACP_PORTAL_CALENDAR_PERMISSION') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_CALENDAR_PERMISSION_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting-calendar" size="10" multiple="multiple" name="permission-setting-calendar[]">
|
||||||
|
{% for permission_setting_calendar in loops.permission_setting_calendar %}
|
||||||
|
<option value="{{ permission_setting_calendar.GROUP_ID }}"{% if permission_setting_calendar.SELECTED %}selected="selected"{% endif %}>{{ permission_setting_calendar.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input type="hidden" name="action" value="save" />
|
||||||
|
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<form id="acp_portal_calendar" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('MODULE_PERMISSIONS') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_PERMISSIONS_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% for options in loops.options %}
|
||||||
|
{% if options.S_LEGEND %}
|
||||||
|
{% if not options.S_FIRST_ROW %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ options.LEGEND }}</legend>
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><label for="{{ options.KEY }}">{{ options.TITLE }}{{ lang('COLON') }}</label>{% if options.S_EXPLAIN %}<br /><span>{{ options.TITLE_EXPLAIN }}</span>{% endif %}</dt>
|
||||||
|
<dd>{{ options.CONTENT }}</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_EVENTS') }}</legend>
|
||||||
|
<fieldset class="tabulated">
|
||||||
|
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add" type="submit" value="{{ lang('ADD_EVENT') }}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="cellspacing: 1;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{ lang('EVENT_TITLE') }}</th>
|
||||||
|
<th>{{ lang('EVENT_DESC') }}</th>
|
||||||
|
<th>{{ lang('EVENT_TIME') }}</th>
|
||||||
|
<th>{{ lang('EVENT_LINK') }}</th>
|
||||||
|
<th>{{ lang('ACTION') }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for events in loops.events %}
|
||||||
|
{% if events.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td style="text-align: center;">{{ events.EVENT_TITLE }}</td>
|
||||||
|
<td style="text-align: center;">{{ events.EVENT_DESC }}</td>
|
||||||
|
<td style="text-align: center;">{% if events.EVENT_END %}{{ lang('EVENT_START') }}{{ lang('COLON') }} {{ events.EVENT_START }} | {{ lang('EVENT_END') }}{{ lang('COLON') }} {{ events.EVENT_END }}{% else %}{{ lang('EVENT_TIME') }}{{ lang('COLON') }} {{ events.EVENT_START }}{% if events.EVENT_ALL_DAY %} | {{ lang('EVENT_ALL_DAY') }}{% endif %}{% endif %}</td>
|
||||||
|
<td style="text-align: center;"><a href="{{ events.EVENT_URL }}" alt="{{ events.EVENT_TITLE }}">{{ events.EVENT_URL_RAW }}</td>
|
||||||
|
<td style="text-align: center;">
|
||||||
|
<a href="{{ events.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ events.U_DELETE }}">{{ ICON_DELETE }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr class="row1">
|
||||||
|
<td style="text-align: center;" colspan="5">{{ lang('NO_EVENTS') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
109
adm/style/portal/acp_portal_config.html
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
{% if MODULE_NAME %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('MODULE_PERMISSIONS') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_PERMISSIONS_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% for options in loops.options %}
|
||||||
|
{% if options.S_LEGEND %}
|
||||||
|
{% if not options.S_FIRST_ROW %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ options.LEGEND }}</legend>
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><label for="{{ options.KEY }}">{{ options.TITLE }}{{ lang('COLON') }}</label>{% if options.S_EXPLAIN %}<br /><span>{{ options.TITLE_EXPLAIN }}</span>{% endif %}</dt>
|
||||||
|
<dd>{{ options.CONTENT }}</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<fieldset>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if S_AUTH %}
|
||||||
|
{% for auth_tpl in loops.auth_tpl %}
|
||||||
|
{{ auth_tpl.TPL }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
239
adm/style/portal/acp_portal_custom.html
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
{% INCLUDEJS 'portal/acp_editor.js' %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
// <![CDATA[
|
||||||
|
/**
|
||||||
|
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||||
|
* Includes unixsafe colour palette selector by SHS`
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Startup variables
|
||||||
|
var imageTag = false;
|
||||||
|
var theSelection = false;
|
||||||
|
|
||||||
|
var bbcodeEnabled = true;
|
||||||
|
// Check for Browser & Platform for PC & IE specific bits
|
||||||
|
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||||
|
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||||
|
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
||||||
|
|
||||||
|
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
|
||||||
|
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
|
||||||
|
var baseHeight;
|
||||||
|
|
||||||
|
var form_name = 'acp_portal_welcome';
|
||||||
|
var text_name = 'custom_code';
|
||||||
|
var load_draft = false;
|
||||||
|
var upload = false;
|
||||||
|
|
||||||
|
// Define the bbCode tags
|
||||||
|
var bbcode = new Array();
|
||||||
|
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'{% for custom_tags in loops.custom_tags %}, {{ custom_tags.BBCODE_NAME }}{% endfor %});
|
||||||
|
var imageTag = false;
|
||||||
|
|
||||||
|
// Helpline messages
|
||||||
|
var help_line = {
|
||||||
|
b: '{{ lang('BBCODE_B_HELP')|escape('js') }}',
|
||||||
|
i: '{{ lang('BBCODE_I_HELP')|escape('js') }}',
|
||||||
|
u: '{{ lang('BBCODE_U_HELP')|escape('js') }}',
|
||||||
|
q: '{{ lang('BBCODE_Q_HELP')|escape('js') }}',
|
||||||
|
c: '{{ lang('BBCODE_C_HELP')|escape('js') }}',
|
||||||
|
l: '{{ lang('BBCODE_L_HELP')|escape('js') }}',
|
||||||
|
o: '{{ lang('BBCODE_O_HELP')|escape('js') }}',
|
||||||
|
p: '{{ lang('BBCODE_P_HELP')|escape('js') }}',
|
||||||
|
w: '{{ lang('BBCODE_W_HELP')|escape('js') }}',
|
||||||
|
a: '{{ lang('BBCODE_A_HELP')|escape('js') }}',
|
||||||
|
s: '{{ lang('BBCODE_S_HELP')|escape('js') }}',
|
||||||
|
f: '{{ lang('BBCODE_F_HELP')|escape('js') }}',
|
||||||
|
e: '{{ lang('BBCODE_E_HELP')|escape('js') }}',
|
||||||
|
d: '{{ lang('BBCODE_D_HELP')|escape('js') }}'
|
||||||
|
{% for custom_tags in loops.custom_tags %}
|
||||||
|
,cb_{{ custom_tags.BBCODE_ID }}: '{{ custom_tags.A_BBCODE_HELPLINE }}'
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
function change_palette()
|
||||||
|
{
|
||||||
|
phpbb.toggleDisplay('colour_palette');
|
||||||
|
e = document.getElementById('colour_palette');
|
||||||
|
|
||||||
|
if (e.style.display == 'block')
|
||||||
|
{
|
||||||
|
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR_HIDE')|escape('js') }}';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR')|escape('js') }}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('ACP_PORTAL_CUSTOM_PERMISSION') }}{{ lang('COLON') }}</label><br /><span>{{ lang('ACP_PORTAL_CUSTOM_PERMISSION_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% if S_PREVIEW %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_CUSTOM_PREVIEW') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt style="border: none; width: 100%;">
|
||||||
|
{{ PREVIEW_TEXT }}
|
||||||
|
</dt>
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('PORTAL_CUSTOM') }}</legend>
|
||||||
|
<dl id="bbcode-buttons"{% if not CUSTOM_USE_BBCODE %} style="display: none;"{% endif %}>
|
||||||
|
<dt></dt>
|
||||||
|
<dd>
|
||||||
|
<div id="colour_palette" style="display: none;">
|
||||||
|
<dl style="clear: left;">
|
||||||
|
<dt style="border: none;"><label>{{ lang('FONT_COLOR') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd></dd>
|
||||||
|
</dl>
|
||||||
|
<dl style="clear: left;">
|
||||||
|
<dt id="color_palette_placeholder" style="border: none;"></dt>
|
||||||
|
<dd></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<div id="format-buttons">
|
||||||
|
<input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{{ lang('BBCODE_B_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{{ lang('BBCODE_I_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{{ lang('BBCODE_U_HELP') }}" />
|
||||||
|
{% if S_BBCODE_QUOTE %}
|
||||||
|
<input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{{ lang('BBCODE_Q_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{{ lang('BBCODE_C_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{{ lang('BBCODE_L_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{{ lang('BBCODE_O_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{{ lang('BBCODE_LISTITEM_HELP') }}" />
|
||||||
|
{% if S_BBCODE_IMG %}
|
||||||
|
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{{ lang('BBCODE_P_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if S_LINKS_ALLOWED %}
|
||||||
|
<input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{{ lang('BBCODE_W_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if S_BBCODE_FLASH %}
|
||||||
|
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{{ lang('BBCODE_D_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
<select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{{ lang('BBCODE_F_HELP') }}">
|
||||||
|
<option value="50">{{ lang('FONT_TINY') }}</option>
|
||||||
|
<option value="85">{{ lang('FONT_SMALL') }}</option>
|
||||||
|
<option value="100" selected="selected">{{ lang('FONT_NORMAL') }}</option>
|
||||||
|
{% if not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 %}
|
||||||
|
<option value="150">{{ lang('FONT_LARGE') }}</option>
|
||||||
|
{% if not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 %}
|
||||||
|
<option value="200">{{ lang('FONT_HUGE') }}</option>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</select>
|
||||||
|
<input type="button" class="button2" name="bbpalette" id="bbpalette" value="{{ lang('FONT_COLOR') }}" onclick="change_palette();" title="{{ lang('BBCODE_S_HELP') }}" />
|
||||||
|
{% for custom_tags in loops.custom_tags %}
|
||||||
|
<input type="button" class="button2" name="addbbcode{{ custom_tags.BBCODE_ID }}" value="{{ custom_tags.BBCODE_TAG }}" onclick="bbstyle({{ custom_tags.BBCODE_ID }})" title="{{ custom_tags.BBCODE_HELPLINE }}" />
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="custom_code">{{ lang('ACP_PORTAL_CUSTOM_CODE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_CUSTOM_CODE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><textarea name="custom_code" id="custom_code" cols="6" rows="12">{{ CUSTOM_CODE }}</textarea></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="custom_use_bbcode">{{ lang('ACP_PORTAL_CUSTOM_BBCODE') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_CUSTOM_BBCODE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<label><input onchange="phpbb.toggleDisplay('bbcode-buttons', 1)" class="radio" type="radio" value="1" name="custom_use_bbcode" id="custom_use_bbcode"{% if CUSTOM_USE_BBCODE %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input onchange="phpbb.toggleDisplay('bbcode-buttons', -1)" class="radio" type="radio" value="0" name="custom_use_bbcode"{% if not CUSTOM_USE_BBCODE %} checked="checked"{% endif %} />{{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if S_AUTH %}
|
||||||
|
{% for auth_tpl in loops.auth_tpl %}
|
||||||
|
{{ auth_tpl.TPL }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}" />
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
187
adm/style/portal/acp_portal_links.html
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if S_EDIT %}
|
||||||
|
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="link_title">{{ lang('ACP_PORTAL_LINK_TITLE') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd><input name="link_title" type="text" id="link_title" value="{{ LINK_TITLE }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="link_type">{{ lang('ACP_PORTAL_LINK_TYPE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_LINK_TYPE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="link_type" value="1" id="link_type"{% if S_LINK_IS_INT %} checked="checked"{% endif %} />{{ lang('ACP_PORTAL_LINK_INT') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="link_type" value="2"{% if not S_LINK_IS_INT %} checked="checked"{% endif %} /> {{ lang('ACP_PORTAL_LINK_EXT') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="link_url">{{ lang('ACP_PORTAL_LINK_URL') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_LINK_URL_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input name="link_url" type="text" id="link_url" value="{{ LINK_URL }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="permission-setting-link">{{ lang('ACP_PORTAL_LINK_PERMISSION') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_LINK_PERMISSION_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting-link" size="10" multiple="multiple" name="permission-setting-link[]">
|
||||||
|
{% for permission_setting_link in loops.permission_setting_link %}
|
||||||
|
<option value="{{ permission_setting_link.GROUP_ID }}"{% if permission_setting_link.SELECTED %}selected="selected"{% endif %}>{{ permission_setting_link.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input type="hidden" name="action" value="save" />
|
||||||
|
{% if LINK_ID !== '' %}<input type="hidden" name="id" value="{{ LINK_ID }}" />{% endif %}
|
||||||
|
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('MODULE_PERMISSIONS') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_PERMISSIONS_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% for options in loops.options %}
|
||||||
|
{% if options.S_LEGEND %}
|
||||||
|
{% if not options.S_FIRST_ROW %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ options.LEGEND }}</legend>
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><label for="{{ options.KEY }}">{{ options.TITLE }}{{ lang('COLON') }}</label>{% if options.S_EXPLAIN %}<br /><span>{{ options.TITLE_EXPLAIN }}</span>{% endif %}</dt>
|
||||||
|
<dd>{{ options.CONTENT }}</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<fieldset>
|
||||||
|
{% endfor %}
|
||||||
|
<fieldset class="tabulated">
|
||||||
|
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
|
||||||
|
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add" type="submit" value="{{ lang('ACP_PORTAL_LINK_ADD') }}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="cellspacing: 1;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{ lang('ACP_PORTAL_LINK_TITLE') }}</th>
|
||||||
|
<th>{{ lang('ACP_PORTAL_LINK_URL') }}</th>
|
||||||
|
<th>{{ lang('ACTION') }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for links in loops.links %}
|
||||||
|
{% if links.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td style="text-align: center;"{% if links.S_LINK_IS_CAT %} class="row3" colspan="2"{% endif %}>{{ links.LINK_TITLE }}</td>
|
||||||
|
{% if not links.S_LINK_IS_CAT %}<td style="text-align: center;">{{ links.LINK_URL }}</td>{% endif %}
|
||||||
|
<td style="text-align: center;">
|
||||||
|
{% if links.S_FIRST_ROW %}{{ ICON_MOVE_UP_DISABLED }}{% else %}<a href="{{ links.U_MOVE_UP }}">{{ ICON_MOVE_UP }}</a>{% endif %}
|
||||||
|
{% if links.S_LAST_ROW %}{{ ICON_MOVE_DOWN_DISABLED }}{% else %}<a href="{{ links.U_MOVE_DOWN }}">{{ ICON_MOVE_DOWN }}</a>{% endif %}
|
||||||
|
<a href="{{ links.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ links.U_DELETE }}">{{ ICON_DELETE }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr class="row1">
|
||||||
|
<td style="text-align: center;" colspan="3">{{ lang('LINKS_NO_LINKS') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
194
adm/style/portal/acp_portal_menu.html
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if S_EDIT %}
|
||||||
|
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_MENU_LINK_SETTINGS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="link_title">{{ lang('ACP_PORTAL_MENU_TITLE') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd><input name="link_title" type="text" id="link_title" value="{{ LINK_TITLE }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="link_is_cat">{{ lang('ACP_PORTAL_MENU_IS_CAT') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd><label><input onchange="phpbb.toggleDisplay('url', -1)" type="radio" class="radio" name="link_is_cat" value="1" id="link_is_cat"{% if S_LINK_IS_CAT %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input onchange="phpbb.toggleDisplay('url', 1)" type="radio" class="radio" name="link_is_cat" value="0"{% if not S_LINK_IS_CAT %} checked="checked"{% endif %} /> {{ lang('NO') }}</label></dd>
|
||||||
|
</dl>
|
||||||
|
<div id="url"{% if S_LINK_IS_CAT %} style="display: none;"{% endif %}>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="link_type">{{ lang('ACP_PORTAL_MENU_TYPE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_MENU_TYPE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="link_type" value="1" id="link_type"{% if S_LINK_IS_INT %} checked="checked"{% endif %} />{{ lang('ACP_PORTAL_MENU_INT') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="link_type" value="2"{% if not S_LINK_IS_INT %} checked="checked"{% endif %} /> {{ lang('ACP_PORTAL_MENU_EXT') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="link_url">{{ lang('ACP_PORTAL_MENU_URL') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_MENU_URL_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><input name="link_url" type="text" id="link_url" value="{{ LINK_URL }}" maxlength="255" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="permission-setting-menu">{{ lang('ACP_PORTAL_MENU_PERMISSION') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_MENU_PERMISSION_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting-menu" size="10" multiple="multiple" name="permission-setting-menu[]">
|
||||||
|
{% for permission_setting_menu in loops.permission_setting_menu %}
|
||||||
|
<option value="{{ permission_setting_menu.GROUP_ID }}"{% if permission_setting_menu.SELECTED %}selected="selected"{% endif %}>{{ permission_setting_menu.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input type="hidden" name="action" value="save" />
|
||||||
|
{% if LINK_ID !== '' %}<input type="hidden" name="id" value="{{ LINK_ID }}" />{% endif %}
|
||||||
|
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('MODULE_PERMISSIONS') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_PERMISSIONS_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% for options in loops.options %}
|
||||||
|
{% if options.S_LEGEND %}
|
||||||
|
{% if not options.S_FIRST_ROW %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ options.LEGEND }}</legend>
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><label for="{{ options.KEY }}">{{ options.TITLE }}{{ lang('COLON') }}</label>{% if options.S_EXPLAIN %}<br /><span>{{ options.TITLE_EXPLAIN }}</span>{% endif %}</dt>
|
||||||
|
<dd>{{ options.CONTENT }}</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<fieldset>
|
||||||
|
{% endfor %}
|
||||||
|
<fieldset class="tabulated">
|
||||||
|
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
|
||||||
|
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add" type="submit" value="{{ lang('ACP_PORTAL_MENU_ADD') }}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="cellspacing: 1;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{ lang('ACP_PORTAL_MENU_TITLE') }}</th>
|
||||||
|
<th>{{ lang('ACP_PORTAL_MENU_URL') }}</th>
|
||||||
|
<th>{{ lang('ACTION') }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for links in loops.links %}
|
||||||
|
{% if links.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td style="text-align: center;"{% if links.S_LINK_IS_CAT %} class="row3" colspan="2"{% endif %}>{{ links.LINK_TITLE }}</td>
|
||||||
|
{% if not links.S_LINK_IS_CAT %}<td style="text-align: center;">{{ links.LINK_URL }}</td>{% endif %}
|
||||||
|
<td style="text-align: center;">
|
||||||
|
{% if links.S_FIRST_ROW %}{{ ICON_MOVE_UP_DISABLED }}{% else %}<a href="{{ links.U_MOVE_UP }}">{{ ICON_MOVE_UP }}</a>{% endif %}
|
||||||
|
{% if links.S_LAST_ROW %}{{ ICON_MOVE_DOWN_DISABLED }}{% else %}<a href="{{ links.U_MOVE_DOWN }}">{{ ICON_MOVE_DOWN }}</a>{% endif %}
|
||||||
|
<a href="{{ links.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ links.U_DELETE }}">{{ ICON_DELETE }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr class="row1">
|
||||||
|
<td style="text-align: center;" colspan="3">{{ lang('MENU_NO_LINKS') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
206
adm/style/portal/acp_portal_modules.html
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
{% if S_AJAX_REQUEST %}
|
||||||
|
<form id="acp_portal_modules" method="post" action="{{ U_ACTION }}">
|
||||||
|
<fieldset>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_classname" style="display: inline;">{{ lang('CHOOSE_MODULE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('CHOOSE_MODULE_EXP') }}</span></dt>
|
||||||
|
<dd><select name="module_classname" id="module_classname">{{ S_MODULE_NAMES }}</select></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
{{ S_FORM_TOKEN }}{{ S_HIDDEN_FIELDS }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
{% INCLUDECSS 'portal/b3p_admin.css' %}
|
||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
{% if S_EDIT %}
|
||||||
|
|
||||||
|
<h1>{{ lang('ACP_PORTAL_MODULES') }}</h1>
|
||||||
|
<p>{{ lang('ACP_PORTAL_MODULES_EXP') }}</p>
|
||||||
|
|
||||||
|
<form id="acp_portal_modules" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
<fieldset>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_classname">{{ lang('CHOOSE_MODULE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('CHOOSE_MODULE_EXP') }}</span></dt>
|
||||||
|
<dd><select name="module_classname" id="module_classname">{{ S_MODULE_NAMES }}</select></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
{{ S_FORM_TOKEN }}{{ S_HIDDEN_FIELDS }}
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
<h1>{{ lang('ACP_PORTAL_MODULES') }}</h1>
|
||||||
|
<p>{{ lang('ACP_PORTAL_MODULES_EXP') }}</p>
|
||||||
|
|
||||||
|
<form id="acp_portal_modules" method="post" action="{{ B3P_U_ACTION }}" data-ajax="true">
|
||||||
|
<fieldset class="tabulated">
|
||||||
|
<legend>{{ lang('ACP_PORTAL_MODULES') }}</legend>
|
||||||
|
|
||||||
|
<table class="portal-modules-overview">
|
||||||
|
<tr>
|
||||||
|
<th style="text-align: center;">{{ lang('MODULE_POS_TOP') }}</th>
|
||||||
|
</tr>
|
||||||
|
{% for modules_top in loops.modules_top %}
|
||||||
|
{% if not modules_top.MODULE_ENABLED %}<tr class="row3">{% elseif modules_top.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td>
|
||||||
|
{{ modules_top.MODULE_IMAGE }} {{ modules_top.MODULE_NAME }}<br />
|
||||||
|
<br />
|
||||||
|
<span{% if not modules_top.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }} </span>
|
||||||
|
<span{% if modules_top.S_FIRST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_top.U_MOVE_UP }}" data-ajax="b3p_move_module_up">{{ ICON_MOVE_UP }}</a> </span>
|
||||||
|
<span{% if not modules_top.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }} </span>
|
||||||
|
<span{% if modules_top.S_LAST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_top.U_MOVE_DOWN }}" data-ajax="b3p_move_module_down">{{ ICON_MOVE_DOWN }}</a> </span>
|
||||||
|
<a href="{{ modules_top.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ modules_top.U_DELETE }}" data-ajax="b3p_delete_module">{{ ICON_DELETE }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add[top]" type="submit" value="{{ lang('ADD_MODULE') }}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table style="background-color: transparent; border: none; padding: 0px; margin: 0px;">
|
||||||
|
<tr style="vertical-align: top;">
|
||||||
|
<td style="width: 20%; font-size: 100%; line-height: 100%; padding: 0px; margin: 0px;">
|
||||||
|
<table class="portal-modules-overview">
|
||||||
|
<tr>
|
||||||
|
<th>{{ lang('MODULE_POS_LEFT') }}</th>
|
||||||
|
</tr>
|
||||||
|
{% for modules_left in loops.modules_left %}
|
||||||
|
{% if not modules_left.MODULE_ENABLED %}<tr class="row3">{% elseif modules_left.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td>
|
||||||
|
{{ modules_left.MODULE_IMAGE }} {{ modules_left.MODULE_NAME }}<br />
|
||||||
|
<br />
|
||||||
|
<span{% if not modules_left.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }} </span>
|
||||||
|
<span{% if modules_left.S_FIRST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_left.U_MOVE_UP }}" data-ajax="b3p_move_module_up">{{ ICON_MOVE_UP }}</a> </span>
|
||||||
|
{% if modules_left.U_MOVE_RIGHT %}<a href="{{ modules_left.U_MOVE_RIGHT }}">{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_LEFT }}{% else %}{{ ICON_MOVE_RIGHT }}{% endif %}</a>{% else %}{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_LEFT_DISABLED }}{% else %}{{ ICON_MOVE_RIGHT_DISABLED }}{% endif %}{% endif %}
|
||||||
|
<a href="{{ modules_left.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ modules_left.U_DELETE }}" data-ajax="b3p_delete_module">{{ ICON_DELETE }}</a><br />
|
||||||
|
{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_RIGHT_DISABLED }}{% else %}{{ ICON_MOVE_LEFT_DISABLED }}{% endif %}
|
||||||
|
<span{% if not modules_left.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }} </span>
|
||||||
|
<span{% if modules_left.S_LAST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_left.U_MOVE_DOWN }}" data-ajax="b3p_move_module_down">{{ ICON_MOVE_DOWN }}</a></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add[left]" type="submit" value="{{ lang('ADD_MODULE') }}" />
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td style="font-size: 100%; line-height: 100%; padding: 0 12px;">
|
||||||
|
<table class="portal-modules-overview">
|
||||||
|
<tr>
|
||||||
|
<th style="text-align: center;">{{ lang('MODULE_POS_CENTER') }}</th>
|
||||||
|
</tr>
|
||||||
|
{% for modules_center in loops.modules_center %}
|
||||||
|
{% if not modules_center.MODULE_ENABLED %}<tr class="row3">{% elseif modules_center.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td>
|
||||||
|
{{ modules_center.MODULE_IMAGE }} {{ modules_center.MODULE_NAME }}<br />
|
||||||
|
<br />
|
||||||
|
<span{% if not modules_center.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }} </span>
|
||||||
|
<span{% if modules_center.S_FIRST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_center.U_MOVE_UP }}" data-ajax="b3p_move_module_up">{{ ICON_MOVE_UP }}</a> </span>
|
||||||
|
{% if modules_center.U_MOVE_RIGHT %}<a href="{{ modules_center.U_MOVE_RIGHT }}">{{ ICON_MOVE_RIGHT }}</a>{% else %}{{ ICON_MOVE_RIGHT_DISABLED }}{% endif %}
|
||||||
|
<a href="{{ modules_center.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ modules_center.U_DELETE }}" data-ajax="b3p_delete_module">{{ ICON_DELETE }}</a><br />
|
||||||
|
{% if modules_center.U_MOVE_LEFT %}<a href="{{ modules_center.U_MOVE_LEFT }}">{{ ICON_MOVE_LEFT }}</a>{% else %}{{ ICON_MOVE_LEFT_DISABLED }}{% endif %}
|
||||||
|
<span{% if not modules_center.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }} </span>
|
||||||
|
<span{% if modules_center.S_LAST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_center.U_MOVE_DOWN }}" data-ajax="b3p_move_module_down">{{ ICON_MOVE_DOWN }}</a></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add[center]" type="submit" value="{{ lang('ADD_MODULE') }}" />
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 20%; font-size: 100%; line-height: 100%; padding: 0px;">
|
||||||
|
<table class="portal-modules-overview">
|
||||||
|
<tr>
|
||||||
|
<th>{{ lang('MODULE_POS_RIGHT') }}</th>
|
||||||
|
</tr>
|
||||||
|
{% for modules_right in loops.modules_right %}
|
||||||
|
{% if not modules_right.MODULE_ENABLED %}<tr class="row3">{% elseif modules_right.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td>
|
||||||
|
{{ modules_right.MODULE_IMAGE }} {{ modules_right.MODULE_NAME }}<br />
|
||||||
|
<br />
|
||||||
|
<span{% if not modules_right.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }} </span>
|
||||||
|
<span{% if modules_right.S_FIRST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_right.U_MOVE_UP }}" data-ajax="b3p_move_module_up">{{ ICON_MOVE_UP }}</a> </span>
|
||||||
|
{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_LEFT_DISABLED }}{% else %}{{ ICON_MOVE_RIGHT_DISABLED }}{% endif %}
|
||||||
|
<a href="{{ modules_right.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ modules_right.U_DELETE }}" data-ajax="b3p_delete_module">{{ ICON_DELETE }}</a><br />
|
||||||
|
{% if modules_right.U_MOVE_LEFT %}<a href="{{ modules_right.U_MOVE_LEFT }}">{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_RIGHT }}{% else %}{{ ICON_MOVE_LEFT }}{% endif %}</a>{% else %}{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_RIGHT_DISABLED }}{% else %}{{ ICON_MOVE_LEFT_DISABLED }}{% endif %}{% endif %}
|
||||||
|
<span{% if not modules_right.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }} </span>
|
||||||
|
<span{% if modules_right.S_LAST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_right.U_MOVE_DOWN }}" data-ajax="b3p_move_module_down">{{ ICON_MOVE_DOWN }}</a></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add[right]" type="submit" value="{{ lang('ADD_MODULE') }}" />
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<table class="portal-modules-overview">
|
||||||
|
<tr>
|
||||||
|
<th style="text-align: center;">{{ lang('MODULE_POS_BOTTOM') }}</th>
|
||||||
|
</tr>
|
||||||
|
{% for modules_bottom in loops.modules_bottom %}
|
||||||
|
{% if not modules_bottom.MODULE_ENABLED %}<tr class="row3">{% elseif modules_bottom.S_ROW_COUNT is even %}<tr class="row1">{% else %}<tr class="row2">{% endif %}
|
||||||
|
<td>
|
||||||
|
{{ modules_bottom.MODULE_IMAGE }} {{ modules_bottom.MODULE_NAME }}<br />
|
||||||
|
<br />
|
||||||
|
<span{% if not modules_bottom.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }} </span>
|
||||||
|
<span{% if modules_bottom.S_FIRST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_bottom.U_MOVE_UP }}" data-ajax="b3p_move_module_up">{{ ICON_MOVE_UP }}</a> </span>
|
||||||
|
<span{% if not modules_bottom.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }} </span>
|
||||||
|
<span{% if modules_bottom.S_LAST_ROW %} style="display: none;"{% endif %}><a href="{{ modules_bottom.U_MOVE_DOWN }}" data-ajax="b3p_move_module_down">{{ ICON_MOVE_DOWN }}</a> </span>
|
||||||
|
<a href="{{ modules_bottom.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ modules_bottom.U_DELETE }}" data-ajax="b3p_delete_module">{{ ICON_DELETE }}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<p class="quick">
|
||||||
|
<input class="button2" name="add[bottom]" type="submit" value="{{ lang('ADD_MODULE') }}" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% INCLUDEJS 'portal/ajax.js' %}
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
|
{% endif %}
|
||||||
228
adm/style/portal/acp_portal_welcome.html
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
{% INCLUDE 'overall_header.html' %}
|
||||||
|
|
||||||
|
{% INCLUDEJS 'portal/acp_editor.js' %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
// <![CDATA[
|
||||||
|
/**
|
||||||
|
* bbCode control by subBlue design [ www.subBlue.com ]
|
||||||
|
* Includes unixsafe colour palette selector by SHS`
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Startup variables
|
||||||
|
var imageTag = false;
|
||||||
|
var theSelection = false;
|
||||||
|
|
||||||
|
var bbcodeEnabled = true;
|
||||||
|
// Check for Browser & Platform for PC & IE specific bits
|
||||||
|
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
||||||
|
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
||||||
|
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
||||||
|
|
||||||
|
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
|
||||||
|
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
|
||||||
|
var baseHeight;
|
||||||
|
|
||||||
|
var form_name = 'acp_portal_welcome';
|
||||||
|
var text_name = 'welcome_message';
|
||||||
|
var load_draft = false;
|
||||||
|
var upload = false;
|
||||||
|
|
||||||
|
// Define the bbCode tags
|
||||||
|
var bbcode = new Array();
|
||||||
|
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'{% for custom_tags in loops.custom_tags %}, {{ custom_tags.BBCODE_NAME }}{% endfor %});
|
||||||
|
var imageTag = false;
|
||||||
|
|
||||||
|
// Helpline messages
|
||||||
|
var help_line = {
|
||||||
|
b: '{{ lang('BBCODE_B_HELP')|escape('js') }}',
|
||||||
|
i: '{{ lang('BBCODE_I_HELP')|escape('js') }}',
|
||||||
|
u: '{{ lang('BBCODE_U_HELP')|escape('js') }}',
|
||||||
|
q: '{{ lang('BBCODE_Q_HELP')|escape('js') }}',
|
||||||
|
c: '{{ lang('BBCODE_C_HELP')|escape('js') }}',
|
||||||
|
l: '{{ lang('BBCODE_L_HELP')|escape('js') }}',
|
||||||
|
o: '{{ lang('BBCODE_O_HELP')|escape('js') }}',
|
||||||
|
p: '{{ lang('BBCODE_P_HELP')|escape('js') }}',
|
||||||
|
w: '{{ lang('BBCODE_W_HELP')|escape('js') }}',
|
||||||
|
a: '{{ lang('BBCODE_A_HELP')|escape('js') }}',
|
||||||
|
s: '{{ lang('BBCODE_S_HELP')|escape('js') }}',
|
||||||
|
f: '{{ lang('BBCODE_F_HELP')|escape('js') }}',
|
||||||
|
e: '{{ lang('BBCODE_E_HELP')|escape('js') }}',
|
||||||
|
d: '{{ lang('BBCODE_D_HELP')|escape('js') }}'
|
||||||
|
{% for custom_tags in loops.custom_tags %}
|
||||||
|
,cb_{{ custom_tags.BBCODE_ID }}: '{{ custom_tags.A_BBCODE_HELPLINE }}'
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
function change_palette()
|
||||||
|
{
|
||||||
|
phpbb.toggleDisplay('colour_palette');
|
||||||
|
e = document.getElementById('colour_palette');
|
||||||
|
|
||||||
|
if (e.style.display == 'block')
|
||||||
|
{
|
||||||
|
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR_HIDE')|escape('js') }}';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR')|escape('js') }}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<a name="maincontent"></a>
|
||||||
|
|
||||||
|
<h1>{{ lang('TITLE') }}</h1>
|
||||||
|
|
||||||
|
<p>{{ lang('TITLE_EXPLAIN') }}</p>
|
||||||
|
|
||||||
|
{% if S_ERROR %}
|
||||||
|
<div class="errorbox">
|
||||||
|
<h3>{{ lang('WARNING') }}</h3>
|
||||||
|
<p>{{ ERROR_MSG }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
|
||||||
|
{% if SHOW_MODULE_OPTIONS %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_name">{{ lang('MODULE_NAME') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_NAME_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_name" type="text" value="{{ MODULE_NAME }}" name="module_name" maxlength="255" size="64" /></dd>
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_SHOW_IMAGE %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_image">{{ lang('MODULE_IMAGE') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_image" type="text" value="{{ MODULE_IMAGE }}" name="module_image" maxlength="255" size="64" /></dd>
|
||||||
|
{% if MODULE_IMAGE_SRC %}<dd><img src="{{ MODULE_IMAGE_SRC }}" alt="{{ lang('MODULE_IMAGE') }}" /></dd>{% endif %}
|
||||||
|
</dl>
|
||||||
|
{% if MODULE_IMAGE_SRC %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_width">{{ lang('MODULE_IMAGE_WIDTH') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_WIDTH_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_width" type="number" value="{{ MODULE_IMAGE_WIDTH }}" name="module_img_width" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_img_height">{{ lang('MODULE_IMAGE_HEIGHT') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_IMAGE_HEIGHT_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_img_height" type="number" value="{{ MODULE_IMAGE_HEIGHT }}" name="module_img_height" min="0" /> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa">{{ lang('MODULE_FA') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa" type="text" value="{{ MODULE_FA }}" name="module_fa" maxlength="255" size="64"/></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_fa_size">{{ lang('MODULE_FA_SIZE') }}{{ lang('COLON') }}</label><br/><span>{{ lang('MODULE_FA_SIZE_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_fa_size" type="number" value="{{ MODULE_FA_SIZE }}" name="module_fa_size" min="0"/> {{ lang('PIXEL') }}</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_reset">{{ lang('MODULE_RESET') }}{{ lang('COLON') }}</label><br /><span style="color: #BC2A4D;">{{ lang('MODULE_RESET_EXP') }}</span></dt>
|
||||||
|
<dd><input id="module_reset" type="checkbox" value="1" name="module_reset" /></dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt><label for="module_status">{{ lang('MODULE_STATUS') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="1" id="module_status"{% if MODULE_ENABLED %} checked="checked"{% endif %} />{{ lang('YES') }}</label>
|
||||||
|
<label><input type="radio" class="radio" name="module_status" value="0"{% if not MODULE_ENABLED %} checked="checked"{% endif %} /> {{ lang('NO') }}</label>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% if loops.permission_setting|length %}
|
||||||
|
<dl>
|
||||||
|
<dt><label for="permission-setting">{{ lang('MODULE_PERMISSIONS') }}{{ lang('COLON') }}</label><br /><span>{{ lang('MODULE_PERMISSIONS_EXP') }}</span></dt>
|
||||||
|
<dd>
|
||||||
|
<select id="permission-setting" size="10" multiple="multiple" name="permission-setting[]">
|
||||||
|
{% for permission_setting in loops.permission_setting %}
|
||||||
|
<option value="{{ permission_setting.GROUP_ID }}"{% if permission_setting.SELECTED %}selected="selected"{% endif %}>{{ permission_setting.GROUP_NAME }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% if S_PREVIEW %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('ACP_PORTAL_WELCOME_PREVIEW') }}</legend>
|
||||||
|
<dl>
|
||||||
|
<dt style="border: none; width: 100%;">
|
||||||
|
{{ PREVIEW_TEXT }}
|
||||||
|
</dt>
|
||||||
|
</dl>
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{ lang('PORTAL_WELCOME') }}</legend>
|
||||||
|
<dl><dt style="display: none;"></dt>
|
||||||
|
<dd>
|
||||||
|
<div id="colour_palette" style="display: none;">
|
||||||
|
<dl style="clear: left;">
|
||||||
|
<dt style="border: none;"><label>{{ lang('FONT_COLOR') }}{{ lang('COLON') }}</label></dt>
|
||||||
|
<dd></dd>
|
||||||
|
</dl>
|
||||||
|
<dl style="clear: left;">
|
||||||
|
<dt id="color_palette_placeholder" style="border: none;"></dt>
|
||||||
|
<dd></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<div id="format-buttons">
|
||||||
|
<input type="button" class="button2" accesskey="b" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onclick="bbstyle(0)" title="{{ lang('BBCODE_B_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{{ lang('BBCODE_I_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{{ lang('BBCODE_U_HELP') }}" />
|
||||||
|
{% if S_BBCODE_QUOTE %}
|
||||||
|
<input type="button" class="button2" accesskey="q" name="addbbcode6" value="Quote" style="width: 50px" onclick="bbstyle(6)" title="{{ lang('BBCODE_Q_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{{ lang('BBCODE_C_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{{ lang('BBCODE_L_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{{ lang('BBCODE_O_HELP') }}" />
|
||||||
|
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{{ lang('BBCODE_LISTITEM_HELP') }}" />
|
||||||
|
{% if S_BBCODE_IMG %}
|
||||||
|
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" title="{{ lang('BBCODE_P_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if S_LINKS_ALLOWED %}
|
||||||
|
<input type="button" class="button2" accesskey="w" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onclick="bbstyle(16)" title="{{ lang('BBCODE_W_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if S_BBCODE_FLASH %}
|
||||||
|
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{{ lang('BBCODE_D_HELP') }}" />
|
||||||
|
{% endif %}
|
||||||
|
<select name="addbbcode20" onchange="bbfontstyle('[size=' + this.form.addbbcode20.options[this.form.addbbcode20.selectedIndex].value + ']', '[/size]');this.form.addbbcode20.selectedIndex = 2;" title="{{ lang('BBCODE_F_HELP') }}">
|
||||||
|
<option value="50">{{ lang('FONT_TINY') }}</option>
|
||||||
|
<option value="85">{{ lang('FONT_SMALL') }}</option>
|
||||||
|
<option value="100" selected="selected">{{ lang('FONT_NORMAL') }}</option>
|
||||||
|
{% if not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 %}
|
||||||
|
<option value="150">{{ lang('FONT_LARGE') }}</option>
|
||||||
|
{% if not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 %}
|
||||||
|
<option value="200">{{ lang('FONT_HUGE') }}</option>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</select>
|
||||||
|
<input type="button" class="button2" name="bbpalette" id="bbpalette" value="{{ lang('FONT_COLOR') }}" onclick="change_palette();" title="{{ lang('BBCODE_S_HELP') }}" />
|
||||||
|
{% for custom_tags in loops.custom_tags %}
|
||||||
|
<input type="button" class="button2" name="addbbcode{{ custom_tags.BBCODE_ID }}" value="{{ custom_tags.BBCODE_TAG }}" onclick="bbstyle({{ custom_tags.BBCODE_ID }})" title="{{ custom_tags.BBCODE_HELPLINE }}" />
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<dl>
|
||||||
|
<dt>
|
||||||
|
<label for="welcome_message">{{ lang('ACP_PORTAL_WELCOME_MESSAGE') }}{{ lang('COLON') }}</label><br />
|
||||||
|
<span>{{ lang('ACP_PORTAL_WELCOME_MESSAGE_EXP') }}</span>
|
||||||
|
</dt>
|
||||||
|
<dd><textarea name="welcome_message" id="welcome_message" cols="6" rows="12">{{ WELCOME_MESSAGE }}</textarea></dd>
|
||||||
|
</dl>
|
||||||
|
{% if S_AUTH %}
|
||||||
|
{% for auth_tpl in loops.auth_tpl %}
|
||||||
|
{{ auth_tpl.TPL }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<p class="submit-buttons">
|
||||||
|
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}" />
|
||||||
|
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />
|
||||||
|
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
|
||||||
|
</p>
|
||||||
|
{{ S_FORM_TOKEN }}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% INCLUDE 'overall_footer.html' %}
|
||||||
115
adm/style/portal/ajax.js
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
(function($) { // Avoid conflicts with other libraries
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The following callbacks are for reording items. row_down
|
||||||
|
* is triggered when an item is moved down, and row_up is triggered when
|
||||||
|
* an item is moved up. It moves the row up or down, and deactivates /
|
||||||
|
* activates any up / down icons that require it (the ones at the top or bottom).
|
||||||
|
*/
|
||||||
|
phpbb.addAjaxCallback('b3p_move_module_up', function(res) {
|
||||||
|
if (typeof res.success === 'undefined' || !res.success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $bottomRow = $(this).parents('tr:first'),
|
||||||
|
$topRow = $bottomRow.prev(),
|
||||||
|
topRowClass = $topRow.attr('class'),
|
||||||
|
bottomRowClass = $bottomRow.attr('class');
|
||||||
|
|
||||||
|
$bottomRow.insertBefore($topRow);
|
||||||
|
if (bottomRowClass !== 'row3' && topRowClass !== 'row3') {
|
||||||
|
$bottomRow.attr('class', topRowClass);
|
||||||
|
$topRow.attr('class', bottomRowClass);
|
||||||
|
} else if (bottomRowClass === 'row3') {
|
||||||
|
$topRow.attr('class', (topRowClass === 'row1') ? 'row2' : 'row1');
|
||||||
|
} else if (topRowClass === 'row3') {
|
||||||
|
$bottomRow.attr('class', (bottomRowClass === 'row1') ? 'row2' : 'row1');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap images if swap element is first row
|
||||||
|
var swapIsFirstRow = $topRow.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
|
||||||
|
|
||||||
|
if (swapIsFirstRow) {
|
||||||
|
$topRow.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_up."]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_up."]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap images if move element is last row
|
||||||
|
var elIsLastRow = $bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
|
||||||
|
|
||||||
|
if (elIsLastRow) {
|
||||||
|
$topRow.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_down."]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_down."]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
phpbb.addAjaxCallback('b3p_move_module_down', function(res) {
|
||||||
|
if (typeof res.success === 'undefined' || !res.success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $topRow = $(this).parents('tr:first'),
|
||||||
|
$bottomRow = $topRow.next(),
|
||||||
|
bottomRowClass = $bottomRow.attr('class'),
|
||||||
|
topRowClass = $topRow.attr('class');
|
||||||
|
|
||||||
|
$topRow.insertAfter($bottomRow);
|
||||||
|
if (bottomRowClass !== 'row3' && topRowClass !== 'row3') {
|
||||||
|
$bottomRow.attr('class', topRowClass);
|
||||||
|
$topRow.attr('class', bottomRowClass);
|
||||||
|
} else if (bottomRowClass === 'row3') {
|
||||||
|
$topRow.attr('class', (topRowClass === 'row1') ? 'row2' : 'row1');
|
||||||
|
} else if (topRowClass === 'row3') {
|
||||||
|
$bottomRow.attr('class', (bottomRowClass === 'row1') ? 'row2' : 'row1');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap images if swap element is last row
|
||||||
|
var swapIsLastRow = $bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
|
||||||
|
|
||||||
|
if (swapIsLastRow) {
|
||||||
|
$bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_down."]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_down."]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap images if move element is first row
|
||||||
|
var elIsFirstRow = $topRow.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
|
||||||
|
|
||||||
|
if (elIsFirstRow) {
|
||||||
|
$bottomRow.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
|
||||||
|
$bottomRow.find('img[src*="icon_up."]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_up."]').parents('span:first').toggle();
|
||||||
|
$topRow.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
phpbb.addAjaxCallback('b3p_delete_module', function(res) {
|
||||||
|
if (typeof res.success === 'undefined' || !res.success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var $deletedRow = $(this).parents('tr:first'),
|
||||||
|
$nextRow = $deletedRow.next();
|
||||||
|
|
||||||
|
$deletedRow.remove();
|
||||||
|
|
||||||
|
// Fix classes of next elements
|
||||||
|
while ($nextRow !== undefined && $nextRow.is('tr')) {
|
||||||
|
var nextRowClass = ($nextRow.attr('class') === 'row1') ? 'row2' : 'row1';
|
||||||
|
|
||||||
|
if ($nextRow.attr('class') !== 'row3') {
|
||||||
|
$nextRow.attr('class', nextRowClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
$nextRow = $nextRow.next();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
10
adm/style/portal/b3p_admin.css
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/* Board3 Portal 2.1 Admin Style Sheet
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
Copyright 2014 board3 Group ( http://www.board3.de/ )
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
.portal-modules-overview {
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 1px;
|
||||||
|
}
|
||||||
233
build.xml
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project name="Extension Builder" description="Builds an extension.zip from a git repository" default="all">
|
||||||
|
<property name="vendor-name" value="board3" />
|
||||||
|
<property name="extension-name" value="portal" />
|
||||||
|
<!--
|
||||||
|
Only set this to "true" if you have dependencies in the composer.json,
|
||||||
|
otherwise use "false".
|
||||||
|
-->
|
||||||
|
<property name="has-dependencies" value="true" />
|
||||||
|
|
||||||
|
<target name="clean-package">
|
||||||
|
<!--
|
||||||
|
Remove some unnecessary files/directories
|
||||||
|
${dir}/ is the folder of your extension, e.g. ext/nickvergessen/newspage/
|
||||||
|
-->
|
||||||
|
<delete dir="${dir}/tests" />
|
||||||
|
<delete dir="${dir}/.github" />
|
||||||
|
<delete dir="${dir}/travis" />
|
||||||
|
<delete dir="${dir}/vendor/marc1706/phpbb-text-shortener/.github" />
|
||||||
|
|
||||||
|
<delete dir="${dir}/language/ar" />
|
||||||
|
<delete dir="${dir}/language/es" />
|
||||||
|
<delete dir="${dir}/language/fr" />
|
||||||
|
<delete dir="${dir}/language/it" />
|
||||||
|
<delete dir="${dir}/language/nl" />
|
||||||
|
|
||||||
|
<delete file="${dir}/.gitignore" />
|
||||||
|
<delete file="${dir}/.gitattributes" />
|
||||||
|
<delete file="${dir}/build.xml" />
|
||||||
|
<delete file="${dir}/composer.lock" />
|
||||||
|
<delete file="${dir}/composer.phar" />
|
||||||
|
<delete file="${dir}/phpunit.xml.dist" />
|
||||||
|
<delete file="${dir}/README.md" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
TODO: DO NOT EDIT BELOW THIS LINE!!!!
|
||||||
|
-->
|
||||||
|
|
||||||
|
<property name="version" value="HEAD" override="true" />
|
||||||
|
<property name="package.version" value="HEAD" />
|
||||||
|
<property name="build-directory" value="build" override="true" />
|
||||||
|
<property name="package-directory" value="${build-directory}/package/${vendor-name}/${extension-name}" />
|
||||||
|
<property name="phpbb-root" value="${build-directory}/../../../../../" />
|
||||||
|
<property name="clover-path" value="${build-directory}/logs/clover.xml" />
|
||||||
|
<property name="coverage-html-path" value="${build-directory}/coverage" />
|
||||||
|
|
||||||
|
<!-- These are the main targets which you will probably want to use -->
|
||||||
|
<target name="all" depends="prepare-structure,package" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Clean up the build directory
|
||||||
|
-->
|
||||||
|
<target name="clean">
|
||||||
|
<delete dir="${build-directory}" />
|
||||||
|
<mkdir dir="${build-directory}" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="composer">
|
||||||
|
<exec dir="${build-directory}/../"
|
||||||
|
command="php composer.phar install"
|
||||||
|
passthru="true" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="prepare-tests" depends="clean,composer">
|
||||||
|
<if>
|
||||||
|
<available property="phpbb-is-available" file="${phpbb-root}/phpBB/vendor/bin/phpunit" type="file" />
|
||||||
|
<then>
|
||||||
|
<echo msg="phpBB is already set up." />
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<!-- Move Board3 Portal and set up phpBB -->
|
||||||
|
<exec command="CURRENT_BUILD_REV=$(git rev-parse --abbrev-ref HEAD)" passthru="true" />
|
||||||
|
<exec command="echo $GIT_BRANCH" passthru="true" />
|
||||||
|
<exec command="git clone -v --progress https://github.com/phpbb/phpbb.git phpbb" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="git checkout 3.3.x" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB" command="php ../composer.phar install" passthru="true" />
|
||||||
|
<mkdir dir="phpbb/phpBB/ext/board3" />
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3" command="git clone https://github.com/board3/Board3-Portal.git portal" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3/portal" command="git checkout $GIT_BRANCH" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3/portal" command="php composer.phar install" passthru="true" />
|
||||||
|
<property name="phpbb-root" value="${build-directory}/../phpbb" override="true" />
|
||||||
|
<property name="clover-path" value="../build/logs/clover.xml" override="true" />
|
||||||
|
<property name="coverage-html-path" value="../build/coverage" override="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="cp ../../test_config_22x.php tests/test_config.php" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="chmod 777 phpBB/cache" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="mkdir phpBB/cache/test" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="chmod 777 phpBB/cache/test" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="chmod 777 phpBB/files" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="chmod 777 phpBB/store" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb" command="chmod 777 phpBB/images/avatars/upload" passthru="true" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<equals arg1="$JENKINS_URL" arg2="" />
|
||||||
|
<then>
|
||||||
|
<echo msg="JENKINS_URL is not set" />
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3/portal" command="wget https://phar.phpunit.de/phploc.phar" passthru="true" />
|
||||||
|
<if>
|
||||||
|
<available property="logs-dir-available" file="${build-directory}/logs" type="dir" />
|
||||||
|
<then>
|
||||||
|
<echo msg="Logs dir already set up." />
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<mkdir dir="${build-directory}/logs" />
|
||||||
|
<exec dir="${build-directory}/logs" command="touch phploc.csv" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3" command="php portal/phploc.phar --exclude=vendor --exclude=travis --log-csv ../../../../build/logs/phploc.csv portal/" passthru="true" />
|
||||||
|
<exec dir="${build-directory}/../phpbb/phpBB/ext/board3/portal" command="rm phploc.phar" passthru="true" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<equals arg1="$BUILD_NUMBER" arg2="" />
|
||||||
|
<then>
|
||||||
|
<echo msg="BUILD_NUMBER is not available" />
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<property environment="env" />
|
||||||
|
<echo>Build number is ${env.BUILD_NUMBER}</echo>
|
||||||
|
<property name="package.version" value="${env.BUILD_NUMBER}" override="true" />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="test" depends="clean,composer,prepare-tests">
|
||||||
|
<if>
|
||||||
|
<available property="phpunit-available" file="phpbb/phpBB/vendor/bin/phpunit" type="file" />
|
||||||
|
<then>
|
||||||
|
<exec dir="${phpbb-root}"
|
||||||
|
command="phpBB/vendor/bin/phpunit
|
||||||
|
-c phpBB/ext/${vendor-name}/${extension-name}/ --coverage-clover=${clover-path} --coverage-html=${coverage-html-path}"
|
||||||
|
passthru="true" returnProperty="test.pass" />
|
||||||
|
<if>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${test.pass}" arg2="0"/>
|
||||||
|
</not>
|
||||||
|
<then>
|
||||||
|
<fail msg="PHPUnit tests failed."/>
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<echo msg="PHPUnit couldn't be found." />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="test-slow" depends="clean,composer">
|
||||||
|
<if>
|
||||||
|
<available property="phpunit-available" file="phpbb/phpBB/vendor/bin/phpunit" type="file" />
|
||||||
|
<then>
|
||||||
|
<exec dir="${phpbb-root}"
|
||||||
|
command="phpBB/vendor/bin/phpunit
|
||||||
|
-c phpBB/ext/${vendor-name}/${extension-name}/
|
||||||
|
--group slow"
|
||||||
|
passthru="true" />
|
||||||
|
<if>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${test.pass}" arg2="0"/>
|
||||||
|
</not>
|
||||||
|
<then>
|
||||||
|
<fail msg="PHPUnit slow tests failed."/>
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
</then>
|
||||||
|
<else>
|
||||||
|
<echo msg="PHPUnit couldn't be found." />
|
||||||
|
</else>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Recreate the necessary folders
|
||||||
|
-->
|
||||||
|
<target name="prepare-structure" depends="clean,composer,test,test-slow">
|
||||||
|
<mkdir dir="${build-directory}" />
|
||||||
|
<mkdir dir="${build-directory}/checkout" />
|
||||||
|
<mkdir dir="${build-directory}/package" />
|
||||||
|
<mkdir dir="${build-directory}/package/${vendor-name}" />
|
||||||
|
<mkdir dir="${build-directory}/package/${vendor-name}/${extension-name}" />
|
||||||
|
<mkdir dir="${build-directory}/upload" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The real packaging
|
||||||
|
-->
|
||||||
|
<target name="package">
|
||||||
|
<echo msg="Extracting ${version}" />
|
||||||
|
|
||||||
|
<phingcall target="git-checkout">
|
||||||
|
<property name="archive-version" value="${version}" />
|
||||||
|
</phingcall>
|
||||||
|
|
||||||
|
<if>
|
||||||
|
<equals arg1="${has-dependencies}" arg2="1" />
|
||||||
|
<then>
|
||||||
|
<exec dir="${package-directory}" command="php composer.phar install --no-dev"
|
||||||
|
checkreturn="true" />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<phingcall target="clean-package">
|
||||||
|
<property name="dir" value="${package-directory}" />
|
||||||
|
</phingcall>
|
||||||
|
|
||||||
|
<phingcall target="wrap-package">
|
||||||
|
<property name="destination-filename" value="${build-directory}/upload/${vendor-name}_${extension-name}_${package.version}" />
|
||||||
|
</phingcall>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Checkout a given version and install/clean the dependencies
|
||||||
|
-->
|
||||||
|
<target name="git-checkout">
|
||||||
|
<echo msg="Getting archive for ${archive-version}" />
|
||||||
|
|
||||||
|
<exec command="git archive ${archive-version} --format zip --output ${build-directory}/checkout/${archive-version}.zip"
|
||||||
|
checkreturn="true" />
|
||||||
|
<unzip file="${build-directory}/checkout/${archive-version}.zip" todir="${package-directory}" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Create the zip and tar ball
|
||||||
|
-->
|
||||||
|
<target name="wrap-package">
|
||||||
|
<echo msg="Creating archives (${vendor-name}/${extension-name} ${version})" />
|
||||||
|
<zip basedir="${build-directory}/package/" destfile="${destination-filename}.zip" />
|
||||||
|
</target>
|
||||||
|
</project>
|
||||||
47
composer.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"name": "board3/portal",
|
||||||
|
"type": "phpbb-extension",
|
||||||
|
"description": "Adds a portal with several blocks to your forum. You can change the settings, move the blocks, add new blocks and more in the ACP.",
|
||||||
|
"homepage": "https://www.board3.de",
|
||||||
|
"version": "2.3.0",
|
||||||
|
"time": "2023-03-19 09:58:18",
|
||||||
|
"license": "GPL-2.0-only",
|
||||||
|
"authors": [{
|
||||||
|
"name": "Marc Alexander",
|
||||||
|
"email": "admin@m-a-styles.de",
|
||||||
|
"homepage": "https://www.m-a-styles.de",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Joas Schilling",
|
||||||
|
"homepage": "https://www.schilljs.com/",
|
||||||
|
"role": "Former Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kirk",
|
||||||
|
"homepage": "https://reyno41.bplaced.net/phpbb/",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1.0,<8.3.0",
|
||||||
|
"marc1706/phpbb-text-shortener": "^0.3.0"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"display-name": "Board3 Portal",
|
||||||
|
"soft-require": {
|
||||||
|
"phpbb/phpbb": ">=3.2.6,<3.4@dev"
|
||||||
|
},
|
||||||
|
"version-check": {
|
||||||
|
"host": "board3.de",
|
||||||
|
"directory": "/updatecheck",
|
||||||
|
"filename": "board3_portal.json",
|
||||||
|
"ssl": "true"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"composer/installers": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
79
composer.lock
generated
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "a9605bea31820bc73c4bd7d142cbba7c",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "marc1706/phpbb-text-shortener",
|
||||||
|
"version": "v0.3.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/marc1706/phpbb-text-shortener.git",
|
||||||
|
"reference": "9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/marc1706/phpbb-text-shortener/zipball/9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69",
|
||||||
|
"reference": "9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^7.0",
|
||||||
|
"symfony/yaml": "~3.4"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Marc1706\\TextShortener\\": "src",
|
||||||
|
"Marc1706\\TextShortener\\tests\\": "tests"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marc Alexander",
|
||||||
|
"email": "admin@m-a-styles.de",
|
||||||
|
"homepage": "https://www.m-a-styles.de",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Library for shortening post text in phpBB 3.2.x",
|
||||||
|
"homepage": "https://www.m-a-styles.de",
|
||||||
|
"keywords": [
|
||||||
|
"bbcode",
|
||||||
|
"extension",
|
||||||
|
"extensions",
|
||||||
|
"minify",
|
||||||
|
"php",
|
||||||
|
"phpbb",
|
||||||
|
"post",
|
||||||
|
"shortening"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/marc1706/phpbb-text-shortener/issues",
|
||||||
|
"source": "https://github.com/marc1706/phpbb-text-shortener/tree/v0.3.0"
|
||||||
|
},
|
||||||
|
"time": "2023-02-07T19:46:11+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": {
|
||||||
|
"php": ">=7.1.0,<8.3.0"
|
||||||
|
},
|
||||||
|
"platform-dev": [],
|
||||||
|
"plugin-api-version": "1.1.0"
|
||||||
|
}
|
||||||
BIN
composer.phar
Executable file
325
config/modules.yml
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
services:
|
||||||
|
board3.portal.module.announcements:
|
||||||
|
class: board3\portal\modules\announcements
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@cache'
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@pagination'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@request'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '@user'
|
||||||
|
- '@board3.portal.fetch_posts'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.attachments:
|
||||||
|
class: board3\portal\modules\attachments
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.birthday_list:
|
||||||
|
class: board3\portal\modules\birthday_list
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.calendar:
|
||||||
|
class: board3\portal\modules\calendar
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@path_helper'
|
||||||
|
- '@log'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.clock:
|
||||||
|
class: board3\portal\modules\clock
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.custom:
|
||||||
|
class: board3\portal\modules\custom
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@log'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.donation:
|
||||||
|
class: board3\portal\modules\donation
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.forumlist:
|
||||||
|
class: board3\portal\modules\forumlist
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.friends:
|
||||||
|
class: board3\portal\modules\friends
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.latest_bots:
|
||||||
|
class: board3\portal\modules\latest_bots
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.latest_members:
|
||||||
|
class: board3\portal\modules\latest_members
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.leaders:
|
||||||
|
class: board3\portal\modules\leaders
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.link_us:
|
||||||
|
class: board3\portal\modules\link_us
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.links:
|
||||||
|
class: board3\portal\modules\links
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@log'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.main_menu:
|
||||||
|
class: board3\portal\modules\main_menu
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@log'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.news:
|
||||||
|
class: board3\portal\modules\news
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@cache'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@pagination'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@board3.portal.fetch_posts'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.poll:
|
||||||
|
class: board3\portal\modules\poll
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '@user'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.random_member:
|
||||||
|
class: board3\portal\modules\random_member
|
||||||
|
arguments:
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.recent:
|
||||||
|
class: board3\portal\modules\recent
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.search:
|
||||||
|
class: board3\portal\modules\search
|
||||||
|
arguments:
|
||||||
|
- '@template'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
- '%core.root_path%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.statistics:
|
||||||
|
class: board3\portal\modules\statistics
|
||||||
|
arguments:
|
||||||
|
- '@cache'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.stylechanger:
|
||||||
|
class: board3\portal\modules\stylechanger
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '@user'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.topposters:
|
||||||
|
class: board3\portal\modules\topposters
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.user_menu:
|
||||||
|
class: board3\portal\modules\user_menu
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@controller.helper'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@path_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.welcome:
|
||||||
|
class: board3\portal\modules\welcome
|
||||||
|
arguments:
|
||||||
|
- '@config'
|
||||||
|
- '@request'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.module.whois_online:
|
||||||
|
class: board3\portal\modules\whois_online
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: board3.portal.module }
|
||||||
15
config/routing.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
board3_portal_controller:
|
||||||
|
path: /portal
|
||||||
|
defaults:
|
||||||
|
_controller: 'board3.portal.main:handle'
|
||||||
|
|
||||||
|
# This is currently not supported yet
|
||||||
|
# board3_portal_pages_controller:
|
||||||
|
# pattern: /portal/{page}
|
||||||
|
# defaults: { _controller: board3.portal.main:handle_page, page: "portal" }
|
||||||
|
|
||||||
|
# Redirect to portal by default
|
||||||
|
board3_portal_redirect_controller:
|
||||||
|
path: /
|
||||||
|
defaults:
|
||||||
|
_controller: 'board3.portal.main:handle'
|
||||||
107
config/services.yml
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
imports:
|
||||||
|
- { resource: modules.yml }
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
board3.portal.config.table: '%core.table_prefix%portal_config'
|
||||||
|
board3.portal.modules.table: '%core.table_prefix%portal_modules'
|
||||||
|
services:
|
||||||
|
board3.portal.main:
|
||||||
|
class: board3\portal\controller\main
|
||||||
|
arguments:
|
||||||
|
- '@board3.portal.columns'
|
||||||
|
- '@config'
|
||||||
|
- '@board3.portal.controller_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '@path_helper'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '.%core.php_ext%'
|
||||||
|
- '%board3.portal.config.table%'
|
||||||
|
- '%board3.portal.modules.table%'
|
||||||
|
|
||||||
|
board3.portal.controller_helper:
|
||||||
|
class: board3\portal\controller\helper
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@board3.portal.columns'
|
||||||
|
- '@config'
|
||||||
|
- '@language'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '@path_helper'
|
||||||
|
- '@board3.portal.helper'
|
||||||
|
- '%core.root_path%'
|
||||||
|
- '.%core.php_ext%'
|
||||||
|
|
||||||
|
board3.portal.module_collection:
|
||||||
|
class: phpbb\di\service_collection
|
||||||
|
arguments:
|
||||||
|
- '@service_container'
|
||||||
|
tags:
|
||||||
|
- { name: service_collection, tag: board3.portal.module }
|
||||||
|
|
||||||
|
board3.portal.helper:
|
||||||
|
class: board3\portal\includes\helper
|
||||||
|
arguments:
|
||||||
|
- '@board3.portal.module_collection'
|
||||||
|
|
||||||
|
board3.portal.modules_helper:
|
||||||
|
class: board3\portal\includes\modules_helper
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@controller.helper'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@request'
|
||||||
|
- '%tables.styles%'
|
||||||
|
|
||||||
|
board3.portal.columns:
|
||||||
|
class: board3\portal\portal\columns
|
||||||
|
|
||||||
|
board3.portal.fetch_posts:
|
||||||
|
class: board3\portal\portal\fetch_posts
|
||||||
|
arguments:
|
||||||
|
- '@auth'
|
||||||
|
- '@cache'
|
||||||
|
- '@config'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@board3.portal.modules_helper'
|
||||||
|
- '@user'
|
||||||
|
|
||||||
|
board3.portal.listener:
|
||||||
|
class: board3\portal\event\listener
|
||||||
|
arguments:
|
||||||
|
- '@board3.portal.main'
|
||||||
|
- '@auth'
|
||||||
|
- '@config'
|
||||||
|
- '@controller.helper'
|
||||||
|
- '@path_helper'
|
||||||
|
- '@template'
|
||||||
|
- '@user'
|
||||||
|
- '%core.php_ext%'
|
||||||
|
tags:
|
||||||
|
- { name: event.listener }
|
||||||
|
|
||||||
|
board3.portal.modules.manager:
|
||||||
|
class: board3\portal\portal\modules\manager
|
||||||
|
arguments:
|
||||||
|
- '@cache'
|
||||||
|
- '@dbal.conn'
|
||||||
|
- '@board3.portal.controller_helper'
|
||||||
|
- '@board3.portal.columns'
|
||||||
|
- '@board3.portal.helper'
|
||||||
|
- '@board3.portal.modules.constraints_handler'
|
||||||
|
- '@board3.portal.modules.database_handler'
|
||||||
|
- '@request'
|
||||||
|
- '@user'
|
||||||
|
|
||||||
|
board3.portal.modules.database_handler:
|
||||||
|
class: board3\portal\portal\modules\database_handler
|
||||||
|
arguments:
|
||||||
|
- '@dbal.conn'
|
||||||
|
|
||||||
|
board3.portal.modules.constraints_handler:
|
||||||
|
class: board3\portal\portal\modules\constraints_handler
|
||||||
|
arguments:
|
||||||
|
- '@board3.portal.columns'
|
||||||
|
- '@user'
|
||||||
110
contrib/de.xml
@@ -1,110 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id$ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal - German Language</title>
|
|
||||||
<title lang="de">board3 Portal - Deutsche Sprache</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal to your forum.
|
|
||||||
It has several boxes wich can be turned on an off in the ACP and certain settings.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal deinem Forum hinzu.
|
|
||||||
Es hat diverse Boxen, die über das ACP an- / abgeschaltet und eingestellt werden können.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unseren International Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>120</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="parent" lang="de" href="../install.xml">Installations-Anleitung</link>
|
|
||||||
<link type="parent" lang="en" href="../install.xml">Manual</link>
|
|
||||||
</link-group>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/language/de/mods/*.*" to="language/de/mods/*.*" />
|
|
||||||
</copy>
|
|
||||||
|
|
||||||
<diy-instructions lang="en">See general install.xml file</diy-instructions>
|
|
||||||
<diy-instructions lang="de">Siehe install.xml</diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id: subsilver2.xml 658 2010-06-01 12:26:23Z marc1706 $ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal - subsilver2 style</title>
|
|
||||||
<title lang="de">board3 Portal - subsilver2 style</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal to your forum.
|
|
||||||
It has several boxes wich can be turned on an off in the ACP and certain settings.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal deinem Forum hinzu.
|
|
||||||
Es hat diverse Boxen, die über das ACP an- / abgeschaltet und eingestellt werden können.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unseren International Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>120</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="parent" lang="de" href="../install.xml">Installations-Anleitung</link>
|
|
||||||
<link type="parent" lang="en" href="../install.xml">Manual</link>
|
|
||||||
</link-group>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/styles/subsilver2/template/portal/*.*" to="styles/subsilver2/template/portal/*.*" />
|
|
||||||
<file from="root/styles/subsilver2/theme/images/portal/*.*" to="styles/subsilver2/theme/images/portal/*.*" />
|
|
||||||
</copy>
|
|
||||||
<open src="styles/subsilver2/template/breadcrumbs.html">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<p class="breadcrumbs"><a href="{U_INDEX}">{L_INDEX}</a><!-- BEGIN navlinks --> » ]]></find>
|
|
||||||
<inline-edit>
|
|
||||||
<inline-find><![CDATA[<a href="{U_INDEX}">{L_INDEX}</a>]]></inline-find>
|
|
||||||
<inline-action type="before-add"><![CDATA[<!-- IF U_PORTAL --><a href="{U_PORTAL}">{L_PORTAL}</a> » <!-- ENDIF -->]]></inline-action>
|
|
||||||
</inline-edit>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="styles/subsilver2/template/overall_header.html">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ <div id="logodesc">
|
|
||||||
<table width="100%" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><a href="{U_INDEX}">{SITE_LOGO_IMG}</a></td>
|
|
||||||
<td width="100%" align="center"><h1>{SITENAME}</h1><span class="gen">{SITE_DESCRIPTION}</span></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>]]></find>
|
|
||||||
<action type="after-add"><![CDATA[<!-- IF not $S_IN_PORTAL or S_DISPLAY_PHPBB_MENU -->]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ <!-- IF S_BOARD_DISABLED and S_USER_LOGGED_IN --> <span style="color: red;">{L_BOARD_DISABLED}</span><!-- ENDIF -->]]></find>
|
|
||||||
<action type="before-add"><![CDATA[<!-- ENDIF -->]]></action>
|
|
||||||
<action type="after-add"><![CDATA[<!-- IF not $S_IN_PORTAL or S_DISPLAY_PHPBB_MENU -->]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ <div id="datebar">
|
|
||||||
<table width="100%" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="gensmall"><!-- IF S_USER_LOGGED_IN -->{LAST_VISIT_DATE}<!-- ENDIF --></td>
|
|
||||||
<td class="gensmall" align="{S_CONTENT_FLOW_END}">{CURRENT_TIME}<br /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>]]></find>
|
|
||||||
<action type="after-add"><![CDATA[<!-- ENDIF -->]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<div id="wrapcentre">]]></find>
|
|
||||||
<action type="after-add"><![CDATA[<!-- IF not $S_IN_PORTAL or S_DISPLAY_PHPBB_MENU -->]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ <!-- INCLUDE breadcrumbs.html -->
|
|
||||||
|
|
||||||
<br />]]></find>
|
|
||||||
<action type="after-add"><![CDATA[<!-- ENDIF -->]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
|
|
||||||
<diy-instructions lang="de"><![CDATA[
|
|
||||||
Aktualisiere deine Styles:
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Themes" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Grafiksammlungen" > jedes > "Aktualisieren"
|
|
||||||
|
|
||||||
Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
|
|
||||||
]]></diy-instructions>
|
|
||||||
<diy-instructions lang="en"><![CDATA[
|
|
||||||
Refresh your Styles:
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Templates" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Themes" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Imagesets" > each > "refresh"
|
|
||||||
|
|
||||||
Clear your cache in the "Administration Control Panel" (ACP) > "General" > "Purge the cache"
|
|
||||||
]]></diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id$ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal - German Language Update for 2.0.0a1</title>
|
|
||||||
<title lang="de">board3 Portal - Deutsche Sprache Aktualisiering für 2.0.0a1</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal to your forum.
|
|
||||||
It has several boxes wich can be turned on an off in the ACP and certain settings.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal deinem Forum hinzu.
|
|
||||||
Es hat diverse Boxen, die über das ACP an- / abgeschaltet und eingestellt werden können.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unseren International Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>120</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="parent" lang="de" href="../update.xml">Update-Anleitung</link>
|
|
||||||
<link type="parent" lang="en" href="../update.xml">Update instructions</link>
|
|
||||||
</link-group>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/language/de/mods/*.*" to="language/de/mods/*.*" />
|
|
||||||
</copy>
|
|
||||||
<delete>
|
|
||||||
<file name="language/de/mods/additional_blocks.php" />
|
|
||||||
<file name="language/de/mods/info_acp_additional_blocks.php" />
|
|
||||||
<file name="language/de/mods/install_portal.php" />
|
|
||||||
<file name="language/de/mods/lang_portal.php" />
|
|
||||||
<file name="language/de/mods/lang_portal_acp.php" />
|
|
||||||
</delete>
|
|
||||||
|
|
||||||
<diy-instructions lang="en">See general install.xml file</diy-instructions>
|
|
||||||
<diy-instructions lang="de">Siehe install.xml</diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id: subsilver2.xml 658 2010-06-01 12:26:23Z marc1706 $ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal - Update subsilver2 style for 2.0.0a1</title>
|
|
||||||
<title lang="de">board3 Portal - Aktualisiere das subsilver2 style für 2.0.0a1</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal to your forum.
|
|
||||||
It has several boxes wich can be turned on an off in the ACP and certain settings.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal deinem Forum hinzu.
|
|
||||||
Es hat diverse Boxen, die über das ACP an- / abgeschaltet und eingestellt werden können.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unseren International Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>120</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="parent" lang="de" href="../update.xml">Update-Anleitung</link>
|
|
||||||
<link type="parent" lang="en" href="../update.xml">Update instructions</link>
|
|
||||||
</link-group>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/styles/subsilver2/template/portal/*.*" to="styles/subsilver2/template/portal/*.*" />
|
|
||||||
<file from="root/styles/subsilver2/theme/images/portal/*.*" to="styles/subsilver2/theme/images/portal/*.*" />
|
|
||||||
</copy>
|
|
||||||
<delete>
|
|
||||||
<file name="styles/subsilver2/template/portal/portal_center.html" />
|
|
||||||
<file name="styles/subsilver2/template/portal/portal_left.html" />
|
|
||||||
<file name="styles/subsilver2/template/portal/portal_right.html" />
|
|
||||||
<file name="styles/subsilver2/template/portal/block/" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/mini_cal_icon_left_arrow.png" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/mini_cal_icon_right_arrow.png" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/portal_login.png" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/portal_minical.png" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/portal_random.png" />
|
|
||||||
<file name="styles/subsilver2/theme/images/portal/portal_stats.png" />
|
|
||||||
</delete>
|
|
||||||
<diy-instructions lang="de"><![CDATA[
|
|
||||||
Aktualisiere deine Styles:
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Themes" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Grafiksammlungen" > jedes > "Aktualisieren"
|
|
||||||
|
|
||||||
Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
|
|
||||||
]]></diy-instructions>
|
|
||||||
<diy-instructions lang="en"><![CDATA[
|
|
||||||
Refresh your Styles:
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Templates" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Themes" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Imagesets" > each > "refresh"
|
|
||||||
|
|
||||||
Clear your cache in the "Administration Control Panel" (ACP) > "General" > "Purge the cache"
|
|
||||||
]]></diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id: subsilver2.xml 658 2010-06-01 12:26:23Z marc1706 $ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal - Convert from Board3 Portal 1.0.6</title>
|
|
||||||
<title lang="de">board3 Portal - Konvertiere von Board3 Portal 1.0.6</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal to your forum.
|
|
||||||
It has several boxes wich can be turned on an off in the ACP and certain settings.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal deinem Forum hinzu.
|
|
||||||
Es hat diverse Boxen, die über das ACP an- / abgeschaltet und eingestellt werden können.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unseren International Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>120</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="parent" lang="de" href="../../install.xml">Installations-Anleitung</link>
|
|
||||||
<link type="parent" lang="en" href="../../install.xml">Manual</link>
|
|
||||||
<link type="template" lang="en" href="contrib/subsilver2.xml">Update subsilver2 to Board3 Portal 2.0.0a1</link>
|
|
||||||
<link type="template" lang="de" href="contrib/subsilver2.xml">Aktualisiere subsilver2 für Board3 Portal 2.0.0a1</link>
|
|
||||||
<link type="language" lang="en" href="contrib/subsilver2.xml">Update German language to Board3 Portal 2.0.0a1</link>
|
|
||||||
<link type="language" lang="de" href="contrib/subsilver2.xml">Aktualisiere deutsche Sprachdateien für Board3 Portal 2.0.0a1</link>
|
|
||||||
</link-group>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/portal.php" to="portal.php" />
|
|
||||||
<file from="root/adm/images/*.*" to="adm/images/*.*" />
|
|
||||||
<file from="root/adm/mods/board3_portal_check_version.php" to="adm/mods/board3_portal_check_version.php" />
|
|
||||||
<file from="root/adm/style/*.*" to="adm/style/*.*" />
|
|
||||||
<file from="root/includes/acp/*.*" to="includes/acp/*.*" />
|
|
||||||
<file from="root/install/index.php" to="install/index.php" />
|
|
||||||
<file from="root/language/en/mods/*.*" to="language/en/mods/*.*" />
|
|
||||||
<file from="root/portal/*.*" to="portal/*.*" />
|
|
||||||
<file from="root/styles/prosilver/template/portal/*.*" to="styles/prosilver/template/portal/*.*" />
|
|
||||||
<file from="root/styles/prosilver/theme/portal.css" to="styles/prosilver/theme/portal.css" />
|
|
||||||
<file from="root/styles/prosilver/theme/images/portal/*.*" to="styles/prosilver/theme/images/portal/*.*" />
|
|
||||||
<file from="root/umil/*.*" to="umil/*.*" />
|
|
||||||
</copy>
|
|
||||||
<delete>
|
|
||||||
<file name="adm/style/acp_portal.html" />
|
|
||||||
<file name="language/en/mods/additional_blocks.php" />
|
|
||||||
<file name="language/en/mods/info_acp_additional_blocks.php" />
|
|
||||||
<file name="language/en/mods/install_portal.php" />
|
|
||||||
<file name="language/en/mods/lang_portal.php" />
|
|
||||||
<file name="language/en/mods/lang_portal_acp.php" />
|
|
||||||
<file name="portal/block/*.*" />
|
|
||||||
<file name="styles/prosilver/template/portal/portal_center.html" />
|
|
||||||
<file name="styles/prosilver/template/portal/portal_left.html" />
|
|
||||||
<file name="styles/prosilver/template/portal/portal_right.html" />
|
|
||||||
<file name="styles/prosilver/template/portal/block/" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/mini_cal_icon_left_arrow.png" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/mini_cal_icon_right_arrow.png" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/portal_login.png" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/portal_minical.png" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/portal_random.png" />
|
|
||||||
<file name="styles/prosilver/theme/images/portal/portal_stats.png" />
|
|
||||||
</delete>
|
|
||||||
<open src="viewonline.php">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ $user->add_lang('mods/lang_portal');]]></find>
|
|
||||||
<action type="replace-with"><![CDATA[ $user->add_lang('mods/portal');]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="includes/constants.php">
|
|
||||||
<edit>
|
|
||||||
<remove><![CDATA[define('PORTAL_CONFIG_TABLE', $table_prefix . 'portal_config');]]></remove>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="includes/functions.php">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ $user->add_lang(array('mods/lang_portal', 'mods/additional_blocks'));
|
|
||||||
if (!function_exists('obtain_portal_config'))
|
|
||||||
{
|
|
||||||
include($phpbb_root_path . 'portal/includes/functions.' . $phpEx);
|
|
||||||
}
|
|
||||||
if(sql_table_exists(PORTAL_CONFIG_TABLE) == true)
|
|
||||||
{
|
|
||||||
$portal_config = obtain_portal_config();
|
|
||||||
}]]></find>
|
|
||||||
<action type="replace-with"><![CDATA[ $user->add_lang('mods/portal');]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ 'U_PORTAL' => (isset($portal_config['portal_enable']) && $portal_config['portal_enable'] == true) ? append_sid("{$phpbb_root_path}portal.$phpEx") : '',]]></find>
|
|
||||||
<action type="replace-with"><![CDATA[ 'U_PORTAL' => (isset($config['board3_enable']) && $config['board3_enable'] && $auth->acl_get('u_view_portal')) ? append_sid("{$phpbb_root_path}portal.$phpEx") : '',]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<php-installer>install/index.php</php-installer>
|
|
||||||
<diy-instructions lang="de"><![CDATA[Rufe install/index.php auf und führe den Installer aus
|
|
||||||
|
|
||||||
Aktualisiere deine Styles:
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Themes" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Grafiksammlungen" > jedes > "Aktualisieren"
|
|
||||||
|
|
||||||
Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
|
|
||||||
]]></diy-instructions>
|
|
||||||
<diy-instructions lang="en"><![CDATA[Browse to install/index.php and run the installer
|
|
||||||
|
|
||||||
Refresh your Styles:
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Templates" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Themes" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Imagesets" > each > "refresh"
|
|
||||||
|
|
||||||
Clear your cache in the "Administration Control Panel" (ACP) > "General" > "Purge the cache"
|
|
||||||
]]></diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
300
controller/helper.php
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\controller;
|
||||||
|
|
||||||
|
class helper
|
||||||
|
{
|
||||||
|
/** @var \board3\portal\portal\columns */
|
||||||
|
protected $portal_columns;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auth object
|
||||||
|
* @var \phpbb\auth\auth
|
||||||
|
*/
|
||||||
|
protected $auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB Config object
|
||||||
|
* @var \phpbb\config\config
|
||||||
|
*/
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/** @var \phpbb\language\language */
|
||||||
|
protected $language;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template object
|
||||||
|
* @var \phpbb\template
|
||||||
|
*/
|
||||||
|
protected $template;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User object
|
||||||
|
* @var \phpbb\user
|
||||||
|
*/
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB root path
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $phpbb_root_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP file extension
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $php_ext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal root path
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $root_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB path helper
|
||||||
|
* @var \phpbb\path_helper
|
||||||
|
*/
|
||||||
|
protected $path_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal Helper object
|
||||||
|
* @var \board3\portal\includes\helper
|
||||||
|
*/
|
||||||
|
protected $portal_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal modules array
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $portal_modules;
|
||||||
|
|
||||||
|
/** @var int Board3 module disabled */
|
||||||
|
const B3_MODULE_DISABLED = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* NOTE: The parameters of this method must match in order and type with
|
||||||
|
* the dependencies defined in the services.yml file for this service.
|
||||||
|
* @param \phpbb\auth\auth $auth Auth object
|
||||||
|
* @param \board3\portal\portal\columns $portal_columns Board3 Portal columns object
|
||||||
|
* @param \phpbb\config\config $config phpBB Config object
|
||||||
|
* @param \phpbb\language\language $language phpBB language
|
||||||
|
* @param \phpbb\template $template Template object
|
||||||
|
* @param \phpbb\user $user User object
|
||||||
|
* @param \phpbb\path_helper $path_helper phpBB path helper
|
||||||
|
* @param \board3\portal\includes\helper $portal_helper Portal helper class
|
||||||
|
* @param string $phpbb_root_path phpBB root path
|
||||||
|
* @param string $php_ext PHP file extension
|
||||||
|
*/
|
||||||
|
public function __construct($auth, $portal_columns, $config, $language, $template, $user, $path_helper, $portal_helper, $phpbb_root_path, $php_ext)
|
||||||
|
{
|
||||||
|
$this->auth = $auth;
|
||||||
|
$this->portal_columns = $portal_columns;
|
||||||
|
$this->config = $config;
|
||||||
|
$this->language = $language;
|
||||||
|
$this->template = $template;
|
||||||
|
$this->user = $user;
|
||||||
|
$this->path_helper = $path_helper;
|
||||||
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
|
$this->php_ext = $php_ext;
|
||||||
|
$this->portal_helper = $portal_helper;
|
||||||
|
|
||||||
|
$this->root_path = str_replace($this->path_helper->get_web_root_path(), '', $phpbb_root_path . 'ext/board3/portal/');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if user should be able to access this page. Redirect to index
|
||||||
|
* if this does not apply.
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function check_permission()
|
||||||
|
{
|
||||||
|
if (empty($this->config['board3_enable']) || !$this->auth->acl_get('u_view_portal'))
|
||||||
|
{
|
||||||
|
redirect(append_sid($this->phpbb_root_path . 'index' . $this->php_ext));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if online list should be displayed
|
||||||
|
*
|
||||||
|
* @return mixed True if online list should be display, current value
|
||||||
|
* if unsure
|
||||||
|
*/
|
||||||
|
public function check_online_list($module_classname, $display_online)
|
||||||
|
{
|
||||||
|
return ($module_classname === '\board3\portal\modules\whois_online') ? true : $display_online;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get portal module and run module start checks
|
||||||
|
*
|
||||||
|
* @param array $row Module row
|
||||||
|
*
|
||||||
|
* @return mixed False if one of the module checks failed, the module
|
||||||
|
* object if checks were successful
|
||||||
|
*/
|
||||||
|
public function get_portal_module($row)
|
||||||
|
{
|
||||||
|
// Do not try to load non-existent or disabled modules
|
||||||
|
if ($row['module_status'] == self::B3_MODULE_DISABLED || !is_object($module = $this->portal_helper->get_module($row['module_classname'])))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if module shouldn't be loaded
|
||||||
|
if ($this->check_column_disabled($row))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check for permissions before loading anything
|
||||||
|
* the default group of a user always defines his/her permission
|
||||||
|
*/
|
||||||
|
return ($this->check_group_access($row)) ? $module : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if column is disabled
|
||||||
|
*
|
||||||
|
* @param array $row Module database row
|
||||||
|
*
|
||||||
|
* @return bool False if column is not disabled, true if it is
|
||||||
|
*/
|
||||||
|
protected function check_column_disabled($row)
|
||||||
|
{
|
||||||
|
return ($this->config['board3_left_column'] === false && $this->portal_columns->number_to_string($row['module_column']) === 'left') || ($this->config['board3_right_column'] === false && $this->portal_columns->number_to_string($row['module_column']) === 'right');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if user is in required groups.
|
||||||
|
* If the group_ary is empty, this means that there are no limitation on
|
||||||
|
* which groups can see this module.
|
||||||
|
*
|
||||||
|
* @param array $row Module row
|
||||||
|
*
|
||||||
|
* @return bool True if group has access, false if not
|
||||||
|
*/
|
||||||
|
protected function check_group_access($row)
|
||||||
|
{
|
||||||
|
$group_ary = (!empty($row['module_group_ids'])) ? explode(',', $row['module_group_ids']) : '';
|
||||||
|
if ((is_array($group_ary) && !in_array($this->user->data['group_id'], $group_ary)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load language file of module
|
||||||
|
*
|
||||||
|
* @param object $module Module of which language file should be loaded
|
||||||
|
*/
|
||||||
|
public function load_module_language($module)
|
||||||
|
{
|
||||||
|
if ($language_file = $module->get_language())
|
||||||
|
{
|
||||||
|
// Load language file from vendor if specified
|
||||||
|
if (is_array($language_file))
|
||||||
|
{
|
||||||
|
$this->language->add_lang($language_file['file'], $language_file['vendor']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->language->add_lang('modules/' . $language_file, 'board3/portal');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assign module's template vars
|
||||||
|
*
|
||||||
|
* @param array $row Database row of module
|
||||||
|
* @param mixed $template_module Template data as returned by module
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function assign_module_vars($row, $template_module)
|
||||||
|
{
|
||||||
|
$fa_styles = json_decode($this->config['board3_portal_fa_styles']);
|
||||||
|
$use_fa = !empty($fa_styles) && in_array($this->user->style['style_name'], $fa_styles);
|
||||||
|
|
||||||
|
if (is_array($template_module))
|
||||||
|
{
|
||||||
|
$this->template->assign_block_vars('modules_' . $this->portal_columns->number_to_string($row['module_column']), array(
|
||||||
|
'TEMPLATE_FILE' => $this->parse_template_file($template_module['template']),
|
||||||
|
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . ltrim($this->root_path . 'styles/all/theme/images/portal/' . $template_module['image_src'], './'),
|
||||||
|
'TITLE' => $template_module['title'],
|
||||||
|
'CODE' => $template_module['code'],
|
||||||
|
'MODULE_ID' => $row['module_id'],
|
||||||
|
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||||
|
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||||
|
'FA_ICON' => isset($row['module_fa_icon']) ? utf8_htmlspecialchars($row['module_fa_icon']) : '',
|
||||||
|
'FA_SIZE' => $row['module_fa_size'] ?? '',
|
||||||
|
'FA_ENABLED' => $use_fa,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->template->assign_block_vars('modules_' . $this->portal_columns->number_to_string($row['module_column']), array(
|
||||||
|
'TEMPLATE_FILE' => $this->parse_template_file($template_module),
|
||||||
|
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . ltrim($this->root_path . 'styles/all/theme/images/portal/' . $row['module_image_src'], './'),
|
||||||
|
'IMAGE_WIDTH' => $row['module_image_width'],
|
||||||
|
'IMAGE_HEIGHT' => $row['module_image_height'],
|
||||||
|
'MODULE_ID' => $row['module_id'],
|
||||||
|
'TITLE' => (isset($this->user->lang[$row['module_name']])) ? $this->user->lang[$row['module_name']] : utf8_normalize_nfc($row['module_name']),
|
||||||
|
'FA_ICON' => isset($row['module_fa_icon']) ? utf8_htmlspecialchars($row['module_fa_icon']) : '',
|
||||||
|
'FA_SIZE' => $row['module_fa_size'] ?? '',
|
||||||
|
'FA_ENABLED' => $use_fa,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run initial tasks that are required for a properly setup extension
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function run_initial_tasks()
|
||||||
|
{
|
||||||
|
// Check for permissions first
|
||||||
|
$this->check_permission();
|
||||||
|
|
||||||
|
// Load language file
|
||||||
|
$this->language->add_lang('portal', 'board3/portal');
|
||||||
|
|
||||||
|
// Obtain portal config
|
||||||
|
obtain_portal_config();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse template file by prefixing default modules with the portal path
|
||||||
|
*
|
||||||
|
* @param string $template_file HTML template
|
||||||
|
*
|
||||||
|
* @return string Parsed template file
|
||||||
|
*/
|
||||||
|
protected function parse_template_file($template_file)
|
||||||
|
{
|
||||||
|
if (strpos($template_file, '@') === false)
|
||||||
|
{
|
||||||
|
$template_file = 'portal/modules/' . $template_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $template_file;
|
||||||
|
}
|
||||||
|
}
|
||||||
368
controller/main.php
Normal file
@@ -0,0 +1,368 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\controller;
|
||||||
|
|
||||||
|
class main
|
||||||
|
{
|
||||||
|
/** @var \board3\portal\portal\columns */
|
||||||
|
protected $portal_columns;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB Config object
|
||||||
|
* @var \phpbb\config\config
|
||||||
|
*/
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Board3 Portal controller helper
|
||||||
|
* @var \board3\portal\controller\helper
|
||||||
|
*/
|
||||||
|
protected $controller_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template object
|
||||||
|
* @var \phpbb\template\template
|
||||||
|
*/
|
||||||
|
protected $template;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User object
|
||||||
|
* @var \phpbb\user
|
||||||
|
*/
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB root path
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $phpbb_root_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP file extension
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $php_ext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal root path
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $root_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal includes path
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $includes_path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB path helper
|
||||||
|
* @var \phpbb\path_helper
|
||||||
|
*/
|
||||||
|
protected $path_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal modules count
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $module_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal modules array
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $portal_modules;
|
||||||
|
|
||||||
|
/** @var int Allowed columns */
|
||||||
|
protected $allowed_columns;
|
||||||
|
|
||||||
|
/** @var bool Portal active flag */
|
||||||
|
protected $portal_active = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* NOTE: The parameters of this method must match in order and type with
|
||||||
|
* the dependencies defined in the services.yml file for this service.
|
||||||
|
* @param \board3\portal\portal\columns $portal_columns Board3 Portal columns object
|
||||||
|
* @param \phpbb\config\config $config phpBB Config object
|
||||||
|
* @param \board3\portal\controller\helper $controller_helper Controller helper
|
||||||
|
* @param \phpbb\template\template $template Template object
|
||||||
|
* @param \phpbb\user $user User object
|
||||||
|
* @param \phpbb\path_helper $path_helper phpBB path helper
|
||||||
|
* @param string $phpbb_root_path phpBB root path
|
||||||
|
* @param string $php_ext PHP file extension
|
||||||
|
* @param string $config_table Board3 config table
|
||||||
|
* @param string $modules_table Board3 modules table
|
||||||
|
*/
|
||||||
|
public function __construct($portal_columns, $config, $controller_helper, $template, $user, $path_helper, $phpbb_root_path, $php_ext, $config_table, $modules_table)
|
||||||
|
{
|
||||||
|
global $portal_root_path;
|
||||||
|
|
||||||
|
$this->portal_columns = $portal_columns;
|
||||||
|
$this->config = $config;
|
||||||
|
$this->controller_helper = $controller_helper;
|
||||||
|
$this->template = $template;
|
||||||
|
$this->user = $user;
|
||||||
|
$this->path_helper = $path_helper;
|
||||||
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
|
$this->php_ext = $php_ext;
|
||||||
|
|
||||||
|
$this->includes_path = $phpbb_root_path . 'ext/board3/portal/includes/';
|
||||||
|
$this->root_path = $phpbb_root_path . 'ext/board3/portal/';
|
||||||
|
$portal_root_path = $this->root_path;
|
||||||
|
if (!defined('PORTAL_MODULES_TABLE'))
|
||||||
|
{
|
||||||
|
define('PORTAL_MODULES_TABLE', $modules_table);
|
||||||
|
define('PORTAL_CONFIG_TABLE', $config_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('obtain_portal_config'))
|
||||||
|
{
|
||||||
|
include($this->includes_path . 'functions' . $this->php_ext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension front handler method. This is called automatically when your extension is accessed
|
||||||
|
* through index.php?ext=example/foobar
|
||||||
|
*
|
||||||
|
* @param array $columns Columns to display
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function handle($columns = array())
|
||||||
|
{
|
||||||
|
// Do not run portal if it's already active
|
||||||
|
if ($this->portal_active)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->controller_helper->run_initial_tasks();
|
||||||
|
|
||||||
|
// Set portal active
|
||||||
|
$this->portal_active = true;
|
||||||
|
|
||||||
|
// Check if we should limit the columns to display
|
||||||
|
$this->set_allowed_columns($columns);
|
||||||
|
|
||||||
|
// Set default data
|
||||||
|
$this->portal_modules = obtain_portal_modules();
|
||||||
|
$display_online = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set up column_count array
|
||||||
|
* with this we can hide unneeded parts of the portal
|
||||||
|
*/
|
||||||
|
$this->module_count = array(
|
||||||
|
'total' => 0,
|
||||||
|
'top' => 0,
|
||||||
|
'left' => 0,
|
||||||
|
'center' => 0,
|
||||||
|
'right' => 0,
|
||||||
|
'bottom' => 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* start assigning block vars
|
||||||
|
*/
|
||||||
|
foreach ($this->portal_modules as $row)
|
||||||
|
{
|
||||||
|
if (!($module = $this->controller_helper->get_portal_module($row)))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load module language file
|
||||||
|
$this->controller_helper->load_module_language($module);
|
||||||
|
|
||||||
|
$template_module = $this->get_module_template($row, $module);
|
||||||
|
|
||||||
|
if (empty($template_module))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom Blocks that have been defined in the ACP will return an array instead of just the name of the template file
|
||||||
|
$this->controller_helper->assign_module_vars($row, $template_module);
|
||||||
|
|
||||||
|
// Check if we need to show the online list
|
||||||
|
$display_online = $this->controller_helper->check_online_list($row['module_classname'], $display_online);
|
||||||
|
|
||||||
|
unset($template_module);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redirect to index if there are currently no active modules
|
||||||
|
$this->check_redirect();
|
||||||
|
|
||||||
|
// Assign specific vars
|
||||||
|
$this->assign_template_vars();
|
||||||
|
|
||||||
|
// Return if columns were specified. Columns are only specified if
|
||||||
|
// portal columns are displayed on pages other than the portal itself.
|
||||||
|
if ($this->allowed_columns !== 0)
|
||||||
|
{
|
||||||
|
$this->template->assign_var('S_PORTAL_ALL', true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// And now to output the page.
|
||||||
|
page_header($this->user->lang('PORTAL'), $display_online);
|
||||||
|
|
||||||
|
// foobar_body.html is in ./ext/foobar/example/styles/prosilver/template/foobar_body.html
|
||||||
|
$this->template->set_filenames(array(
|
||||||
|
'body' => 'portal/portal_body.html'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->make_jumpbox($this->config['board3_display_jumpbox']);
|
||||||
|
|
||||||
|
page_footer();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get module's template
|
||||||
|
*
|
||||||
|
* @param array $row Database row of module
|
||||||
|
* @param object $module Module object
|
||||||
|
*
|
||||||
|
* @return mixed False if module is not inside possible columns or if
|
||||||
|
* module shouldn't be shown, otherwise module's template
|
||||||
|
*/
|
||||||
|
public function get_module_template($row, $module)
|
||||||
|
{
|
||||||
|
$template_module = false;
|
||||||
|
|
||||||
|
$column = $this->portal_columns->number_to_string($row['module_column']);
|
||||||
|
|
||||||
|
// Make sure we should actually load this module
|
||||||
|
if (!$this->display_module_allowed($this->portal_columns->string_to_constant($column)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->is_enabled_side_column($column))
|
||||||
|
{
|
||||||
|
++$this->module_count[$column];
|
||||||
|
$template_module = $module->get_template_side($row['module_id']);
|
||||||
|
}
|
||||||
|
else if (in_array($column, array('top', 'center', 'bottom')))
|
||||||
|
{
|
||||||
|
++$this->module_count[$column];
|
||||||
|
$template_module = $module->get_template_center($row['module_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $template_module;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if column is enabled side column
|
||||||
|
*
|
||||||
|
* @param string $column Column string
|
||||||
|
*
|
||||||
|
* @return bool True if column is side column and enabled, false if not
|
||||||
|
*/
|
||||||
|
protected function is_enabled_side_column($column)
|
||||||
|
{
|
||||||
|
return in_array($column, array('left', 'right')) && ($this->config['board3_' . $column . '_column'] || $this->allowed_columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if portal needs to redirect to index page
|
||||||
|
*/
|
||||||
|
protected function check_redirect()
|
||||||
|
{
|
||||||
|
$this->module_count['total'] = sizeof($this->portal_modules);
|
||||||
|
|
||||||
|
if ($this->module_count['total'] < 1)
|
||||||
|
{
|
||||||
|
redirect(append_sid($this->phpbb_root_path . 'index' . $this->php_ext));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assign template vars for portal
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function assign_template_vars()
|
||||||
|
{
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'S_PORTAL_LEFT_COLUMN' => $this->config['board3_left_column_width'],
|
||||||
|
'S_PORTAL_RIGHT_COLUMN' => $this->config['board3_right_column_width'],
|
||||||
|
'S_LEFT_COLUMN' => $this->check_module_count('left', $this->config['board3_left_column']),
|
||||||
|
'S_CENTER_COLUMN' => $this->check_module_count('center'),
|
||||||
|
'S_RIGHT_COLUMN' => $this->check_module_count('right', $this->config['board3_right_column']),
|
||||||
|
'S_TOP_COLUMN' => $this->check_module_count('top'),
|
||||||
|
'S_BOTTOM_COLUMN' => $this->check_module_count('bottom'),
|
||||||
|
'S_DISPLAY_PHPBB_MENU' => $this->config['board3_phpbb_menu'],
|
||||||
|
'B3P_DISPLAY_JUMPBOX' => $this->config['board3_display_jumpbox'],
|
||||||
|
'T_EXT_THEME_PATH' => $this->path_helper->get_web_root_path() . ltrim($this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/', './'),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check module count and related config setting
|
||||||
|
*
|
||||||
|
* @param string $column Column to check
|
||||||
|
* @param bool $config Config value to check
|
||||||
|
*
|
||||||
|
* @return bool True if module count is bigger than 0 and $config is true
|
||||||
|
*/
|
||||||
|
protected function check_module_count($column, $config = true)
|
||||||
|
{
|
||||||
|
return $this->module_count[$column] > 0 && ($config || $this->allowed_columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper method for running make_jumpbox
|
||||||
|
*
|
||||||
|
* @param bool $display Whether jumpbox should be displayed
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function make_jumpbox($display = false)
|
||||||
|
{
|
||||||
|
if ($display)
|
||||||
|
{
|
||||||
|
make_jumpbox(append_sid("{$this->phpbb_root_path}viewforum{$this->php_ext}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether displaying the module is allowed
|
||||||
|
*
|
||||||
|
* @param int $module_column The column of the module
|
||||||
|
*
|
||||||
|
* @return bool True if module can be displayed, false if not
|
||||||
|
*/
|
||||||
|
protected function display_module_allowed($module_column)
|
||||||
|
{
|
||||||
|
return ($this->allowed_columns > 0) ? (bool) ($this->allowed_columns & $module_column) : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set allowed columns based on supplied columns array
|
||||||
|
*
|
||||||
|
* @param array $columns Allowed columns
|
||||||
|
*/
|
||||||
|
protected function set_allowed_columns($columns)
|
||||||
|
{
|
||||||
|
if (!empty($columns))
|
||||||
|
{
|
||||||
|
foreach ($columns as $column => $show)
|
||||||
|
{
|
||||||
|
$this->allowed_columns |= ($show) ? $this->portal_columns->string_to_constant($column) : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->allowed_columns = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
197
event/listener.php
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\event;
|
||||||
|
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
|
class listener implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/** @var \board3\portal\controller\main */
|
||||||
|
protected $board3_controller;
|
||||||
|
|
||||||
|
/** @var \phpbb\auth\auth */
|
||||||
|
protected $auth;
|
||||||
|
|
||||||
|
/** @var \phpbb\config\config */
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/** @var \phpbb\controller\helper */
|
||||||
|
protected $controller_helper;
|
||||||
|
|
||||||
|
/** @var \phpbb\path_helper */
|
||||||
|
protected $path_helper;
|
||||||
|
|
||||||
|
/** @var \phpbb\template\template */
|
||||||
|
protected $template;
|
||||||
|
|
||||||
|
/** @var \phpbb\user */
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
/** @var string phpEx */
|
||||||
|
protected $php_ext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor of Board3 Portal event listener
|
||||||
|
*
|
||||||
|
* @param \board3\portal\controller\main $board3_controller Board3 Portal controller
|
||||||
|
* @param \phpbb\auth\auth $auth phpBB auth object
|
||||||
|
* @param \phpbb\config\config $config phpBB config
|
||||||
|
* @param \phpbb\controller\helper $controller_helper Controller helper object
|
||||||
|
* @param \phpbb\path_helper $path_helper phpBB path helper
|
||||||
|
* @param \phpbb\template\template $template Template object
|
||||||
|
* @param \phpbb\user $user User object
|
||||||
|
* @param string $php_ext phpEx
|
||||||
|
*/
|
||||||
|
public function __construct(\board3\portal\controller\main $board3_controller, \phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\controller\helper $controller_helper, \phpbb\path_helper $path_helper, \phpbb\template\template $template, \phpbb\user $user, $php_ext)
|
||||||
|
{
|
||||||
|
$this->board3_controller = $board3_controller;
|
||||||
|
$this->auth = $auth;
|
||||||
|
$this->config = $config;
|
||||||
|
$this->controller_helper = $controller_helper;
|
||||||
|
$this->path_helper = $path_helper;
|
||||||
|
$this->template = $template;
|
||||||
|
$this->user = $user;
|
||||||
|
$this->php_ext = $php_ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assign functions defined in this class to event listeners in the core
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'core.user_setup' => 'load_portal_language',
|
||||||
|
'core.viewonline_overwrite_location' => 'viewonline_page',
|
||||||
|
'core.page_header' => 'add_portal_link',
|
||||||
|
'core.permissions' => 'load_permissions',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load portal language during user setup
|
||||||
|
*
|
||||||
|
* @param object $event The event object
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function load_portal_language($event)
|
||||||
|
{
|
||||||
|
$lang_set_ext = $event['lang_set_ext'];
|
||||||
|
$lang_set_ext[] = array(
|
||||||
|
'ext_name' => 'board3/portal',
|
||||||
|
'lang_set' => 'portal',
|
||||||
|
);
|
||||||
|
$event['lang_set_ext'] = $lang_set_ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show users as viewing the portals on Who Is Online page
|
||||||
|
*
|
||||||
|
* @param object $event The event object
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function viewonline_page($event)
|
||||||
|
{
|
||||||
|
if ($event['on_page'][1] == 'app' && strrpos($event['row']['session_page'], 'app.' . $this->php_ext . '/portal') === 0)
|
||||||
|
{
|
||||||
|
$event['location'] = $this->user->lang('VIEWING_PORTAL');
|
||||||
|
$event['location_url'] = $this->controller_helper->route('board3_portal_controller');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add portal link if user is authed to see it
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
public function add_portal_link($event)
|
||||||
|
{
|
||||||
|
if (!$this->has_portal_access())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->config['board3_show_all_pages'])
|
||||||
|
{
|
||||||
|
$event['display_online_list'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($this->controller_helper->get_current_url(), '/portal') === false)
|
||||||
|
{
|
||||||
|
$portal_link = $this->controller_helper->route('board3_portal_controller');
|
||||||
|
$this->check_portal_all();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$portal_link = $this->path_helper->remove_web_root_path($this->controller_helper->route('board3_portal_controller'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->template->assign_vars(array(
|
||||||
|
'U_PORTAL' => $portal_link,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if user should be able to access portal
|
||||||
|
*
|
||||||
|
* @return bool True of user should be able to access it, false if not
|
||||||
|
*/
|
||||||
|
protected function has_portal_access()
|
||||||
|
{
|
||||||
|
return $this->auth->acl_get('u_view_portal') && $this->config['board3_enable'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if portal on all pages should be shown and display it accordignly
|
||||||
|
*/
|
||||||
|
protected function check_portal_all()
|
||||||
|
{
|
||||||
|
// Check if we should show the portal
|
||||||
|
if (isset($this->config['board3_show_all_pages']) && $this->config['board3_show_all_pages'] && !$this->board_disabled())
|
||||||
|
{
|
||||||
|
$this->display_portal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display portal on all pages
|
||||||
|
*/
|
||||||
|
protected function display_portal()
|
||||||
|
{
|
||||||
|
$this->board3_controller->handle(array(
|
||||||
|
'left' => $this->config['board3_show_all_side'] == false,
|
||||||
|
'right' => $this->config['board3_show_all_side'] == true,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the board has been disabled and should not be shown
|
||||||
|
*
|
||||||
|
* @return bool True if board has been disabled, false if not
|
||||||
|
*/
|
||||||
|
protected function board_disabled()
|
||||||
|
{
|
||||||
|
return $this->config['board_disable'] && !defined('SKIP_CHECK_DISABLED') && !$this->auth->acl_gets('a_', 'm_') && !$this->auth->acl_getf_global('m_');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load permissions into permissions array
|
||||||
|
*
|
||||||
|
* @param array $event Event data
|
||||||
|
*/
|
||||||
|
public function load_permissions($event)
|
||||||
|
{
|
||||||
|
$permissions = $event['permissions'];
|
||||||
|
$permissions['a_manage_portal'] = array('lang' => 'ACL_A_MANAGE_PORTAL', 'cat' => 'misc');
|
||||||
|
$permissions['u_view_portal'] = array('lang' => 'ACL_U_VIEW_PORTAL', 'cat' => 'misc');
|
||||||
|
$event['permissions'] = $permissions;
|
||||||
|
}
|
||||||
|
}
|
||||||
63
ext.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal;
|
||||||
|
|
||||||
|
class ext extends \phpbb\extension\base
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check whether the extension can be enabled.
|
||||||
|
* Provides meaningful(s) error message(s) and the back-link on failure.
|
||||||
|
* CLI and 3.2/3.3 compatible.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function is_enableable()
|
||||||
|
{
|
||||||
|
$phpbb_min_ver = '3.2.6';
|
||||||
|
$phpbb_below_ver = '3.4.0-dev';
|
||||||
|
$php_min_ver = '7.1.0';
|
||||||
|
$php_below_ver = '8.3.0-dev';
|
||||||
|
|
||||||
|
if (phpbb_version_compare(PHPBB_VERSION, '3.2.0-dev', '<'))
|
||||||
|
{
|
||||||
|
$lang = $this->container->get('user');
|
||||||
|
$lang->add_lang_ext('board3/portal', 'b3p_enable_error');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$lang = $this->container->get('language');
|
||||||
|
$lang->add_lang('b3p_enable_error', 'board3/portal');
|
||||||
|
}
|
||||||
|
$error_message = [$lang->lang('ERROR_B3P_EXTENSION_NOT_ENABLEABLE', $lang->lang('BOARD3_PORTAL'))];
|
||||||
|
|
||||||
|
if ((phpbb_version_compare(PHPBB_VERSION, $phpbb_min_ver, '<') || phpbb_version_compare(PHPBB_VERSION, $phpbb_below_ver, '>=')))
|
||||||
|
{
|
||||||
|
$error_message[] = $lang->lang('ERROR_B3P_MSG_PHPBB_WRONG_VERSION', $phpbb_min_ver, $phpbb_below_ver);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((phpbb_version_compare(PHP_VERSION, $php_min_ver, '<') || phpbb_version_compare(PHP_VERSION, $php_below_ver, '>=')))
|
||||||
|
{
|
||||||
|
$error_message[] = $lang->lang('ERROR_B3P_MSG_PHP_WRONG_VERSION', $php_min_ver, $php_below_ver);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (phpbb_version_compare(PHPBB_VERSION, '3.3.0-dev', '<') && count($error_message) > 1)
|
||||||
|
{
|
||||||
|
$error_message = implode('<br>', $error_message);
|
||||||
|
trigger_error($error_message . $this->get_adm_back_link(), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (count($error_message) > 1) ? $error_message : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_adm_back_link()
|
||||||
|
{
|
||||||
|
return adm_back_link(append_sid('index.' . $this->container->getParameter('core.php_ext'), 'i=acp_extensions&mode=main'));
|
||||||
|
}
|
||||||
|
}
|
||||||
342
git-tools/hooks/commit-msg
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# A hook to check for correct syntax similar to phpBB3 commit messages per:
|
||||||
|
# * <http://wiki.phpbb.com/display/DEV/Git>
|
||||||
|
# * <http://area51.phpbb.com/phpBB/viewtopic.php?p=209919#p209919>
|
||||||
|
#
|
||||||
|
# This is a commit-msg hook.
|
||||||
|
#
|
||||||
|
# To install this you can either copy or symlink it to
|
||||||
|
# $GIT_DIR/hooks
|
||||||
|
|
||||||
|
config_ns="b3p.hooks.commit-msg";
|
||||||
|
|
||||||
|
if [ "$(git config --bool $config_ns.fatal)" = "true" ]
|
||||||
|
then
|
||||||
|
fatal=1;
|
||||||
|
severity=Error;
|
||||||
|
else
|
||||||
|
fatal=0;
|
||||||
|
severity=Warning;
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug_level=$(git config --int $config_ns.debug || echo 0);
|
||||||
|
|
||||||
|
# Error codes
|
||||||
|
ERR_LENGTH=1;
|
||||||
|
ERR_HEADER=2;
|
||||||
|
ERR_EMPTY=3;
|
||||||
|
ERR_DESCRIPTION=4;
|
||||||
|
ERR_FOOTER=5;
|
||||||
|
ERR_EOF=6;
|
||||||
|
ERR_UNKNOWN=42;
|
||||||
|
|
||||||
|
debug()
|
||||||
|
{
|
||||||
|
local level;
|
||||||
|
|
||||||
|
level=$1;
|
||||||
|
shift;
|
||||||
|
|
||||||
|
if [ $debug_level -ge $level ]
|
||||||
|
then
|
||||||
|
echo $@;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
quit()
|
||||||
|
{
|
||||||
|
if [ $1 -eq 0 ] || [ $1 -eq $ERR_UNKNOWN ]
|
||||||
|
then
|
||||||
|
# success
|
||||||
|
exit 0;
|
||||||
|
elif [ $fatal -eq 0 ]
|
||||||
|
then
|
||||||
|
# problems found but fatal is false
|
||||||
|
complain 'Please run `git commit --amend` and fix the problems mentioned.' 1>&2
|
||||||
|
exit 0;
|
||||||
|
else
|
||||||
|
complain "Aborting commit." 1>&2
|
||||||
|
exit $1;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
use_color()
|
||||||
|
{
|
||||||
|
if [ -z "$use_color_cached" ]
|
||||||
|
then
|
||||||
|
case $(git config --bool $config_ns.color)
|
||||||
|
in
|
||||||
|
false)
|
||||||
|
use_color_cached=1
|
||||||
|
;;
|
||||||
|
true)
|
||||||
|
use_color_cached=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# tty detection in shell:
|
||||||
|
# http://hwi.ath.cx/jsh/list/shext/isatty.sh.html
|
||||||
|
tty 0>/dev/stdout >/dev/null 2>&1
|
||||||
|
use_color_cached=$?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
# return value is the flag inverted -
|
||||||
|
# if return value is 0, this means use color
|
||||||
|
return $use_color_cached
|
||||||
|
}
|
||||||
|
|
||||||
|
complain()
|
||||||
|
{
|
||||||
|
if use_color
|
||||||
|
then
|
||||||
|
# Careful: our argument may include arguments to echo like -n
|
||||||
|
# ANSI color codes:
|
||||||
|
# http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
|
||||||
|
printf "\033[31m\033[1m"
|
||||||
|
if [ "$1" = "-n" ]
|
||||||
|
then
|
||||||
|
echo "$@"
|
||||||
|
printf "\033[0m"
|
||||||
|
else
|
||||||
|
# This will print one trailing space.
|
||||||
|
# Not sure how to avoid this at the moment.
|
||||||
|
echo "$@" $(printf "\033[0m")
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for empty commit message
|
||||||
|
if ! grep -qv '^#' "$1"
|
||||||
|
then
|
||||||
|
# Commit message is empty (or contains only comments).
|
||||||
|
# Let git handle this.
|
||||||
|
# It will abort with a message like so:
|
||||||
|
#
|
||||||
|
# Aborting commit due to empty commit message.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg=$(grep -v '^#' "$1" |grep -nE '.{81,}')
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
complain "The following lines are greater than 80 characters long:" >&2;
|
||||||
|
complain >&2
|
||||||
|
complain "$msg" >&2;
|
||||||
|
|
||||||
|
quit $ERR_LENGTH;
|
||||||
|
fi
|
||||||
|
|
||||||
|
lines=$(wc -l "$1" | awk '{ print $1; }');
|
||||||
|
expecting=header;
|
||||||
|
in_description=0;
|
||||||
|
in_empty=0;
|
||||||
|
ticket=0;
|
||||||
|
branch_regex="[a-z]+[a-z0-9-]*[a-z0-9]+";
|
||||||
|
i=1;
|
||||||
|
tickets="";
|
||||||
|
|
||||||
|
while [ $i -le $lines ]
|
||||||
|
do
|
||||||
|
# Grab the line we are studying
|
||||||
|
line=$(head -n$i "$1" | tail -n1);
|
||||||
|
|
||||||
|
debug 1 "==> [$i] $line (description: $in_description, empty: $in_empty)";
|
||||||
|
|
||||||
|
err=$ERR_UNKNOWN;
|
||||||
|
|
||||||
|
if [ -z "$expecting" ]
|
||||||
|
then
|
||||||
|
quit $err;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${expecting#comment}" = "$expecting" ]
|
||||||
|
then
|
||||||
|
# Prefix comments to the expected tokens list
|
||||||
|
expecting="comment $expecting";
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug 2 "Expecting: $expecting";
|
||||||
|
|
||||||
|
# Loop over each of the expected line formats
|
||||||
|
for expect in $expecting
|
||||||
|
do
|
||||||
|
# Reset the error code each iteration
|
||||||
|
err=$ERR_UNKNOWN;
|
||||||
|
|
||||||
|
# Test for validity of each line format
|
||||||
|
# This is done first so $? contains the result
|
||||||
|
case $expect in
|
||||||
|
"header")
|
||||||
|
err=$ERR_HEADER;
|
||||||
|
echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] .+$"
|
||||||
|
result=$?
|
||||||
|
if ! echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] [A-Z].+$"
|
||||||
|
then
|
||||||
|
# Don't be too strict.
|
||||||
|
# Commits may be temporary, intended to be squashed later.
|
||||||
|
# Just issue a warning here.
|
||||||
|
complain "$severity: heading should be a sentence beginning with a capital letter." 1>&2
|
||||||
|
complain "You entered:" 1>&2
|
||||||
|
complain "$line" 1>&2
|
||||||
|
fi
|
||||||
|
# restore exit code
|
||||||
|
(exit $result)
|
||||||
|
;;
|
||||||
|
"empty")
|
||||||
|
err=$ERR_EMPTY;
|
||||||
|
echo "$line" | grep -Eq "^$"
|
||||||
|
;;
|
||||||
|
"description")
|
||||||
|
err=$ERR_DESCRIPTION;
|
||||||
|
# Free flow text, the line length was constrained by the initial check
|
||||||
|
echo "$line" | grep -Eq "^.+$";
|
||||||
|
;;
|
||||||
|
"footer")
|
||||||
|
err=$ERR_FOOTER;
|
||||||
|
# Each ticket is on its own line
|
||||||
|
echo "$line" | grep -Eq "^B3P-[0-9]+$";
|
||||||
|
;;
|
||||||
|
"eof")
|
||||||
|
err=$ERR_EOF;
|
||||||
|
# Should not end up here
|
||||||
|
false
|
||||||
|
;;
|
||||||
|
"possibly-eof")
|
||||||
|
# Allow empty and/or comment lines at the end
|
||||||
|
! tail -n +"$i" "$1" |grep -qvE '^($|#)'
|
||||||
|
;;
|
||||||
|
"comment")
|
||||||
|
echo "$line" | grep -Eq "^#";
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
complain "Unrecognised token $expect" >&2;
|
||||||
|
quit $err;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Preserve the result of the line check
|
||||||
|
result=$?;
|
||||||
|
|
||||||
|
debug 2 "$expect - '$line' - $result";
|
||||||
|
|
||||||
|
if [ $result -eq 0 ]
|
||||||
|
then
|
||||||
|
# Break out the loop on success
|
||||||
|
# otherwise roll on round and keep looking for a match
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $result -eq 0 ]
|
||||||
|
then
|
||||||
|
# Have we switched out of description mode?
|
||||||
|
if [ $in_description -eq 1 ] && [ "$expect" != "description" ] && [ "$expect" != "empty" ] && [ "$expect" != "comment" ]
|
||||||
|
then
|
||||||
|
# Yes, okay we need to backtrace one line and reanalyse
|
||||||
|
in_description=0;
|
||||||
|
i=$(( $i - $in_empty ));
|
||||||
|
|
||||||
|
# Reset the empty counter
|
||||||
|
in_empty=0;
|
||||||
|
continue;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Successful match, but on which line format
|
||||||
|
case $expect in
|
||||||
|
"header")
|
||||||
|
expecting="empty";
|
||||||
|
|
||||||
|
echo "$line" | grep -Eq "^\[ticket/[0-9]+\]$" && (
|
||||||
|
ticket=$(echo "$line" | sed 's,\[ticket/\([0-9]*\)\].*,\1,');
|
||||||
|
)
|
||||||
|
;;
|
||||||
|
"empty")
|
||||||
|
# Description might have empty lines as spacing
|
||||||
|
expecting="footer description";
|
||||||
|
in_empty=$(($in_empty + 1));
|
||||||
|
|
||||||
|
if [ $in_description -eq 1 ]
|
||||||
|
then
|
||||||
|
expecting="$expecting empty";
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"description")
|
||||||
|
expecting="description empty";
|
||||||
|
in_description=1;
|
||||||
|
;;
|
||||||
|
"footer")
|
||||||
|
expecting="footer possibly-eof";
|
||||||
|
if [ "$tickets" = "" ]
|
||||||
|
then
|
||||||
|
tickets="$line";
|
||||||
|
else
|
||||||
|
tickets="$tickets $line";
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"comment")
|
||||||
|
# Comments should expect the same thing again
|
||||||
|
;;
|
||||||
|
"possibly-eof")
|
||||||
|
expecting="eof";
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
complain "Unrecognised token $expect" >&2;
|
||||||
|
quit 254;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$expect" != "empty" ]
|
||||||
|
then
|
||||||
|
in_empty=0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug 3 "Now expecting: $expecting";
|
||||||
|
else
|
||||||
|
# None of the expected line formats matched
|
||||||
|
# Guess we'll call it a day here then
|
||||||
|
complain "Syntax error on line $i:" >&2;
|
||||||
|
complain ">> $line" >&2;
|
||||||
|
complain -n "Expecting: " >&2;
|
||||||
|
complain "$expecting" | sed 's/ /, /g' >&2;
|
||||||
|
quit $err;
|
||||||
|
fi
|
||||||
|
|
||||||
|
i=$(( $i + 1 ));
|
||||||
|
done
|
||||||
|
|
||||||
|
# If EOF is expected exit cleanly
|
||||||
|
echo "$expecting" | grep -q "eof" || (
|
||||||
|
# Unexpected EOF, error
|
||||||
|
complain "Unexpected EOF encountered" >&2;
|
||||||
|
quit $ERR_EOF;
|
||||||
|
) && (
|
||||||
|
# Do post scan checks
|
||||||
|
if [ ! -z "$tickets" ]
|
||||||
|
then
|
||||||
|
# Check for duplicate tickets
|
||||||
|
dupes=$(echo "$tickets" | sed 's/ /\n/g' | sort | uniq -d);
|
||||||
|
|
||||||
|
if [ ! -z "$dupes" ]
|
||||||
|
then
|
||||||
|
complain "The following tickets are repeated:" >&2;
|
||||||
|
complain "$dupes" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||||
|
quit $ERR_FOOTER;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Check the branch ticket is mentioned, doesn't make sense otherwise
|
||||||
|
if [ $ticket -gt 0 ]
|
||||||
|
then
|
||||||
|
echo "$tickets" | grep -Eq "\bB3P-$ticket\b" || (
|
||||||
|
complain "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
|
||||||
|
complain "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
|
||||||
|
quit $ERR_FOOTER;
|
||||||
|
) || exit $?;
|
||||||
|
fi
|
||||||
|
# Got here okay exit to reality
|
||||||
|
exit 0;
|
||||||
|
);
|
||||||
|
exit $?;
|
||||||
88
git-tools/hooks/pre-commit
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# A hook to disallow php syntax errors to be committed
|
||||||
|
# by running php -l (lint) on them. It requires php-cli
|
||||||
|
# to be installed.
|
||||||
|
#
|
||||||
|
# This is a pre-commit hook.
|
||||||
|
#
|
||||||
|
# To install this you can either copy or symlink it to
|
||||||
|
# $GIT_DIR/hooks, example:
|
||||||
|
#
|
||||||
|
# ln -s ../../git-tools/hooks/pre-commit \\
|
||||||
|
# .git/hooks/pre-commit
|
||||||
|
|
||||||
|
if [ -z "$PHP_BIN" ]
|
||||||
|
then
|
||||||
|
PHP_BIN=php
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(echo -e test)" = test ]
|
||||||
|
then
|
||||||
|
echo_e="echo -e"
|
||||||
|
else
|
||||||
|
echo_e="echo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# necessary check for initial commit
|
||||||
|
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
against=HEAD
|
||||||
|
else
|
||||||
|
# Initial commit: diff against an empty tree object
|
||||||
|
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||||
|
fi
|
||||||
|
|
||||||
|
errors=""
|
||||||
|
if ! which "$PHP_BIN" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "PHP Syntax check failed:"
|
||||||
|
echo "PHP binary does not exist or is not in path: $PHP_BIN"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dash does not support $'\n':
|
||||||
|
# http://forum.soft32.com/linux2/Bug-409179-DASH-Settings-IFS-work-properly-ftopict70039.html
|
||||||
|
IFS='
|
||||||
|
'
|
||||||
|
# get a list of staged files
|
||||||
|
for line in $(git diff-index --cached --full-index $against)
|
||||||
|
do
|
||||||
|
# split needed values
|
||||||
|
sha=$(echo $line | cut -d' ' -f4)
|
||||||
|
temp=$(echo $line | cut -d' ' -f5)
|
||||||
|
status=$(echo $temp | cut -d' ' -f1)
|
||||||
|
filename=$(echo $temp | cut -d' ' -f2)
|
||||||
|
|
||||||
|
# file extension
|
||||||
|
ext=$(echo $filename | sed 's/^.*\.//')
|
||||||
|
|
||||||
|
# only check files with php extension
|
||||||
|
if [ $ext != "php" ]
|
||||||
|
then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# do not check deleted files
|
||||||
|
if [ $status = "D" ]
|
||||||
|
then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check the staged file content for syntax errors
|
||||||
|
# using php -l (lint)
|
||||||
|
result=$(git cat-file -p $sha | "$PHP_BIN" -n -l -ddisplay_errors\=1 -derror_reporting\=E_ALL -dlog_errrors\=0 2>&1)
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
# Swap back in correct filenames
|
||||||
|
errors=$(echo "$errors"; echo "$result" | grep ':' | sed -e "s@in - on@in $filename on@g")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset IFS
|
||||||
|
|
||||||
|
if [ -n "$errors" ]
|
||||||
|
then
|
||||||
|
echo "PHP Syntax check failed: "
|
||||||
|
$echo_e "$errors"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
42
git-tools/hooks/prepare-commit-msg
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# A hook to add [$branch] to the beginning of a commit message
|
||||||
|
# if certain conditions are met.
|
||||||
|
#
|
||||||
|
# This is a prepare-commit-msg hook.
|
||||||
|
#
|
||||||
|
# To install this you can either copy or symlink it to
|
||||||
|
# $GIT_DIR/hooks, example:
|
||||||
|
#
|
||||||
|
# ln -s ../../git-tools/hooks/prepare-commit-msg \\
|
||||||
|
# .git/hooks/prepare-commit-msg
|
||||||
|
|
||||||
|
# get branch name
|
||||||
|
branch="$(git symbolic-ref HEAD)"
|
||||||
|
|
||||||
|
# exit if no branch name is present
|
||||||
|
# (eg. detached HEAD)
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# strip off refs/heads/
|
||||||
|
branch="$(echo "$branch" | sed "s/refs\/heads\///g")"
|
||||||
|
|
||||||
|
# add [branchname] to commit message
|
||||||
|
# * only run when normal commit is made (without -m or -F;
|
||||||
|
# not a merge, etc.)
|
||||||
|
# * also make sure the branch name begins with bug/ or feature/
|
||||||
|
if [ "$2" = "" ]
|
||||||
|
then
|
||||||
|
tail="";
|
||||||
|
|
||||||
|
# Branch is prefixed with 'ticket/', append ticket ID to message
|
||||||
|
if [ "$branch" != "${branch##ticket/}" ];
|
||||||
|
then
|
||||||
|
tail="$(printf "\n\nB3P-${branch##ticket/}")";
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[$branch] $tail$(cat "$1")" > "$1"
|
||||||
|
fi
|
||||||
428
includes/functions.php
Normal file
@@ -0,0 +1,428 @@
|
|||||||
|
<?php
|
||||||
|
// @codingStandardsIgnoreFile
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get portal config
|
||||||
|
function obtain_portal_config()
|
||||||
|
{
|
||||||
|
global $db, $cache, $portal_config;
|
||||||
|
|
||||||
|
if (($portal_config = $cache->get('portal_config')) === false)
|
||||||
|
{
|
||||||
|
$portal_config = $portal_cached_config = array();
|
||||||
|
|
||||||
|
$sql = 'SELECT config_name, config_value
|
||||||
|
FROM ' . PORTAL_CONFIG_TABLE;
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$portal_cached_config[$row['config_name']] = $row['config_value'];
|
||||||
|
|
||||||
|
$portal_config[$row['config_name']] = $row['config_value'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$cache->put('portal_config', $portal_cached_config);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $portal_config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set config value. Creates missing config entry.
|
||||||
|
* Only use this if your config value might exceed 255 characters, otherwise please use set_config
|
||||||
|
*/
|
||||||
|
function set_portal_config($config_name, $config_value)
|
||||||
|
{
|
||||||
|
global $db, $cache, $portal_config;
|
||||||
|
|
||||||
|
$sql = 'UPDATE ' . PORTAL_CONFIG_TABLE . "
|
||||||
|
SET config_value = '" . $db->sql_escape($config_value) . "'
|
||||||
|
WHERE config_name = '" . $db->sql_escape($config_name) . "'";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
if (!$db->sql_affectedrows() && !isset($portal_config[$config_name]))
|
||||||
|
{
|
||||||
|
$sql = 'INSERT INTO ' . PORTAL_CONFIG_TABLE . ' ' . $db->sql_build_array('INSERT', array(
|
||||||
|
'config_name' => $config_name,
|
||||||
|
'config_value' => $config_value));
|
||||||
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
$portal_config[$config_name] = $config_value;
|
||||||
|
|
||||||
|
$cache->destroy('portal_config');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get portal modules
|
||||||
|
*
|
||||||
|
* @return array Portal modules array
|
||||||
|
*/
|
||||||
|
function obtain_portal_modules()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$portal_modules = array();
|
||||||
|
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . PORTAL_MODULES_TABLE . '
|
||||||
|
ORDER BY module_order ASC';
|
||||||
|
$result = $db->sql_query($sql, 3600);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$portal_modules[] = $row;
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
return $portal_modules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Censor title, return short title
|
||||||
|
*
|
||||||
|
* @param $title string title to censor
|
||||||
|
* @param $limit int short title character limit
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function character_limit(&$title, $limit = 0)
|
||||||
|
{
|
||||||
|
$title = censor_text($title);
|
||||||
|
if ($limit > 0)
|
||||||
|
{
|
||||||
|
return (strlen(utf8_decode($title)) > $limit + 3) ? truncate_string($title, $limit) . '...' : $title;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return $title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ap_validate($str)
|
||||||
|
{
|
||||||
|
$s = str_replace('<br />', '<br/>', $str);
|
||||||
|
return str_replace('</li><br/>', '</li>', $s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pagination routine, generates archive number sequence
|
||||||
|
*/
|
||||||
|
function generate_portal_pagination($base_url, $num_items, $per_page, $start_item, $type, $module_id = 0, $add_prevnext_text = false, $tpl_prefix = '')
|
||||||
|
{
|
||||||
|
global $template, $user;
|
||||||
|
|
||||||
|
switch ($type)
|
||||||
|
{
|
||||||
|
case "announcements":
|
||||||
|
$pagination_type = 'ap_' . $module_id;
|
||||||
|
$anker = '#a_' . $module_id;
|
||||||
|
break;
|
||||||
|
case "news":
|
||||||
|
case "news_all":
|
||||||
|
$pagination_type = 'np_' . $module_id;
|
||||||
|
$anker = '#n_' . $module_id;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// this shouldn't happen but default to announcements
|
||||||
|
$pagination_type = 'ap_' . $module_id;
|
||||||
|
$anker = '#a_' . $module_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure $per_page is a valid value
|
||||||
|
$per_page = ($per_page <= 0) ? 1 : $per_page;
|
||||||
|
|
||||||
|
$seperator = '<li> </li>';
|
||||||
|
$total_pages = ceil($num_items / $per_page);
|
||||||
|
|
||||||
|
if ($total_pages == 1 || !$num_items)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$on_page = floor($start_item / $per_page) + 1;
|
||||||
|
$url_delim = (strpos($base_url, '?') === false) ? '?' : '&';
|
||||||
|
|
||||||
|
$page_string = ($on_page == 1) ? '<ul><li class="active"><span>1</span></li>' : '<ul><li><a class="button" href="' . $base_url . $anker .'" role="button">1</a></li>';
|
||||||
|
|
||||||
|
if ($total_pages > 5)
|
||||||
|
{
|
||||||
|
$start_cnt = min(max(1, $on_page - 4), $total_pages - 5);
|
||||||
|
$end_cnt = max(min($total_pages, $on_page + 4), 6);
|
||||||
|
|
||||||
|
// Add ... separator to pagination
|
||||||
|
$page_string .= ($start_cnt > 1) ? '<li class="ellipsis" role="separator"><span>' . $user->lang['ELLIPSIS'] . '</span></li>' : $seperator;
|
||||||
|
|
||||||
|
for ($i = $start_cnt + 1; $i < $end_cnt; ++$i)
|
||||||
|
{
|
||||||
|
$page_string .= ($i == $on_page) ? '<li class="active"><span>' . $i . '</span></li>' : '<li><a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '" role="button">' . $i . '</a></li>';
|
||||||
|
if ($i < $end_cnt - 1)
|
||||||
|
{
|
||||||
|
$page_string .= $seperator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add ... separator to pagination
|
||||||
|
$page_string .= ($end_cnt < $total_pages) ? '<li class="ellipsis" role="separator"><span>' . $user->lang['ELLIPSIS'] . '</span></li>' : $seperator;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$page_string .= $seperator;
|
||||||
|
|
||||||
|
for ($i = 2; $i < $total_pages; ++$i)
|
||||||
|
{
|
||||||
|
$page_string .= ($i == $on_page) ? '<li class="active"><span>' . $i . '</span></li>' : '<li><a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '" role="button">' . $i . '</a></li>';
|
||||||
|
if ($i < $total_pages)
|
||||||
|
{
|
||||||
|
$page_string .= $seperator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$page_string .= ($on_page == $total_pages) ? '<li class="active"><span>' . $total_pages . '</span></li></ul>' : '<li><a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($total_pages - 1) * $per_page) . $anker . '" role="button">' . $total_pages . '</a></li></ul>';
|
||||||
|
|
||||||
|
if ($add_prevnext_text)
|
||||||
|
{
|
||||||
|
if ($on_page != 1)
|
||||||
|
{
|
||||||
|
$page_string = '<a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker . '" role="button">' . $user->lang['PREVIOUS'] . '</a> ' . $page_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($on_page != $total_pages)
|
||||||
|
{
|
||||||
|
$page_string .= ' <a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker . '" role="button">' . $user->lang['NEXT'] . '</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$template->assign_vars(array(
|
||||||
|
$tpl_prefix . 'BASE_URL' => $base_url,
|
||||||
|
'A_' . $tpl_prefix . 'BASE_URL' => is_string($base_url) ? $base_url : '',
|
||||||
|
$tpl_prefix . 'PER_PAGE' => $per_page,
|
||||||
|
|
||||||
|
$tpl_prefix . 'PREVIOUS_PAGE' => ($on_page == 1) ? '' : $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker,
|
||||||
|
$tpl_prefix . 'NEXT_PAGE' => ($on_page == $total_pages) ? '' : $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker,
|
||||||
|
$tpl_prefix . 'TOTAL_PAGES' => $total_pages,
|
||||||
|
));
|
||||||
|
|
||||||
|
return $page_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get topic tracking info for news
|
||||||
|
* based on get_complete_tracking_info of phpBB3
|
||||||
|
* this should reduce the queries for the news and announcements block
|
||||||
|
*/
|
||||||
|
function get_portal_tracking_info($fetch_news)
|
||||||
|
{
|
||||||
|
global $config, $request, $user;
|
||||||
|
|
||||||
|
$last_read = $topic_ids = $forum_ids = $tracking_info = $rev_forum_ids = $user_lastmark = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* group everything by the forum IDs
|
||||||
|
*/
|
||||||
|
$count = $fetch_news['topic_count'];
|
||||||
|
for ($i = 0; $i < $count; ++$i)
|
||||||
|
{
|
||||||
|
$tracking_info[$fetch_news[$i]['forum_id']][] = $fetch_news[$i]['topic_id'];
|
||||||
|
$topic_ids[] = $fetch_news[$i]['topic_id'];
|
||||||
|
$forum_ids[] = $fetch_news[$i]['forum_id'];
|
||||||
|
$rev_forum_ids[$fetch_news[$i]['topic_id']] = $fetch_news[$i]['forum_id']; // the other way round also helps
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($tracking_info as $forum_id => $current_forum)
|
||||||
|
{
|
||||||
|
if ($config['load_db_lastread'] && $user->data['is_registered'])
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$mark_time = array();
|
||||||
|
|
||||||
|
$sql = 'SELECT topic_id, mark_time
|
||||||
|
FROM ' . TOPICS_TRACK_TABLE . '
|
||||||
|
WHERE user_id = ' . (int) $user->data['user_id'] . '
|
||||||
|
AND ' . $db->sql_in_set('topic_id', $current_forum);
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$last_read[$row['topic_id']] = $row['mark_time'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$current_forum = array_diff($current_forum, array_keys($last_read));
|
||||||
|
|
||||||
|
if (sizeof($topic_ids))
|
||||||
|
{
|
||||||
|
$sql = 'SELECT forum_id, mark_time
|
||||||
|
FROM ' . FORUMS_TRACK_TABLE . '
|
||||||
|
WHERE user_id = ' . (int) $user->data['user_id'] . '
|
||||||
|
AND ' . $db->sql_in_set('forum_id', $forum_ids);
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$mark_time[$row['forum_id']] = $row['mark_time'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
// Set user last mark time
|
||||||
|
foreach ($forum_ids as $current_forum_id)
|
||||||
|
{
|
||||||
|
$user_lastmark[$current_forum_id] = (isset($mark_time[$current_forum_id])) ? $mark_time[$current_forum_id] : $user->data['user_lastmark'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// @todo: also check if $user_lastmark has been defined for this specific forum_id
|
||||||
|
foreach ($topic_ids as $topic_id)
|
||||||
|
{
|
||||||
|
if (!isset($last_read[$topic_id]) || (isset($user_lastmark[$rev_forum_ids[$topic_id]]) && $user_lastmark[$rev_forum_ids[$topic_id]] > $last_read[$topic_id]))
|
||||||
|
{
|
||||||
|
$last_read[$topic_id] = $user_lastmark[$rev_forum_ids[$topic_id]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||||
|
{
|
||||||
|
global $tracking_topics;
|
||||||
|
|
||||||
|
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
||||||
|
{
|
||||||
|
if ($request->is_set($config['cookie_name'] . '_track', \phpbb\request\request_interface::COOKIE))
|
||||||
|
{
|
||||||
|
$tracking_topics = $request->variable($config['cookie_name'] . '_track', '', true, \phpbb\request\request_interface::COOKIE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$tracking_topics = '';
|
||||||
|
}
|
||||||
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$user->data['is_registered'])
|
||||||
|
{
|
||||||
|
$user_lastmark = (isset($tracking_topics['l'])) ? base_convert($tracking_topics['l'], 36, 10) + $config['board_startdate'] : 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$user_lastmark = $user->data['user_lastmark'];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($topic_ids as $topic_id)
|
||||||
|
{
|
||||||
|
$topic_id36 = base_convert($topic_id, 10, 36);
|
||||||
|
|
||||||
|
if (isset($tracking_topics['t'][$topic_id36]))
|
||||||
|
{
|
||||||
|
$last_read[$topic_id] = base_convert($tracking_topics['t'][$topic_id36], 36, 10) + $config['board_startdate'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$topic_ids = array_diff($topic_ids, array_keys($last_read));
|
||||||
|
|
||||||
|
if (sizeof($topic_ids))
|
||||||
|
{
|
||||||
|
$mark_time = array();
|
||||||
|
|
||||||
|
if (isset($tracking_topics['f'][$forum_id]))
|
||||||
|
{
|
||||||
|
$mark_time[$forum_id] = base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$user_lastmark = (isset($mark_time[$forum_id])) ? $mark_time[$forum_id] : $user_lastmark;
|
||||||
|
|
||||||
|
foreach ($topic_ids as $topic_id)
|
||||||
|
{
|
||||||
|
$last_read[$topic_id] = $user_lastmark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $last_read;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the entered source file actually exists
|
||||||
|
*
|
||||||
|
* @param string $value Filename of file to check
|
||||||
|
* @param string $key Key of the acp setting (unused here)
|
||||||
|
* @param int $module_id Module ID of this module
|
||||||
|
* @param bool $force_error Whether an error message should be triggered on
|
||||||
|
* errors.
|
||||||
|
* @return bool|string False if file exists, an error string if file doesn't exist.
|
||||||
|
*/
|
||||||
|
function check_file_src($value, $key, $module_id, $force_error = true)
|
||||||
|
{
|
||||||
|
global $phpbb_admin_path, $portal_root_path, $phpEx, $user;
|
||||||
|
|
||||||
|
$error = '';
|
||||||
|
|
||||||
|
// We check if the chosen file is present in the styles/all/ folder
|
||||||
|
if (!file_exists($portal_root_path . 'styles/all/theme/images/portal/' . $value))
|
||||||
|
{
|
||||||
|
$error .= $user->lang('B3P_FILE_NOT_FOUND') . ': styles/all/theme/images/portal/' . $value . '<br />';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($error))
|
||||||
|
{
|
||||||
|
if ($force_error)
|
||||||
|
{
|
||||||
|
trigger_error($error . adm_back_link(append_sid("{$phpbb_admin_path}index.$phpEx", 'i=\board3\portal\acp\portal_module&mode=config&module_id=' . $module_id)), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the groups a user is in
|
||||||
|
*
|
||||||
|
* @return array Array containing the user's groups
|
||||||
|
*/
|
||||||
|
function get_user_groups()
|
||||||
|
{
|
||||||
|
global $cache, $db, $user;
|
||||||
|
|
||||||
|
$groups_ary = $cache->get('_user_groups_' . $user->data['user_id']);
|
||||||
|
|
||||||
|
if ($groups_ary === false)
|
||||||
|
{
|
||||||
|
$groups_ary = array();
|
||||||
|
|
||||||
|
// get user's groups
|
||||||
|
$sql = 'SELECT group_id
|
||||||
|
FROM ' . USER_GROUP_TABLE . '
|
||||||
|
WHERE user_id = ' . (int) $user->data['user_id'] . '
|
||||||
|
ORDER BY group_id ASC';
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$groups_ary[] = $row['group_id'];
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
// save data in cache for 60 seconds
|
||||||
|
$cache->put('_user_groups_' . $user->data['user_id'], $groups_ary, 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $groups_ary;
|
||||||
|
}
|
||||||
79
includes/helper.php
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\includes;
|
||||||
|
|
||||||
|
class helper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Board3 Modules service collection
|
||||||
|
* @var \phpbb\di\service_collection
|
||||||
|
*/
|
||||||
|
protected $modules;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* NOTE: The parameters of this method must match in order and type with
|
||||||
|
* the dependencies defined in the services.yml file for this service.
|
||||||
|
* @param \phpbb\di\service_collection $modules Board3 Modules service
|
||||||
|
* collection
|
||||||
|
*/
|
||||||
|
public function __construct($modules)
|
||||||
|
{
|
||||||
|
$this->register_modules($modules);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register list of Board3 Portal modules
|
||||||
|
*
|
||||||
|
* @param \phpbb\di\service_collection $modules Board3 Modules service
|
||||||
|
* collection
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function register_modules($modules)
|
||||||
|
{
|
||||||
|
foreach ($modules as $current_module)
|
||||||
|
{
|
||||||
|
$class_name = '\\' . get_class($current_module);
|
||||||
|
if (!isset($this->modules[$class_name]))
|
||||||
|
{
|
||||||
|
$this->modules[$class_name] = $current_module;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get module specified by module class name
|
||||||
|
*
|
||||||
|
* @param string $module_name Module class name
|
||||||
|
*
|
||||||
|
* @return bool|object The module object if it exists, false if not
|
||||||
|
*/
|
||||||
|
public function get_module($module_name)
|
||||||
|
{
|
||||||
|
if (isset($this->modules[$module_name]))
|
||||||
|
{
|
||||||
|
return $this->modules[$module_name];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all supported modules
|
||||||
|
*
|
||||||
|
* @return array An array containing all supported modules
|
||||||
|
*/
|
||||||
|
public function get_all_modules()
|
||||||
|
{
|
||||||
|
return $this->modules;
|
||||||
|
}
|
||||||
|
}
|
||||||
241
includes/modules_helper.php
Normal file
@@ -0,0 +1,241 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace board3\portal\includes;
|
||||||
|
|
||||||
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
|
||||||
|
class modules_helper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Auth object
|
||||||
|
* @var \phpbb\auth\auth
|
||||||
|
*/
|
||||||
|
protected $auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB config
|
||||||
|
* @var \phpbb\config\config
|
||||||
|
*/
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/** @var \phpbb\db\driver\driver_interface */
|
||||||
|
protected $db;
|
||||||
|
|
||||||
|
/** @var \phpbb\controller\helper Controller helper */
|
||||||
|
protected $controller_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* phpBB request
|
||||||
|
* @var \phpbb\request\request
|
||||||
|
*/
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
/** @var string Styles table */
|
||||||
|
protected $styles_table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* NOTE: The parameters of this method must match in order and type with
|
||||||
|
* the dependencies defined in the services.yml file for this service.
|
||||||
|
* @param \phpbb\auth\auth $auth Auth object
|
||||||
|
* @param \phpbb\config\config $config phpBB config
|
||||||
|
* @param \phpbb\controller\helper $controller_helper Controller helper
|
||||||
|
* @param \phpbb\db\driver\driver_interface $db Dbal connection
|
||||||
|
* @param \phpbb\request\request $request phpBB request
|
||||||
|
* @param string $styles_table Styles table
|
||||||
|
*/
|
||||||
|
public function __construct($auth, $config, $controller_helper, $db, $request, string $styles_table)
|
||||||
|
{
|
||||||
|
$this->auth = $auth;
|
||||||
|
$this->config = $config;
|
||||||
|
$this->controller_helper = $controller_helper;
|
||||||
|
$this->db = $db;
|
||||||
|
$this->request = $request;
|
||||||
|
$this->styles_table = $styles_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an array of disallowed forums
|
||||||
|
*
|
||||||
|
* @param bool $disallow_access Whether the array for disallowing access
|
||||||
|
* should be filled
|
||||||
|
* @return array Array of forums the user is not allowed to access
|
||||||
|
*/
|
||||||
|
public function get_disallowed_forums($disallow_access)
|
||||||
|
{
|
||||||
|
if ($disallow_access == true)
|
||||||
|
{
|
||||||
|
$disallow_access = array_unique(array_keys($this->auth->acl_getf('!f_read', true)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$disallow_access = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $disallow_access;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate select box
|
||||||
|
*
|
||||||
|
* @param string $key Key of select box
|
||||||
|
* @param array $select_ary Array of select box options
|
||||||
|
* @param array $selected_options Array of selected options
|
||||||
|
* @param bool $multiple Whether multiple options should be selectable
|
||||||
|
*
|
||||||
|
* @return string HTML code of select box
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
public function generate_select_box($key, $select_ary, $selected_options, $multiple = false)
|
||||||
|
{
|
||||||
|
// Build options
|
||||||
|
$options = '<select id="' . $key . '" name="' . $key;
|
||||||
|
$options .= ($multiple) ? '[]" multiple="multiple">' : '">';
|
||||||
|
foreach ($select_ary as $id => $option)
|
||||||
|
{
|
||||||
|
$options .= '<option value="' . $option['value'] . '"' . ((in_array($option['value'], $selected_options)) ? ' selected="selected"' : '') . (!empty($option['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $option['title'] . '</option>';
|
||||||
|
}
|
||||||
|
$options .= '</select>';
|
||||||
|
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate forum select box
|
||||||
|
*
|
||||||
|
* @param string $value Value of select box
|
||||||
|
* @param string $key Key of select box
|
||||||
|
*
|
||||||
|
* @return string HTML code of select box
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
public function generate_forum_select($value, $key)
|
||||||
|
{
|
||||||
|
$forum_list = make_forum_select(false, false, true, true, true, false, true);
|
||||||
|
|
||||||
|
$selected_options = $select_ary = array();
|
||||||
|
if (isset($this->config[$key]) && strlen($this->config[$key]) > 0)
|
||||||
|
{
|
||||||
|
$selected_options = explode(',', $this->config[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build forum options
|
||||||
|
foreach ($forum_list as $f_id => $f_row)
|
||||||
|
{
|
||||||
|
$select_ary[] = array(
|
||||||
|
'value' => $f_id,
|
||||||
|
'title' => $f_row['padding'] . $f_row['forum_name'],
|
||||||
|
'disabled' => $f_row['disabled'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->generate_select_box($key, $select_ary, $selected_options, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store selected forums
|
||||||
|
*
|
||||||
|
* @param string $key Key name
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
* @access public
|
||||||
|
*/
|
||||||
|
public function store_selected_forums($key)
|
||||||
|
{
|
||||||
|
// Get selected extensions
|
||||||
|
$values = $this->request->variable($key, array(0 => ''));
|
||||||
|
$news = implode(',', $values);
|
||||||
|
$this->config->set($key, $news);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper method for controller_helper::route()
|
||||||
|
*
|
||||||
|
* @param string $route Route name
|
||||||
|
* @param array $params Route parameters
|
||||||
|
* @param bool $is_amp
|
||||||
|
* @param bool $session_id
|
||||||
|
* @param bool $reference_type
|
||||||
|
*
|
||||||
|
* @return string URL for route
|
||||||
|
*/
|
||||||
|
public function route($route, $params = array(), $is_amp = true, $session_id = false, $reference_type = UrlGeneratorInterface::ABSOLUTE_PATH)
|
||||||
|
{
|
||||||
|
return $this->controller_helper->route($route, $params, $is_amp, $session_id, $reference_type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display radio buttons for left/right choice
|
||||||
|
*
|
||||||
|
* @param int $value Selected value
|
||||||
|
* @param string $key Key of config variable
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function display_left_right($value, $key)
|
||||||
|
{
|
||||||
|
$radio_ary = array(0 => 'PORTAL_SHOW_ALL_LEFT', 1 => 'PORTAL_SHOW_ALL_RIGHT');
|
||||||
|
|
||||||
|
return h_radio($key, $radio_ary, $value, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store left right choice
|
||||||
|
*
|
||||||
|
* @param string $key Config key
|
||||||
|
*/
|
||||||
|
public function store_left_right($key)
|
||||||
|
{
|
||||||
|
// Get selected side
|
||||||
|
$value = $this->request->variable($key, 0);
|
||||||
|
|
||||||
|
$this->config->set($key, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show available styles
|
||||||
|
*
|
||||||
|
* @return string Select with available styles
|
||||||
|
*/
|
||||||
|
public function display_fa_styles(): string
|
||||||
|
{
|
||||||
|
$portal_fa_styles = json_decode($this->config->offsetGet('board3_portal_fa_styles'));
|
||||||
|
if (!$portal_fa_styles)
|
||||||
|
{
|
||||||
|
$portal_fa_styles = [];
|
||||||
|
}
|
||||||
|
$options = '';
|
||||||
|
$query = 'SELECT style_name
|
||||||
|
FROM ' . $this->styles_table;
|
||||||
|
$result = $this->db->sql_query($query);
|
||||||
|
while ($row = $this->db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$options .= '<option value="' . $row['style_name'] . '"';
|
||||||
|
if (in_array($row['style_name'], $portal_fa_styles))
|
||||||
|
{
|
||||||
|
$options .= ' selected';
|
||||||
|
}
|
||||||
|
$options .= '>' . $row['style_name'] . '</option>';
|
||||||
|
}
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
return '<select id="board3_fa_styles" name="board3_fa_styles[]" multiple>' . $options . '</select>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save styles that have been set as Font Awesome styles
|
||||||
|
*
|
||||||
|
* @param string $key Key of the parameter
|
||||||
|
*/
|
||||||
|
public function store_fa_styles(string $key): void
|
||||||
|
{
|
||||||
|
$style_array = $this->request->variable($key, ['']);
|
||||||
|
$this->config->set('board3_portal_fa_styles', json_encode($style_array));
|
||||||
|
}
|
||||||
|
}
|
||||||
231
install.xml
@@ -1,231 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="modx.prosilver.en.xsl"?>
|
|
||||||
<!--For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Although MODs are checked before being allowed in the MODs Database there is no guarantee that there are no security problems within the MOD. No support will be given for MODs not found within the MODs Database which can be found at http://www.phpbb.com/mods/-->
|
|
||||||
<!-- $Id$ -->
|
|
||||||
<mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.phpbb.com/mods/xml/modx-1.2.5.xsd">
|
|
||||||
<header>
|
|
||||||
<license>http://opensource.org/licenses/gpl-license.php GNU General Public License v2</license>
|
|
||||||
|
|
||||||
<title lang="en">board3 Portal 2.0.0 - Alpha 1</title>
|
|
||||||
<title lang="de">board3 Portal 2.0.0 - Alpha 1</title>
|
|
||||||
|
|
||||||
<description lang="en">Adds a portal with several blocks to your forum.
|
|
||||||
You can change the settings, move the blocks, add new blocks and more in the ACP.
|
|
||||||
|
|
||||||
Included language files:
|
|
||||||
» English (en)
|
|
||||||
» German (de)
|
|
||||||
|
|
||||||
More languages can be found in our International forum: http://www.board3.de/viewforum.php?f=13</description>
|
|
||||||
<description lang="de">Fügt ein Portal mit diversen Boxen deinem Forum hinzu.
|
|
||||||
Im Admin-Bereich kann man unter Anderem die Einstellungen ändern, die Blöcke verschieben, neue Blöcke hinzufügen und vieles mehr.
|
|
||||||
|
|
||||||
Enthaltenen Sprachdateien:
|
|
||||||
» Englisch (en)
|
|
||||||
» Deutsch (de)
|
|
||||||
|
|
||||||
Weitere Sprachen kannst in unserem Internationalen Forum finden: http://www.board3.de/viewforum.php?f=13
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<author-notes lang="en">I hope you get everything working. Further developement, new boxes for the portal or questions are welcome at www.board3.de
|
|
||||||
</author-notes>
|
|
||||||
<author-notes lang="de">Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten.
|
|
||||||
</author-notes>
|
|
||||||
|
|
||||||
<author-group>
|
|
||||||
<author>
|
|
||||||
<realname>Ice</realname>
|
|
||||||
<username>avaren</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Kevin</realname>
|
|
||||||
<username>saint_hh</username>
|
|
||||||
<homepage>http://www.board3.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Christian</realname>
|
|
||||||
<username>Christian_N</username>
|
|
||||||
<homepage>http://www.phpbb-projekt.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Marc Alexander</realname>
|
|
||||||
<username>marc1706</username>
|
|
||||||
<email>admin@m-a-styles.de</email>
|
|
||||||
<homepage>http://www.m-a-styles.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="current" position="Main-Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Joas Schilling</realname>
|
|
||||||
<email>nickvergessen@gmx.de</email>
|
|
||||||
<username>nickvergessen</username>
|
|
||||||
<homepage>http://mods.flying-bits.org/</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
<author>
|
|
||||||
<realname>Walter</realname>
|
|
||||||
<email>w.bobeth@digitalfotografie-foren.de</email>
|
|
||||||
<username>Redbull254</username>
|
|
||||||
<homepage>http://www.digitalfotografie-foren.de</homepage>
|
|
||||||
<contributions-group>
|
|
||||||
<contributions status="past" position="Developer"></contributions>
|
|
||||||
</contributions-group>
|
|
||||||
</author>
|
|
||||||
</author-group>
|
|
||||||
|
|
||||||
<mod-version>2.0.0a1</mod-version>
|
|
||||||
|
|
||||||
<installation>
|
|
||||||
<level>easy</level>
|
|
||||||
<time>600</time>
|
|
||||||
<target-version>3.0.8</target-version>
|
|
||||||
</installation>
|
|
||||||
|
|
||||||
<link-group>
|
|
||||||
<link type="dependency" lang="en" href="http://www.phpbb.com/community/viewtopic.php?f=69&t=691155">Board3 Portal supports MOD Version Check. To use this feature, this mod has to be installed.</link>
|
|
||||||
<link type="dependency" lang="de" href="http://www.phpbb.com/community/viewtopic.php?f=69&t=691155">Board3 Portal unterstützt MOD Version Check. Um dieses Feature zu nutzen, muss dieser Mod installiert sein.</link>
|
|
||||||
<link type="language" lang="en" href="contrib/de.xml">Manual for German Language-set</link>
|
|
||||||
<link type="language" lang="de" href="contrib/de.xml">Anleitung für das deutsche Sprachpaket</link>
|
|
||||||
<link type="template" lang="en" href="contrib/subsilver2.xml">Manual for subsilver2</link>
|
|
||||||
<link type="template" lang="de" href="contrib/subsilver2.xml">Anleitung für subsilver2</link>
|
|
||||||
<link type="contrib" lang="en" href="contrib/update_106_to_200a1/update.xml">Manual for Updating B3P 1.0.6 to 2.0.0a1</link>
|
|
||||||
<link type="contrib" lang="de" href="contrib/update_106_to_200a1/update.xml">Anleitung für das Aktualisieren von B3P 1.0.6 zu 2.0.0a1</link>
|
|
||||||
</link-group>
|
|
||||||
<history>
|
|
||||||
<entry>
|
|
||||||
<date>2011-05-01</date>
|
|
||||||
<rev-version>2.0.0a1</rev-version>
|
|
||||||
<changelog lang="en">
|
|
||||||
<change>First alpha release</change>
|
|
||||||
</changelog>
|
|
||||||
<changelog lang="de">
|
|
||||||
<change>Erste Alpha-Version</change>
|
|
||||||
</changelog>
|
|
||||||
</entry>
|
|
||||||
</history>
|
|
||||||
</header>
|
|
||||||
<action-group>
|
|
||||||
<copy>
|
|
||||||
<file from="root/portal.php" to="portal.php" />
|
|
||||||
<file from="root/adm/images/*.*" to="adm/images/*.*" />
|
|
||||||
<file from="root/adm/mods/board3_portal_check_version.php" to="adm/mods/board3_portal_check_version.php" />
|
|
||||||
<file from="root/adm/style/*.*" to="adm/style/*.*" />
|
|
||||||
<file from="root/includes/acp/*.*" to="includes/acp/*.*" />
|
|
||||||
<file from="root/install/index.php" to="install/index.php" />
|
|
||||||
<file from="root/language/en/mods/*.*" to="language/en/mods/*.*" />
|
|
||||||
<file from="root/portal/*.*" to="portal/*.*" />
|
|
||||||
<file from="root/styles/prosilver/template/portal/*.*" to="styles/prosilver/template/portal/*.*" />
|
|
||||||
<file from="root/styles/prosilver/theme/portal.css" to="styles/prosilver/theme/portal.css" />
|
|
||||||
<file from="root/styles/prosilver/theme/images/portal/*.*" to="styles/prosilver/theme/images/portal/*.*" />
|
|
||||||
<file from="root/umil/*.*" to="umil/*.*" />
|
|
||||||
</copy>
|
|
||||||
|
|
||||||
<open src=".htaccess">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<Files "common.php">
|
|
||||||
Order Allow,Deny
|
|
||||||
Deny from All
|
|
||||||
</Files>]]></find>
|
|
||||||
<action type="after-add"><![CDATA[DirectoryIndex portal.php index.php index.html index.htm]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="viewonline.php">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ case 'report':
|
|
||||||
$location = $user->lang['REPORTING_POST'];
|
|
||||||
$location_url = append_sid("{$phpbb_root_path}index.$phpEx");
|
|
||||||
break;]]></find>
|
|
||||||
<action type="after-add"><![CDATA[ case 'portal':
|
|
||||||
$user->add_lang('mods/portal');
|
|
||||||
$location = $user->lang['VIEWING_PORTAL'];
|
|
||||||
$location_url = append_sid("{$phpbb_root_path}portal.$phpEx");
|
|
||||||
break;]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="includes/functions.php">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[// The following assigns all _common_ variables that may be used at any point in a template.]]></find>
|
|
||||||
<action type="before-add"><![CDATA[ $user->add_lang('mods/portal');]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA['U_PRIVATEMSGS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=inbox'),]]></find>
|
|
||||||
<action type="before-add"><![CDATA[ 'U_PORTAL' => (isset($config['board3_enable']) && $config['board3_enable'] && $auth->acl_get('u_view_portal')) ? append_sid("{$phpbb_root_path}portal.$phpEx") : '',]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="includes/session.php">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ if (!empty($_GET['style']) && $auth->acl_get('a_styles') && !defined('ADMIN_START'))]]></find>
|
|
||||||
<action type="replace-with"><![CDATA[ if (!empty($_GET['style']) && !defined('ADMIN_START'))]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="styles/prosilver/template/overall_header.html">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<div class="navbar">]]></find>
|
|
||||||
<action type="before-add"><![CDATA[<!-- IF not $S_IN_PORTAL or S_DISPLAY_PHPBB_MENU -->]]></action>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a> <!-- BEGIN navlinks --> <strong>‹</strong>]]></find>
|
|
||||||
<inline-edit>
|
|
||||||
<inline-find><![CDATA[<li class="icon-home">]]></inline-find>
|
|
||||||
<inline-action type="after-add"><![CDATA[<!-- IF U_PORTAL --><a href="{U_PORTAL}">{L_PORTAL}</a> » <!-- ENDIF -->]]></inline-action>
|
|
||||||
</inline-edit>
|
|
||||||
</edit>
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[ <li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="x">{L_LOGIN_LOGOUT}</a></li>
|
|
||||||
<!-- ENDIF -->
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<span class="corners-bottom"><span></span></span></div>
|
|
||||||
</div>]]></find>
|
|
||||||
<action type="after-add"><![CDATA[<!-- ENDIF -->]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="styles/prosilver/template/overall_footer.html">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[<li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a></li>]]></find>
|
|
||||||
<inline-edit>
|
|
||||||
<inline-find><![CDATA[<li class="icon-home">]]></inline-find>
|
|
||||||
<inline-action type="after-add"><![CDATA[<!-- IF U_PORTAL --><a href="{U_PORTAL}">{L_PORTAL}</a> » <!-- ENDIF -->]]></inline-action>
|
|
||||||
</inline-edit>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<open src="styles/prosilver/theme/stylesheet.css">
|
|
||||||
<edit>
|
|
||||||
<find><![CDATA[@import url("colours.css");]]></find>
|
|
||||||
<action type="after-add"><![CDATA[@import url("portal.css");]]></action>
|
|
||||||
</edit>
|
|
||||||
</open>
|
|
||||||
<php-installer>install/index.php</php-installer>
|
|
||||||
<diy-instructions lang="de"><![CDATA[Rufe install/index.php auf und führe den Installer aus
|
|
||||||
|
|
||||||
Aktualisiere deine Styles:
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Templates" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Themes" > jedes > "Aktualisieren"
|
|
||||||
"Administrations-Bereich" (ACP) > "Styles" > "Grafiksammlungen" > jedes > "Aktualisieren"
|
|
||||||
|
|
||||||
Leere den Cache im "Administrations-Bereich" (ACP) > "Allgemein" > "Den Cache leeren"
|
|
||||||
]]></diy-instructions>
|
|
||||||
<diy-instructions lang="en"><![CDATA[Browse to install/index.php and run the installer
|
|
||||||
|
|
||||||
Refresh your Styles:
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Templates" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Themes" > each > "refresh"
|
|
||||||
"Administration Control Panel" (ACP) > "Styles" > "Imagesets" > each > "refresh"
|
|
||||||
|
|
||||||
Clear your cache in the "Administration Control Panel" (ACP) > "General" > "Purge the cache"
|
|
||||||
]]></diy-instructions>
|
|
||||||
</action-group>
|
|
||||||
</mod>
|
|
||||||
50
language/ar/info_acp_portal.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'ACP_PORTAL_MODULES' => 'الموديلات',
|
||||||
|
'ACP_PORTAL' => 'مجلة المنتدى',
|
||||||
|
'ACP_PORTAL_GENERAL_INFO' => 'الإعدادات',
|
||||||
|
'ACP_PORTAL_UPLOAD' => 'رفع الموديل',
|
||||||
|
|
||||||
|
// Portal logs
|
||||||
|
'LOG_PORTAL_LINK_ADDED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم إضافة الرابط : %s ',
|
||||||
|
'LOG_PORTAL_LINK_UPDATED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم تحديث الرابط : %s ',
|
||||||
|
'LOG_PORTAL_LINK_REMOVED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم إزالة الرابط : %s ',
|
||||||
|
'LOG_PORTAL_EVENT_ADDED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم إضافة حدث : %s ',
|
||||||
|
'LOG_PORTAL_EVENT_UPDATED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم تحديث حدث : %s ',
|
||||||
|
'LOG_PORTAL_EVENT_REMOVED' => '<strong>تغيير إعدادات المجلة</strong><br />» تم إزالة حدث : %s ',
|
||||||
|
'LOG_PORTAL_CONFIG' => '<strong>تغيير إعدادات المجلة</strong><br />» %s',
|
||||||
|
));
|
||||||
75
language/ar/modules/portal_announcements_module.php
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Announcements
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LATEST_ANNOUNCEMENTS' => 'أحدث الإعلانات العامة',
|
||||||
|
'GLOBAL_ANNOUNCEMENTS' => 'إعلانات عامة',
|
||||||
|
'GLOBAL_ANNOUNCEMENT' => 'إعلان عام',
|
||||||
|
'VIEW_LATEST_ANNOUNCEMENT' => '1 إعلان',
|
||||||
|
'VIEW_LATEST_ANNOUNCEMENTS' => '%d إعلانات',
|
||||||
|
'READ_FULL' => 'اقرأ المزيد',
|
||||||
|
'NO_ANNOUNCEMENTS' => 'لا توجد إعلانات عامة',
|
||||||
|
'POSTED_BY' => 'كاتب المُشاركة',
|
||||||
|
'COMMENTS' => 'التعليقات',
|
||||||
|
'VIEW_COMMENTS' => 'مُشاهدة التعليقات',
|
||||||
|
'PORTAL_POST_REPLY' => 'إضافة تعليق',
|
||||||
|
'TOPIC_VIEWS' => 'المُشاهدات ',
|
||||||
|
'JUMP_NEWEST' => 'انتقل إلى أحدث مُشاركة',
|
||||||
|
'JUMP_FIRST' => 'انتقل إلى أول مُشاركة',
|
||||||
|
'JUMP_TO_POST' => 'انتقل إلى المُشاركة',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_ANNOUNCE_SETTINGS' => 'إعدادات الإعلانات العامة',
|
||||||
|
'ACP_PORTAL_ANNOUNCE_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل الإعلانات العامة.',
|
||||||
|
'PORTAL_ANNOUNCEMENTS' => 'إظهار الإعلانات العامة',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_EXP' => 'عرض هذا الموديل في المجلة.',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_STYLE' => 'التصميم الإفتراضي ',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_STYLE_EXP' => 'اختيارك "نعم" يعني استخدام التصميم الإفتراضي لشكل المنتديات ( بدون محتوى الإعلانات ). اختيارك "لا" يعني استخدام التصميم الخاص بالمجلة ( عرض النص / محتوى الإعلانات ).',
|
||||||
|
'PORTAL_NUMBER_OF_ANNOUNCEMENTS' => 'عدد الإعلانات في المجلة ',
|
||||||
|
'PORTAL_NUMBER_OF_ANNOUNCEMENTS_EXP' => 'القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_DAY' => 'عدد الأيام لعرض الإعلان',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_DAY_EXP' => 'سيتم إخفاء الإعلانات بعد القيمة التي تحددها هنا. القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'الحد الأقصى لطول / عدد حروف الإعلانات العامة ',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => 'القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'المنتديات ',
|
||||||
|
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXP' => 'حدد المنتديات التي تريد إظهار الإعلانات منها. عدم التحديد يعني إظهار الإعلانات من جميع المنتديات. <br />تستطيع هنا كذلك تحديد المنتديات التي تريد استثنائها من الإعلانات بشرط أن تختار "نعم" في الخيار أدناه ( استثناء المنتديات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من منتدى بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على المنتديات المطلوبة.',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'استثناء المنتديات ',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP'=> 'اختار "نعم" إذا تريد استثناء الإعلانات من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'تفعيل / تعطيل الصلاحيات ',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'سيتم تطبيق نفس صلاحيات العضو لمًشاهدة المنتدى على هذا الموديل.',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_ARCHIVE' => 'تفعيل نظام الأرشفة ',
|
||||||
|
'PORTAL_ANNOUNCEMENTS_ARCHIVE_EXP' => 'اختيارك "نعم" يعني إظهار أرقام الصفحات / نظام الأرشفة للإعلانات.',
|
||||||
|
'PORTAL_SHOW_REPLIES_VIEWS' => 'إظهار عدد الردود و المُشاهدات ',
|
||||||
|
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'هذه الإعدادات متعلقة بالتصميم الإفتراضي.<br />سيتم عرض عدد الردود و المُشاهدات في 2 أعمدة إضافية عند اختيارك "نعم". سيتم عرض عدد الردود و المُشاهدات بجانب اسم المنتدى عند اختيارك "لا". <br />يُنصح بإختيار "لا" في حالة وجود مشاكل في ظهور الأعمدة الإضافية والتي تتطلب مساحة أكبر.',
|
||||||
|
));
|
||||||
55
language/ar/modules/portal_attachments_module.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Attachments
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'DOWNLOADS' => 'عدد التحميلات ',
|
||||||
|
'NO_ATTACHMENTS' => 'لا توجد ملفات مُرفقة',
|
||||||
|
'PORTAL_ATTACHMENTS' => 'المرفقات',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS' => 'إعدادات المرفقات',
|
||||||
|
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل المرفقات.',
|
||||||
|
'PORTAL_ATTACHMENTS_NUMBER' => 'عدد المرفقات ',
|
||||||
|
'PORTAL_ATTACHMENTS_NUMBER_EXP' => 'الحد الأقصى لعدد المرفقات التي سيتم عرضها في الموديل. القيمة صفر يعني عدد غير محدود',
|
||||||
|
'PORTAL_ATTACHMENTS_FORUM_IDS' => 'المنتديات ',
|
||||||
|
'PORTAL_ATTACHMENTS_FORUM_IDS_EXP' => 'حدد المنتديات التي تريد إظهار المرفقات منها. عدم التحديد يعني إظهار المرفقات من جميع المنتديات. <br />تستطيع هنا كذلك تحديد المنتديات التي تريد استثنائها من المرفقات بشرط أن تختار "نعم" في الخيار أدناه ( استثناء المنتديات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من منتدى بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على المنتديات المطلوبة.',
|
||||||
|
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'استثناء المنتديات ',
|
||||||
|
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'اختار "نعم" إذا تريد استثناء المرفقات من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'عدد حروف أسماء المرفقات ',
|
||||||
|
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => 'القيمة صفر تعني غير محدود',
|
||||||
|
'PORTAL_ATTACHMENTS_FILETYPE' => 'أنواع الملفات ',
|
||||||
|
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'حدد أنواع الملفات التي تريد عرضها في المرفقات. تستطيع هنا كذلك تحديد أنواع الملفات التي تريد استثنائها من المرفقات بشرط أن تختار "نعم" في الخيار أدناه ( استثناء أنواع الملفات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من أنواع الملفات بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على الأنواع المطلوبة.',
|
||||||
|
'PORTAL_ATTACHMENTS_EXCLUDE' => 'استثناء أنواع الملفات ',
|
||||||
|
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'اختار "نعم" إذا تريد استثناء أنواع الملفات التي حددتها في الخيار أعلاه ( أنواع الملفات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
));
|
||||||
45
language/ar/modules/portal_birthday_list_module.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Birthday List
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'BIRTHDAYS_AHEAD' => 'خلال الـ %s الأيام القادمة',
|
||||||
|
'NO_BIRTHDAYS_AHEAD' => 'لا يوجد أعضاء لديهم أعياد ميلاد خلال هذه الفترة.',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'إعدادات أعياد الميلاد',
|
||||||
|
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل أعياد الميلاد.',
|
||||||
|
'PORTAL_BIRTHDAYS' => 'قائمة أعياد الميلاد',
|
||||||
|
'PORTAL_BIRTHDAYS_AHEAD' => 'عدد الأيام لعرض أعياد الميلاد القادمة ',
|
||||||
|
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'عدد الأيام القادمة التي سيكون فيها أعياد ميلاد للأعضاء.<br />القيمة صفر تعني تعطيل قائمة أعياد الميلاد.',
|
||||||
|
));
|
||||||
132
language/ar/modules/portal_calendar_module.php
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Calendar
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_CALENDAR' => 'التقويم',
|
||||||
|
'VIEW_NEXT_MONTH' => 'الشهر التالي',
|
||||||
|
'VIEW_PREVIOUS_MONTH' => 'الشهر السابق',
|
||||||
|
'EVENT_START' => 'من ',
|
||||||
|
'EVENT_END' => 'إلى ',
|
||||||
|
'EVENT_TIME' => 'التوقيت ',
|
||||||
|
'EVENT_ALL_DAY' => 'طوال اليوم ',
|
||||||
|
'CURRENT_EVENTS' => 'الأحداث الحالية ',
|
||||||
|
'NO_CUR_EVENTS' => 'لا توجد أحداث حالية',
|
||||||
|
'UPCOMING_EVENTS' => 'الأحداث القادمة ',
|
||||||
|
'NO_UPCOMING_EVENTS' => 'لا توجد أحداث قادمة',
|
||||||
|
|
||||||
|
'mini_cal' => array(
|
||||||
|
'day' => array(
|
||||||
|
'1' => 'أح',
|
||||||
|
'2' => 'أث',
|
||||||
|
'3' => 'ثل',
|
||||||
|
'4' => 'أر',
|
||||||
|
'5' => 'خم',
|
||||||
|
'6' => 'جم',
|
||||||
|
'7' => 'سب',
|
||||||
|
),
|
||||||
|
|
||||||
|
'month' => array(
|
||||||
|
'1' => 'ينا.',
|
||||||
|
'2' => 'فبر.',
|
||||||
|
'3' => 'مار.',
|
||||||
|
'4' => 'أبر.',
|
||||||
|
'5' => 'ماي',
|
||||||
|
'6' => 'يول.',
|
||||||
|
'7' => 'يون.',
|
||||||
|
'8' => 'أغس.',
|
||||||
|
'9' => 'سبت.',
|
||||||
|
'10'=> 'أكت.',
|
||||||
|
'11'=> 'نوف.',
|
||||||
|
'12'=> 'ديس.',
|
||||||
|
),
|
||||||
|
|
||||||
|
'long_month'=> array(
|
||||||
|
'1' => 'يناير',
|
||||||
|
'2' => 'فبراير',
|
||||||
|
'3' => 'مارس',
|
||||||
|
'4' => 'أبريل',
|
||||||
|
'5' => 'مايو',
|
||||||
|
'6' => 'يونيو',
|
||||||
|
'7' => 'يوليو',
|
||||||
|
'8' => 'أغسطس',
|
||||||
|
'9' => 'سبتمبر',
|
||||||
|
'10'=> 'أكتوبر',
|
||||||
|
'11'=> 'نوفمبر',
|
||||||
|
'12'=> 'ديسمبر',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_CALENDAR' => 'إعدادات التقويم',
|
||||||
|
'ACP_PORTAL_CALENDAR_EXP' => 'من هنا تستطيع تخصيص موديل التقويم.',
|
||||||
|
'ACP_PORTAL_EVENTS' => 'الأحداث',
|
||||||
|
'PORTAL_CALENDAR_TODAY_COLOR' => 'لون اليوم الحالي ',
|
||||||
|
'PORTAL_CALENDAR_TODAY_COLOR_EXP' => 'تستطيع إضافة أكواد الألوان HEX مثل : #FFFFFF للون الأبيض , أو إضافة أسماء الألوان باللغة الإنجليزية مثل : violet ( البنفسجي ).',
|
||||||
|
'PORTAL_CALENDAR_SUNDAY_COLOR' => 'لون يوم الأحد ',
|
||||||
|
'PORTAL_CALENDAR_SUNDAY_COLOR_EXP' => 'تستطيع إضافة أكواد الألوان HEX مثل : #FFFFFF للون الأبيض , أو إضافة أسماء الألوان باللغة الإنجليزية مثل : violet ( البنفسجي ).',
|
||||||
|
'PORTAL_LONG_MONTH' => 'إظهار الإسم الكامل للشهور ',
|
||||||
|
'PORTAL_LONG_MONTH_EXP' => 'أسماء الشهور ستكون مُختصرة عند اختيارك "لا". مثال : سيكون أغس بدلاً من أغسطس.',
|
||||||
|
'PORTAL_SUNDAY_FIRST' => 'أول أيام الأسبوع ',
|
||||||
|
'PORTAL_SUNDAY_FIRST_EXP' => 'سيبدأ الأسبوع في التقويم من ( الأثنين ) إلى ( الأحد ) عند اختيارك "لا". وسيكون من ( الأحد ) إلى ( السبت ) عند اختيارك "نعم".',
|
||||||
|
'PORTAL_DISPLAY_EVENTS' => 'إظهار الأحداث ',
|
||||||
|
'PORTAL_DISPLAY_EVENTS_EXP' => 'سيتم عرض الأحداث التي تم إنشائها في موديل التقويم',
|
||||||
|
'PORTAL_EVENTS_MANAGE' => 'إدارة الأحداث',
|
||||||
|
'NO_EVENT_TITLE' => 'لم يتم إضافة عنوان للحدث.',
|
||||||
|
'NO_EVENT_START' => 'لم يتم إضافة تاريخ البداية للحدث.',
|
||||||
|
'ADD_EVENT' => 'إضافة حدث جديد',
|
||||||
|
'EVENT_UPDATED' => 'تم تحديث الحدث بنجاح.',
|
||||||
|
'EVENT_ADDED' => 'تم إضافة الحدث بنجاح.',
|
||||||
|
'NO_EVENT' => 'لم يتم تحديد أي حدث.',
|
||||||
|
'EVENT_TITLE' => 'عنوان الحدث ',
|
||||||
|
'EVENT_DESC' => 'وصف الحدث ',
|
||||||
|
'EVENT_LINK' => 'رابط الحدث ',
|
||||||
|
'EVENT_LINK_EXP' => 'أدخل الرابط إلى الموضوع أو إلى موقع يحتوي على الإعلان / موضوع مناقشة الحدث.',
|
||||||
|
'NO_EVENTS' => 'لا يوجد أحداث',
|
||||||
|
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'توقيت البداية الذي أدخلته غير صحيح. الرجاء اتباع التعليمات بعناية.',
|
||||||
|
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'توقيت النهاية الذي أدخلته غير صحيح. الرجاء اتباع التعليمات بعناية.',
|
||||||
|
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'توقيت بداية الحدث يجب أن يكون في المستقبل.',
|
||||||
|
'ACP_PORTAL_EVENT_START_DATE' => 'تاريخ بداية الحدث ',
|
||||||
|
'ACP_PORTAL_EVENT_START_DATE_EXP' => 'أدخل تاريخ و وقت بداية الحدث. يجب أن يكون التوقيت على هذا الشكل : MM/DD/YYYY 3:00 PM',
|
||||||
|
'ACP_PORTAL_EVENT_END_DATE' => 'تاريخ نهاية الحدث ',
|
||||||
|
'ACP_PORTAL_EVENT_END_DATE_EXP' => 'أدخل تاريخ و وقت نهاية الحدث. يجب أن يكون التوقيت على هذا الشكل : MM/DD/YYYY 3:00 PM',
|
||||||
|
'ACP_PORTAL_CALENDAR_EVENT_START_FIRST' => 'نهاية الحدث يجب أن يكون بعد بداية الحدث.',
|
||||||
|
'ACP_PORTAL_CALENDAR_PERMISSION' => 'الصلاحيات ',
|
||||||
|
'ACP_PORTAL_CALENDAR_PERMISSION_EXP' => 'حدد المجموعات التي تستطيع مُشاهدة موديل الأحداث. يجب عليك عدم تحديد أي مجموعة لو تريد عرض هذا الموديل لجميع الأعضاء. <br />تستطيع تحديد أو إلعاء التحديد لأكثر من مجموعة بالنقر باستمرار على زر الكنترول <samp>CTRL</samp> والنقر بنفس الوقت بالماوس على المجموعة المطلوبة.',
|
||||||
|
'PORTAL_EVENTS_URL_NEW_WINDOW' => 'افتح الروابط الخارجية للحدث في نافذة جديدة ',
|
||||||
|
|
||||||
|
// Logs
|
||||||
|
'LOG_PORTAL_EVENT_UPDATED' => '<strong>تم تحديث الحدث في المجلة</strong><br />» %s',
|
||||||
|
'LOG_PORTAL_EVENT_ADDED' => '<strong>تم إضافة الحدث في المجلة</strong><br />» %s',
|
||||||
|
'LOG_PORTAL_EVENT_REMOVED' => '<strong>تم حذف الحدث في المجلة</strong><br />» %s',
|
||||||
|
));
|
||||||
43
language/ar/modules/portal_clock_module.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Clock
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'CLOCK' => 'Clock',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_CLOCK_SETTINGS' => 'إعدادات الساعة',
|
||||||
|
'ACP_PORTAL_CLOCK_SETTINGS_EXP' => 'من هنا تستطيع تخصيص الساعة بمنتداك',
|
||||||
|
'ACP_PORTAL_CLOCK_SRC' => 'الساعة ',
|
||||||
|
'ACP_PORTAL_CLOCK_SRC_EXP' => 'أدخل إسم الملف للساعة التي تريدها. يجب أن يكون الملف في المسار styles/*yourstyle*/theme/images/portal/. *yourstyle* يعني إسم الإستايل الذي تستخدمه.',
|
||||||
|
));
|
||||||
48
language/ar/modules/portal_custom_module.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Custom
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_CUSTOM' => 'Custom Block',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_CUSTOM_SETTINGS' => 'إعدادات الموديل الخاص',
|
||||||
|
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'من هنا تستطيع تخصيص الموديل الخاص',
|
||||||
|
'ACP_PORTAL_CUSTOM_PREVIEW' => 'استعراض',
|
||||||
|
'ACP_PORTAL_CUSTOM_CODE' => 'المحتوى ',
|
||||||
|
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'أدخل الكود الذي سيظهر في هذا الموديل ( المسموح به هو HTML أو BBCode ).',
|
||||||
|
'ACP_PORTAL_CUSTOM_PERMISSION' => 'الصلاحيات ',
|
||||||
|
'ACP_PORTAL_CUSTOM_PERMISSION_EXP' => 'حدد المجموعات التي تستطيع مُشاهدة هذا الموديل. عدم تحديد أي مجموعة يعني عرض هذا الموديل لجميع الأعضاء.<br />تستطيع تحديد أو إلعاء التحديد لأكثر من مجموعة بالنقر باستمرار على زر الكنترول <samp>CTRL</samp> والنقر بنفس الوقت بالماوس على المجموعة المطلوبة.',
|
||||||
|
'ACP_PORTAL_CUSTOM_BBCODE' => 'تفعيل أكواد البي بي ',
|
||||||
|
'ACP_PORTAL_CUSTOM_BBCODE_EXP' => 'اختيارك "نعم" يعني استخدام أكواد الـBBCode في صندوق الكتابة أعلاه. اختيارك "لا" يعني استخدام أكواد ال HTML.',
|
||||||
|
));
|
||||||
68
language/ar/modules/portal_donation_module.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Donation
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'DONATION' => 'تبرعات الـPaypal',
|
||||||
|
'DONATION_TEXT' => 'التبرعات هي عبارة عن دعم للخدمات التي نقدمها في موقعنا ولا توجد أي نية للحصول على مكاسب مالية منها. نرحب بتبرعاتكم التي ستساعد في تغطية تكاليف السيرفر والإستضافة , إسم النطاق...الخ.',
|
||||||
|
'PAY_MSG' => 'الرجاء استخدام النقطة العشرية ( . ) وعدم استخدام علامة الفاصلة ( , ). مثال 3.50',
|
||||||
|
'PAY_ITEM' => 'تبرع !', // paypal item
|
||||||
|
|
||||||
|
'AUD' => 'دولار استرالي (AUD)',
|
||||||
|
'CAD' => 'دولار كندي (CAD)',
|
||||||
|
'CZK' => 'الكورونا التشيكية (CZK)',
|
||||||
|
'DKK' => 'الكرونة الدنماركي (DKK)',
|
||||||
|
'HKD' => 'دولار هونج كونج (HKD)',
|
||||||
|
'HUF' => 'فورينت هنجاري / مجري (HUF)',
|
||||||
|
'NZD' => 'دولار نيوزلاندي (NZD)',
|
||||||
|
'NOK' => 'كرونه نرويجي (NOK)',
|
||||||
|
'PLN' => 'زلوتي بولندي (PLN)',
|
||||||
|
'GBP' => 'جنيه استرليني (GBP)',
|
||||||
|
'SGD' => 'دولار سينغافوري (SGD)',
|
||||||
|
'SEK' => 'كرونه سويدي (SEK)',
|
||||||
|
'CHF' => 'فرنك سويسري (CHF)',
|
||||||
|
'JPY' => 'ين ياباني (JPY)',
|
||||||
|
'USD' => 'دولار أمريكي (USD)',
|
||||||
|
'EUR' => 'يورو (EUR)',
|
||||||
|
'MXN' => 'بيزو مكسيكي (MXN)',
|
||||||
|
'ILS' => 'شيكل اسرائيلي (ILS)',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_PAYPAL_SETTINGS' => 'إعدادات الـ Paypal',
|
||||||
|
'ACP_PORTAL_PAYPAL_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل التبرعات Paypal.',
|
||||||
|
'PORTAL_PAY_ACC' => 'حسابك في الـ Paypal ',
|
||||||
|
'PORTAL_PAY_ACC_EXP' => 'أدخل البريد الإلكتروني الخاص بك في موقع الـ Paypal. مثال : xxx@xxx.com',
|
||||||
|
'PORTAL_PAY_CUSTOM' => 'إضافة إسم المستخدم إلى تبرعات الـ Paypal',
|
||||||
|
'PORTAL_PAY_DEFAULT' => 'العُملة الإفتراضية ',
|
||||||
|
'PORTAL_PAY_DEFAULT_EXP' => 'العُملة التي سيتم تحديدها افتراضياً في القائمة المُنسدلة للعُملات.'
|
||||||
|
));
|
||||||
37
language/ar/modules/portal_forumlist_module.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Forumlist
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_FORUMLIST' => 'قائمة المنتديات',
|
||||||
|
));
|
||||||
48
language/ar/modules/portal_friends_module.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Friends
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'FRIENDS' => 'الأصدقاء',
|
||||||
|
'FRIENDS_OFFLINE' => 'الغير مُتصلين',
|
||||||
|
'FRIENDS_ONLINE' => 'المُتصلين',
|
||||||
|
'NO_FRIENDS' => 'لا يوجد أصدقاء معروفين حالياً',
|
||||||
|
'NO_FRIENDS_OFFLINE' => 'لا يوجد أصدقاء غير مُتصلين',
|
||||||
|
'NO_FRIENDS_ONLINE' => 'لا يوجد أصدقاء مُتصلين',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_FRIENDS_SETTINGS' => 'إعدادات الإصدقاء',
|
||||||
|
'ACP_PORTAL_FRIENDS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل الأصدقاء.',
|
||||||
|
'PORTAL_MAX_ONLINE_FRIENDS' => 'عدد الأصدقاء ',
|
||||||
|
'PORTAL_MAX_ONLINE_FRIENDS_EXP' => 'الحد الأقصى لعدد الأصدقاء الذين سيتم عرضهم في الموديل.',
|
||||||
|
));
|
||||||
44
language/ar/modules/portal_latest_bots_module.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Latest Bots
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LATEST_BOTS' => 'محركات البحث',
|
||||||
|
'LAST_VISITED_BOTS' => 'آخر زيارة لمحركات البحث',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_BOTS_SETTINGS' => 'إعدادات محركات البحث',
|
||||||
|
'ACP_PORTAL_BOTS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل محركات البحث.',
|
||||||
|
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'عدد محركات البحث ',
|
||||||
|
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXP' => 'عدد محركات البحث الذي تريد عرضهم في الموديل. القيمة صفر تعني عدد غير محدود',
|
||||||
|
));
|
||||||
43
language/ar/modules/portal_latest_members_module.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Latest Members
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LATEST_MEMBERS' => 'آخر الأعضاء المُسجلين',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_MEMBERS_SETTINGS' => 'إعدادات آخر الأعضاء المُسجلين',
|
||||||
|
'ACP_PORTAL_MEMBERS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل آخر الأعضاء المُسجلين.',
|
||||||
|
'PORTAL_MAX_LAST_MEMBER' => 'عدد الأعضاء ',
|
||||||
|
'PORTAL_MAX_LAST_MEMBER_EXP' => 'الحد الأقصى لعدد آخر الأعضاء المُسجلين الذين سيتم عرضهم. الصفر يعني عدد غير محدود',
|
||||||
|
));
|
||||||
45
language/ar/modules/portal_leaders_module.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Leaders
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'NO_ADMINISTRATORS_P' => 'لا يوجد مدراء',
|
||||||
|
'NO_MODERATORS_P' => 'لا يوجد مشرفين',
|
||||||
|
'NO_GROUPS_P' => 'لا توجد مجموعات',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_LEADERS' => 'إعدادات فريق الموقع',
|
||||||
|
'ACP_PORTAL_LEADERS_EXP' => 'من هنا تستطيع تخصيص الموديل الخاص بفريق الموقع',
|
||||||
|
'PORTAL_LEADERS_EXT' => 'العرض الموسع للمدراء / للفريق ',
|
||||||
|
'PORTAL_LEADERS_EXT_EXP' => 'العرض القياسي سيكون لجميع المدراء والمشرفين , بينما العرض الموسع سيتضمن جميع المجموعات الغير المخفية في ألوان المجموعات.',
|
||||||
|
));
|
||||||
38
language/ar/modules/portal_link_us_module.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Link Us
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LINK_US' => 'ارتبط بنا ',
|
||||||
|
'LINK_US_TXT' => 'نرجوا عدم التردد في الإرتباط إلى <strong>%s</strong> بواسطة استخدام كود الـHTML التالي في موقعك :',
|
||||||
|
));
|
||||||
57
language/ar/modules/portal_links_module.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Links
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_LINKS' => 'الروابط',
|
||||||
|
'LINKS_NO_LINKS' => 'لا يوجد روابط',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_LINKS' => 'إعدادات الروابط',
|
||||||
|
'ACP_PORTAL_LINKS_EXP' => 'من هنا تستطيع تخصيص قائمة الروابط في موديل الروابط',
|
||||||
|
'ACP_PORTAL_LINK_TITLE' => 'العنوان',
|
||||||
|
'ACP_PORTAL_LINK_TYPE' => 'نوع الرابط ',
|
||||||
|
'ACP_PORTAL_LINK_TYPE_EXP' => 'حدد الخيار "رابط داخلي" اذا لديك رابط لأحد صفحات منتداك ولكي تمنع الخروج من منتداك.',
|
||||||
|
'ACP_PORTAL_LINK_INT' => 'رابط داخلي',
|
||||||
|
'ACP_PORTAL_LINK_EXT' => 'رابط خارجي',
|
||||||
|
'ACP_PORTAL_LINK_ADD' => 'إضافة رابط جديد ',
|
||||||
|
'ACP_PORTAL_LINK_URL' => 'عنوان الرابط ',
|
||||||
|
'ACP_PORTAL_LINK_URL_EXP' => 'الروابط الخارجية :<br />يجب أن تحتوي جميع الروابط على http://<br /><br />الروابط الداخلية :<br />فقط أدخل الملف php file كعنوان رابط , مثال : index.php?style=4.',
|
||||||
|
'ACP_PORTAL_LINK_PERMISSION' => 'صلاحيات الرابط ',
|
||||||
|
'ACP_PORTAL_LINK_PERMISSION_EXP'=> 'حدد المجموعات التي تستطيع مُشاهدة الرابط. يجب عليك عدم تحديد أي مجموعة لو تريد عرض هذا الرابط لجميع الأعضاء.<br />تستطيع تحديد أو إلعاء التحديد لأكثر من مجموعة بالنقر باستمرار على زر الكنترول <samp>CTRL</samp> والنقر بنفس الوقت بالماوس على المجموعة المطلوبة.',
|
||||||
|
'ACP_PORTAL_LINKS_NEW_WINDOW' => 'فتح الروابط الخارجية في نافذة جديدة ',
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
'NO_LINK_TITLE' => 'يجب عليك إضافة عنوان لهذا الرابط.',
|
||||||
|
'NO_LINK_URL' => 'يجب عليك إضافة عنوان الرابط.',
|
||||||
|
));
|
||||||
70
language/ar/modules/portal_main_menu_module.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Main Menu
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'M_MENU' => 'القائمة',
|
||||||
|
'M_CONTENT' => 'المحتوى',
|
||||||
|
'M_ACP' => 'لوحة تحكم المدير',
|
||||||
|
'M_HELP' => 'مساعدة',
|
||||||
|
'M_BBCODE' => 'دليل BBCode',
|
||||||
|
'M_TERMS' => 'شروط الإستخدام',
|
||||||
|
'M_PRV' => 'سياسة الخصوصية',
|
||||||
|
'M_SEARCH' => 'بحث',
|
||||||
|
'MENU_NO_LINKS' => 'لا يوجد روابط',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_MENU' => 'إعدادات القائمة',
|
||||||
|
'ACP_PORTAL_MENU_LINK_SETTINGS' => 'إعدادات الرابط',
|
||||||
|
'ACP_PORTAL_MENU_EXP' => 'من هنا تستطيع تخصيص القائمة الرئيسية',
|
||||||
|
'ACP_PORTAL_MENU_MANAGE' => 'إدارة القائمة',
|
||||||
|
'ACP_PORTAL_MENU_MANAGE_EXP' => 'من هنا تستطيع إدارة الروابط في القائمة الرئيسية.',
|
||||||
|
'ACP_PORTAL_MENU_CAT' => 'القسم',
|
||||||
|
'ACP_PORTAL_MENU_IS_CAT' => 'اجعله قسم خاص ',
|
||||||
|
'ACP_PORTAL_MENU_INT' => 'داخلي',
|
||||||
|
'ACP_PORTAL_MENU_EXT' => 'خارجي',
|
||||||
|
'ACP_PORTAL_MENU_TITLE' => 'العنوان ',
|
||||||
|
'ACP_PORTAL_MENU_URL' => 'عنوان الرابط ',
|
||||||
|
'ACP_PORTAL_MENU_ADD' => 'إضافة رابط تنقل جديد',
|
||||||
|
'ACP_PORTAL_MENU_TYPE' => 'نوع الرابط ',
|
||||||
|
'ACP_PORTAL_MENU_TYPE_EXP' => 'اختار "داخلي" لو لديك رابط إلى صفحة موجودة في منتداك من أجل منع الخروج الغبر مرغوب به خارج منتداك.',
|
||||||
|
'ACP_PORTAL_MENU_CREATE_CAT' => 'يجب عليك أولاً إنشاء قسم.',
|
||||||
|
'ACP_PORTAL_MENU_URL_EXP' => 'الروابط الخارجية :<br />يجب أن تحتوي جميع الروابط على http://<br /><br />الروابط الداخلية :<br />يجب أن تضيف فقط ملف الـ php كرابط. مثال : index.php?style=4.',
|
||||||
|
'ACP_PORTAL_MENU_PERMISSION' => 'صلاحيات الرابط ',
|
||||||
|
'ACP_PORTAL_MENU_PERMISSION_EXP'=> 'حدد المجموعات التي تستطيع مُشاهدة هذا الرابط. عدم تحديد أي مجموعة يعني عرض هذا الرابط لجميع الأعضاء.<br />تستطيع تحديد أو إلعاء التحديد لأكثر من مجموعة بالنقر باستمرار على زر الكنترول <samp>CTRL</samp> والنقر بنفس الوقت بالماوس على المجموعة المطلوبة.',
|
||||||
|
'ACP_PORTAL_MENU_EXT_NEW_WINDOW'=> 'فتح الروابط الخارجية في نافذة جديدة ',
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
'NO_LINK_TITLE' => 'يجب عليك إضافة عنوان لهذا الرابط.',
|
||||||
|
'NO_LINK_URL' => 'يجب عليك إضافة الرابط.',
|
||||||
|
));
|
||||||
71
language/ar/modules/portal_news_module.php
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - News
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LATEST_NEWS' => 'آخر الأخبار',
|
||||||
|
'READ_FULL' => 'اقرأ المزيد',
|
||||||
|
'NO_NEWS' => 'لا يوجد أخبار',
|
||||||
|
'POSTED_BY' => 'كاتب المُشاركة',
|
||||||
|
'COMMENTS' => 'التعليقات',
|
||||||
|
'VIEW_COMMENTS' => 'مُشاهدة التعليقات',
|
||||||
|
'PORTAL_POST_REPLY' => 'إضافة تعليق',
|
||||||
|
'TOPIC_VIEWS' => 'المُشاهدات',
|
||||||
|
'JUMP_NEWEST' => 'انتقل إلى أحدث مُشاركة',
|
||||||
|
'JUMP_FIRST' => 'انتقل إلى أول مُشاركة',
|
||||||
|
'JUMP_TO_POST' => 'انتقل إلى المُشاركة',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_NEWS_SETTINGS' => 'إعدادات الأخبار',
|
||||||
|
'ACP_PORTAL_NEWS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل الأخبار.',
|
||||||
|
'PORTAL_NEWS_STYLE' => 'التصميم الإفتراضي ',
|
||||||
|
'PORTAL_NEWS_STYLE_EXP' => 'اختيارك "نعم" يعني استخدام التصميم الإفتراضي لشكل المنتديات ( بدون محتوى الأخبار ). اختيارك "لا" يعني استخدام التصميم الخاص بالمجلة ( عرض النص / محتوى الأخبار ).',
|
||||||
|
'PORTAL_SHOW_ALL_NEWS' => 'عرض جميع الأخبار ',
|
||||||
|
'PORTAL_SHOW_ALL_NEWS_EXP' => 'عرض جميع الأخبار في هذا المنتدى ( يشمل المواضيع المُثبتة ).',
|
||||||
|
'PORTAL_NUMBER_OF_NEWS' => 'عدد الأخبار في المجلة ',
|
||||||
|
'PORTAL_NUMBER_OF_NEWS_EXP' => 'القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_NEWS_LENGTH' => 'الحد الأقصى لطول / عدد حروف الأخبار ',
|
||||||
|
'PORTAL_NEWS_LENGTH_EXP' => 'القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_NEWS_FORUM' => 'المنتديات ',
|
||||||
|
'PORTAL_NEWS_FORUM_EXP' => 'حدد المنتديات التي تريد إظهار الأخبار منها. عدم التحديد يعني إظهار الأخبار من جميع المنتديات. <br />تستطيع هنا كذلك تحديد المنتديات التي تريد استثنائها من الأخبار بشرط أن تختار "نعم" في الخيار أدناه ( استثناء المنتديات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من منتدى بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على المنتديات المطلوبة.',
|
||||||
|
'PORTAL_NEWS_EXCLUDE' => 'استثناء المنتديات ',
|
||||||
|
'PORTAL_NEWS_EXCLUDE_EXP' => 'اختار "نعم" إذا تريد استثناء الأخبار من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
'PORTAL_NEWS_PERMISSIONS' => 'تفعيل / تعطيل الصلاحيات ',
|
||||||
|
'PORTAL_NEWS_PERMISSIONS_EXP' => 'سيتم تطبيق نفس صلاحيات العضو لمًشاهدة المنتدى على هذا الموديل.',
|
||||||
|
'PORTAL_NEWS_SHOW_LAST' => 'الترتيب بحسب آخر مُشاركة ',
|
||||||
|
'PORTAL_NEWS_SHOW_LAST_EXP' => 'اختار "نعم" إذا تريد ترتيب آخر الأخبار بحسب آخر مُشاركة. اختار "لا" إذا تريد الترتيب بحسب آخر موضوع.',
|
||||||
|
'PORTAL_NEWS_ARCHIVE' => 'تفعيل نظام الأرشفة ',
|
||||||
|
'PORTAL_NEWS_ARCHIVE_EXP' => 'اختيارك "نعم" يعني إظهار أرقام الصفحات / نظام الأرشفة للأخبار.',
|
||||||
|
'PORTAL_SHOW_REPLIES_VIEWS' => 'إظهار عدد الردود و المُشاهدات ',
|
||||||
|
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'هذه الإعدادات متعلقة بالتصميم الإفتراضي.<br />سيتم عرض عدد الردود و المُشاهدات في 2 أعمدة إضافية عند اختيارك "نعم". سيتم عرض عدد الردود و المُشاهدات بجانب اسم المنتدى عند اختيارك "لا". <br />يُنصح بإختيار "لا" في حالة وجود مشاكل في ظهور الأعمدة الإضافية والتي تتطلب مساحة أكبر.',
|
||||||
|
));
|
||||||
54
language/ar/modules/portal_poll_module.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Poll
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_POLL' => 'التصويت',
|
||||||
|
'LATEST_POLLS' => 'أحدث التصويتات',
|
||||||
|
'NO_OPTIONS' => 'لا توجد خيارات في هذا التصويت.',
|
||||||
|
'NO_POLL' => 'لا يوجد أي تصويت',
|
||||||
|
'RETURN_PORTAL' => '%sالعودة إلى المجلة%s',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_POLLS_SETTINGS' => 'إعدادات التصويت',
|
||||||
|
'ACP_PORTAL_POLLS_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل التصويت.',
|
||||||
|
'PORTAL_POLL_TOPIC_ID' => 'المنتديات ',
|
||||||
|
'PORTAL_POLL_TOPIC_ID_EXP' => 'حدد المنتديات التي تريد إظهار التصويتات منها. عدم التحديد يعني إظهار التصويتات من جميع المنتديات. <br />تستطيع هنا كذلك تحديد المنتديات التي تريد استثنائها من التصويتات بشرط أن تختار "نعم" في الخيار أدناه ( استثناء المنتديات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من منتدى بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على المنتديات المطلوبة.',
|
||||||
|
'PORTAL_POLL_EXCLUDE_ID' => 'استثناء المنتديات ',
|
||||||
|
'PORTAL_POLL_EXCLUDE_ID_EXP' => 'اختار "نعم" إذا تريد استثناء التصويتات من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
'PORTAL_POLL_LIMIT' => 'عدد التصويتات ',
|
||||||
|
'PORTAL_POLL_LIMIT_EXP' => 'عدد التصويتات التي تريد عرضها في صفحة المجلة.',
|
||||||
|
'PORTAL_POLL_ALLOW_VOTE' => 'السماح بالتصويت ',
|
||||||
|
'PORTAL_POLL_ALLOW_VOTE_EXP' => 'السماح للأعضاء الذين يملكون الصلاحيات المطلوبة بالتصويت بواسطة صفحة المجلة.',
|
||||||
|
'PORTAL_POLL_HIDE' => 'إخفاء التصويتات المُنتهية ',
|
||||||
|
));
|
||||||
42
language/ar/modules/portal_random_member_module.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Random Member
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_RANDOM_MEMBER' => 'عضو رائع',
|
||||||
|
'RND_JOIN' => 'تاريخ الإشتراك ',
|
||||||
|
'RND_POSTS' => 'عدد المشاركات ',
|
||||||
|
'RND_OCC' => 'المهنة ',
|
||||||
|
'RND_FROM' => 'المكان ',
|
||||||
|
'RND_WWW' => 'صفحة الموقع ',
|
||||||
|
));
|
||||||
52
language/ar/modules/portal_recent_module.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Recent
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_RECENT' => 'أحدث المواضيع',
|
||||||
|
'PORTAL_RECENT_TOPIC' => 'أحدث المواضيع',
|
||||||
|
'PORTAL_RECENT_ANN' => 'أحدث الإعلانات',
|
||||||
|
'PORTAL_RECENT_HOT_TOPIC' => 'أحدث المواضيع النشطة ',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_RECENT_SETTINGS' => 'إعدادات أحدث المواضيع',
|
||||||
|
'ACP_PORTAL_RECENT_SETTINGS_EXP' => 'من هنا تستطيع تخصيص موديل أحدث المواضيع.',
|
||||||
|
'PORTAL_MAX_TOPIC' => 'عدد المواضيع ',
|
||||||
|
'PORTAL_MAX_TOPIC_EXP' => 'عدد المواضيع التي ستظهر في هذا الموديل. القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_RECENT_TITLE_LIMIT' => 'عدد حروف العنوان ',
|
||||||
|
'PORTAL_RECENT_TITLE_LIMIT_EXP' => 'عدد حروف عناوين المواضيع التي ستظهر في هذا الموديل. القيمة صفر تعني عدد غير محدود',
|
||||||
|
'PORTAL_RECENT_FORUM' => 'المنتديات ',
|
||||||
|
'PORTAL_RECENT_FORUM_EXP' => 'حدد المنتديات التي تريد إظهار آخر المواضيع منها. عدم التحديد يعني إظهار آخر المواضيع من جميع المنتديات. <br />تستطيع هنا كذلك تحديد المنتديات التي تريد استثنائها من المرفقات بشرط أن تختار "نعم" في الخيار أدناه ( استثناء المنتديات ). <br />تستطيع تحديد أو إلغاء التحديد لأكثر من منتدى بواسطة النقر مطولاً على زر الكنترول <samp>CTRL</samp> والتحديد بالماوس على المنتديات المطلوبة.',
|
||||||
|
'PORTAL_EXCLUDE_FORUM' => 'استثناء المنتديات ',
|
||||||
|
'PORTAL_EXCLUDE_FORUM_EXP' => 'اختار "نعم" إذا تريد استثناء آخر المواضيع من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
|
||||||
|
));
|
||||||
43
language/ar/modules/portal_search_module.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Search
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_SEARCH' => 'بحث',
|
||||||
|
'PORTAL_SEARCH_GO' => 'اذهب',
|
||||||
|
'PORTAL_SEARCH_SITE' => 'المنتديات',
|
||||||
|
'PORTAL_SEARCH_POSTS' => 'المشاركات',
|
||||||
|
'PORTAL_SEARCH_AUTHOR' => 'الكاتب',
|
||||||
|
'PORTAL_SEARCH_ENGINE' => 'محركات البحث',
|
||||||
|
'PORTAL_SEARCH_ADV' => 'بحث مُتقدم',
|
||||||
|
));
|
||||||
52
language/ar/modules/portal_statistics_module.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Statistics
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'ST_TOP' => 'الإجمالي',
|
||||||
|
'ST_TOP_ANNS' => 'إجمالي الإعلانات :',
|
||||||
|
'ST_TOP_STICKYS'=> 'إجمالي المواضيع المُثبتة :',
|
||||||
|
'ST_TOT_ATTACH' => 'إجمالي المرفقات :',
|
||||||
|
'TOPICS_PER_DAY_OTHER' => 'المواضيع يومياً : <strong>%d</strong>',
|
||||||
|
'TOPICS_PER_DAY_ZERO' => 'المواضيع يومياً : <strong>0</strong>',
|
||||||
|
'POSTS_PER_DAY_OTHER' => 'المُشاركات يومياً : <strong>%d</strong>',
|
||||||
|
'POSTS_PER_DAY_ZERO' => 'المُشاركات يومياً : <strong>0</strong>',
|
||||||
|
'USERS_PER_DAY_OTHER' => 'الأعضاء يومياً : <strong>%d</strong>',
|
||||||
|
'USERS_PER_DAY_ZERO' => 'الأعضاء يومياً : <strong>0</strong>',
|
||||||
|
'TOPICS_PER_USER_OTHER' => 'المواضيع لكل عضو : <strong>%d</strong>',
|
||||||
|
'TOPICS_PER_USER_ZERO' => 'المواضيع لكل عضو : <strong>0</strong>',
|
||||||
|
'POSTS_PER_USER_OTHER' => 'المُشاركات لكل عضو : <strong>%d</strong>',
|
||||||
|
'POSTS_PER_USER_ZERO' => 'المُشاركات لكل عضو : <strong>0</strong>',
|
||||||
|
'POSTS_PER_TOPIC_OTHER' => 'المُشاركات لكل موضوع : <strong>%d</strong>',
|
||||||
|
'POSTS_PER_TOPIC_ZERO' => 'المُشاركات لكل موضوع : <strong>0</strong>',
|
||||||
|
));
|
||||||
38
language/ar/modules/portal_stylechanger_module.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Stylechanger
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'BOARD_STYLE' => 'استايل المنتدى',
|
||||||
|
'STYLE_CHOOSE' => 'حدد الإستايل',
|
||||||
|
));
|
||||||
42
language/ar/modules/portal_topposters_module.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Topposters
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'TOPPOSTERS' => 'أكثر الأعضاء نشاطاً',
|
||||||
|
'TOPPOSTERS_CONFIG' => 'إعدادات أكثر الأعضاء نشاطاً',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'NUM_TOPPOSTERS' => 'عدد الأعضاء ',
|
||||||
|
'NUM_TOPPOSTERS_EXP' => 'أدخل عدد الأعضاء الذين تريد عرضهم في موديل أكثر الأعضاء نشاطاً.',
|
||||||
|
));
|
||||||
46
language/ar/modules/portal_user_menu_module.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - User Menu
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'USER_MENU' => 'قائمة العضو',
|
||||||
|
'UM_LOG_ME_IN' => 'تذكرني',
|
||||||
|
'UM_HIDE_ME' => 'أخفني',
|
||||||
|
'UM_REGISTER_NOW' => 'التسجيل الآن !',
|
||||||
|
'UM_MAIN_SUBSCRIBED'=> 'الإشتراكات',
|
||||||
|
'UM_BOOKMARKS' => 'المواضيع المُفضلة',
|
||||||
|
'M_MENU' => 'القائمة',
|
||||||
|
'M_ACP' => 'لوحة تحكم المدير',
|
||||||
|
'USER_MENU_SETTINGS' => 'إعدادات قائمة العضو',
|
||||||
|
'USER_MENU_REGISTER' => 'عرض رابط التسجيل في قائمة العضو',
|
||||||
|
));
|
||||||
43
language/ar/modules/portal_welcome_module.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Welcome
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_WELCOME' => 'رسالة الترحيب',
|
||||||
|
|
||||||
|
// ACP
|
||||||
|
'ACP_PORTAL_WELCOME_SETTINGS' => 'إعدادات رسالة الترحيب',
|
||||||
|
'ACP_PORTAL_WELCOME_PREVIEW' => 'استعراض رسالة الترحيب',
|
||||||
|
'ACP_PORTAL_WELCOME_MESSAGE' => 'رسالة الترحيب ',
|
||||||
|
'ACP_PORTAL_WELCOME_MESSAGE_EXP' => 'من هنا تستطيع تغيير رسالة الترحيب. أكواد BBCode / الصور / الروابط مسموح بها.',
|
||||||
|
));
|
||||||
37
language/ar/modules/portal_whois_online_module.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1 - Who is online
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_WHOIS_ONLINE' => 'الأعضاء الموجودون الآن',
|
||||||
|
));
|
||||||
40
language/ar/permissions_portal.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1
|
||||||
|
* @copyright (c) 2015 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
// Adding the permissions
|
||||||
|
'ACL_A_MANAGE_PORTAL' => 'يستطيع تغيير إعدادات المجلة',
|
||||||
|
'ACL_U_VIEW_PORTAL' => 'يستطيع مُشاهدة المجلة',
|
||||||
|
));
|
||||||
42
language/ar/portal.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1
|
||||||
|
* @copyright (c) 2013 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
// Common
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL' => 'المجلة',
|
||||||
|
'VIEWING_PORTAL' => 'صفحة المجلة',
|
||||||
|
'BACK' => 'العودة',
|
||||||
|
'B3P_WRONG_METHOD_CALL' => 'طلب غير صحيح للطريقة %s',
|
||||||
|
));
|
||||||
110
language/ar/portal_acp.php
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.1
|
||||||
|
* @copyright (c) 2014 Board3 Group ( www.board3.de )
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
* Translated By : Bassel Taha Alhitary - www.alhitary.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
// Portal Modules
|
||||||
|
'ACP_PORTAL_MODULES_EXP' => 'من هنا تستطيع إدارة الموديلات الخاصة بمجلتك. نرجوا تعطيل المجلة إذا عطلت أيضاً جميع الموديلات ولم تفعل أي موديل.',
|
||||||
|
|
||||||
|
'MODULE_POS_TOP' => 'الأعلى',
|
||||||
|
'MODULE_POS_LEFT' => 'العمود اليسار',
|
||||||
|
'MODULE_POS_RIGHT' => 'العمود اليمين',
|
||||||
|
'MODULE_POS_CENTER' => 'العمود الوسط',
|
||||||
|
'MODULE_POS_BOTTOM' => 'الأسفل',
|
||||||
|
'ADD_MODULE' => 'إضافة موديل',
|
||||||
|
'CHOOSE_MODULE' => 'اختار موديل',
|
||||||
|
'CHOOSE_MODULE_EXP' => 'اختار الموديل من القائمة المُنسدلة',
|
||||||
|
'SUCCESS_ADD' => 'تم إضافة الموديل بنجاح.',
|
||||||
|
'SUCCESS_DELETE' => 'تم حذف الموديل بنجاح.',
|
||||||
|
'NO_MODULES' => 'لم يتم الكشف عن أي موديلات.',
|
||||||
|
'MOVE_RIGHT' => 'تحريك لليمين',
|
||||||
|
'MOVE_LEFT' => 'تحريك لليسار',
|
||||||
|
'B3P_FILE_NOT_FOUND' => 'لم يتم العثور على الملف المطلوب',
|
||||||
|
'UNABLE_TO_MOVE' => 'لا يُمكن تحريك الموديل إلى العمود الذي حددته.',
|
||||||
|
'UNABLE_TO_MOVE_ROW' => 'لا يُمكن تحريك الموديل إلى الصف الذي حددته.',
|
||||||
|
'UNABLE_TO_ADD_MODULE' => 'لا يُمكن إضافة الموديل إلى العمود الذي حددته.',
|
||||||
|
'DELETE_MODULE_CONFIRM' => 'هل أنت متأكد من حذف الموديل "%1$s" ?',
|
||||||
|
'MODULE_RESET_SUCCESS' => 'تم إعادة ضبط إعدادت الموديل.',
|
||||||
|
'MODULE_RESET_CONFIRM' => 'هل أنت متأكد من إعادة ضبط إعدادات الموديل "%1$s" ?',
|
||||||
|
'MODULE_NOT_EXISTS' => 'الموديل المُحدد غير موجود.',
|
||||||
|
|
||||||
|
'MODULE_OPTIONS' => 'خيارات الموديل',
|
||||||
|
'MODULE_NAME' => 'الإسم ',
|
||||||
|
'MODULE_NAME_EXP' => 'ادخل إسم الموديل الذي يجب عرضه في ضبط الموديل.',
|
||||||
|
'MODULE_IMAGE' => 'الصورة ',
|
||||||
|
'MODULE_IMAGE_EXP' => 'ادخل إسم صورة الموديل. يجب أن تكون الصور موجودة في المسار styles/{yourstyle}/theme/images/portal/. {yourstyle} يعني إسم مجلد الاستايل الذي تستخدمه.',
|
||||||
|
'MODULE_PERMISSIONS' => 'الصلاحيات ',
|
||||||
|
'MODULE_PERMISSIONS_EXP' => 'حدد المجموعات التي تستطيع مُشاهدة هذا الموديل. عدم تحديد أي مجموعة يعني عرض هذا الموديل لجميع الأعضاء.<br />تستطيع تحديد أو إلعاء التحديد لأكثر من مجموعة بالنقر باستمرار على زر الكنترول <samp>CTRL</samp> والنقر بنفس الوقت بالماوس على المجموعة المطلوبة.',
|
||||||
|
'MODULE_IMAGE_WIDTH' => 'عرض الصورة ',
|
||||||
|
'MODULE_IMAGE_WIDTH_EXP' => 'ادخل مقاس العرض لصورة الموديل بالبيكسل',
|
||||||
|
'MODULE_IMAGE_HEIGHT' => 'ارتفاع الصورة ',
|
||||||
|
'MODULE_IMAGE_HEIGHT_EXP' => 'ادخل مقاس الإرتفاع لصورة الموديل بالبيكسل',
|
||||||
|
'MODULE_RESET' => 'إعادة ضبط الإعدادات ',
|
||||||
|
'MODULE_RESET_EXP' => 'سوف يتم إعادة ضبط الإعدادات إلى الإفتراضية !',
|
||||||
|
'MODULE_STATUS' => 'تفعيل ',
|
||||||
|
'MODULE_ADD_ONCE' => 'يُمكن إضافة هذا الموديل مرة واحدة فقط.',
|
||||||
|
'MODULE_IMAGE_ERROR' => 'يوجد خطأ أثناء التحقق من صورة الموديل :',
|
||||||
|
'UNKNOWN_MODULE_METHOD' => 'لا يُمكن مُعالجة طريقة الموديل %1$s.',
|
||||||
|
|
||||||
|
// general
|
||||||
|
'ACP_PORTAL_CONFIG_INFO' => 'إعدادات عامة',
|
||||||
|
'ACP_PORTAL_GENERAL_TITLE' => 'إدارة المجلة',
|
||||||
|
'ACP_PORTAL_GENERAL_TITLE_EXP' => 'شكراً لإستخدامك مجلة المنتدى Board3 ! من هنا تستطيع إدارة صفحة المجلة. الخيارات الموجود بالأسفل تعطيك إمكانية تخصيص العديد من الإعدادات العامة.',
|
||||||
|
'ACP_PORTAL_SHOW_ALL' => 'إظهار المجلة على جميع الصفحات ',
|
||||||
|
'ACP_PORTAL_SHOW_ALL_EXP' => 'عرض المجلة على جميع الصفحات',
|
||||||
|
'PORTAL_ENABLE' => 'تفعيل ',
|
||||||
|
'PORTAL_ENABLE_EXP' => 'تفعيل أو تعطيل المجلة',
|
||||||
|
'PORTAL_LEFT_COLUMN' => 'تفعيل العمود اليسار ',
|
||||||
|
'PORTAL_LEFT_COLUMN_EXP' => 'عرض العمود اليسار فقط وإخفاء اليمين',
|
||||||
|
'PORTAL_RIGHT_COLUMN' => 'تفعيل العمود اليمين ',
|
||||||
|
'PORTAL_RIGHT_COLUMN_EXP' => 'عرض العمود اليمين فقط وإخفاء اليسار',
|
||||||
|
'PORTAL_DISPLAY_JUMPBOX' => 'إظهار صندوق التنقل السريع ',
|
||||||
|
'PORTAL_DISPLAY_JUMPBOX_EXP' => 'عرض صندوق التنقل السريع في المجلة. لن يعمل هذا الخيار إذا تم تعطيل صندوق التنقل السريع في خصائص المنتدى.',
|
||||||
|
'ACP_PORTAL_COLUMN_WIDTH_SETTINGS' => 'إعدادات عرض الأعمدة',
|
||||||
|
'PORTAL_LEFT_COLUMN_WIDTH' => 'عرض العمود اليسار ',
|
||||||
|
'PORTAL_LEFT_COLUMN_WIDTH_EXP' => 'تغيير عرض العمود اليسار بالبيكسل ؛ ننصح بالقيمة 180',
|
||||||
|
'PORTAL_RIGHT_COLUMN_WIDTH' => 'عرض العمود اليمين ',
|
||||||
|
'PORTAL_RIGHT_COLUMN_WIDTH_EXP' => 'تغيير عرض العمود اليمين بالبيكسل ؛ ننصح بالقيمة 180',
|
||||||
|
'PORTAL_SHOW_ALL_SIDE' => 'اظهار العمود على جميع الصفحات ',
|
||||||
|
'PORTAL_SHOW_ALL_SIDE_EXP' => 'اختار أحد الأعمدة لعرضه على جميع الصفحات.',
|
||||||
|
'PORTAL_SHOW_ALL_LEFT' => 'يسار',
|
||||||
|
'PORTAL_SHOW_ALL_RIGHT' => 'يمين',
|
||||||
|
|
||||||
|
'LINK_ADDED' => 'تم إضافة الرابط بنجاح',
|
||||||
|
'LINK_UPDATED' => 'تم تحديث الرابط بنجاح',
|
||||||
|
|
||||||
|
// Install
|
||||||
|
'PORTAL_BASIC_INSTALL' => 'جاري إضافة الموديلات الأساسية',
|
||||||
|
'PORTAL_BASIC_UNINSTALL' => 'جاري حذف الموديلات من قاعدة البيانات',
|
||||||
|
));
|
||||||
40
language/de/b3p_enable_error.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
$lang = array_merge($lang, [
|
||||||
|
'BOARD3_PORTAL' => 'Board3 Portal',
|
||||||
|
'ERROR_B3P_EXTENSION_NOT_ENABLEABLE' => 'Die Erweiterung „%s“ kann nicht aktiviert werden. Bitte prüfe die Voraussetzungen, die für die Erweiterung notwendig sind.',
|
||||||
|
'ERROR_B3P_MSG_PHPBB_WRONG_VERSION' => 'Minimum phpBB %1$s aber kleiner als %2$s',
|
||||||
|
'ERROR_B3P_MSG_PHP_WRONG_VERSION' => 'Minimum PHP %1$s aber kleiner als %2$s',
|
||||||
|
]);
|
||||||
50
language/de/info_acp_portal.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
|
||||||
|
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'ACP_PORTAL_MODULES' => 'Portal Module',
|
||||||
|
'ACP_PORTAL' => 'Portal',
|
||||||
|
'ACP_PORTAL_GENERAL_INFO' => 'Allgemeine Einstellungen',
|
||||||
|
'ACP_PORTAL_UPLOAD' => 'Modul hochladen',
|
||||||
|
|
||||||
|
// Logs
|
||||||
|
'LOG_PORTAL_LINK_ADDED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link hinzugefügt: %s ',
|
||||||
|
'LOG_PORTAL_LINK_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link geändert: %s ',
|
||||||
|
'LOG_PORTAL_LINK_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />» Link gelöscht: %s ',
|
||||||
|
'LOG_PORTAL_EVENT_ADDED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin eingetragen: %s ',
|
||||||
|
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin geändert: %s ',
|
||||||
|
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />» Termin gelöscht: %s ',
|
||||||
|
'LOG_PORTAL_CONFIG' => '<strong>Portal-Einstellungen geändert</strong><br />» %s',
|
||||||
|
));
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Announcements
|
* @package Board3 Portal v2.3 - Announcements
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ if (empty($lang) || !is_array($lang))
|
|||||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
$lang = array_merge($lang, array(
|
$lang = array_merge($lang, array(
|
||||||
'LATEST_ANNOUNCEMENTS' => 'Letzte Bekanntmachung',
|
'LATEST_ANNOUNCEMENTS' => 'Letzte Bekanntmachung',
|
||||||
'GLOBAL_ANNOUNCEMENTS' => 'Global Bekanntmachungen',
|
'GLOBAL_ANNOUNCEMENTS' => 'Globale Bekanntmachungen',
|
||||||
'GLOBAL_ANNOUNCEMENT' => 'Globale Bekanntmachung',
|
'GLOBAL_ANNOUNCEMENT' => 'Globale Bekanntmachung',
|
||||||
'VIEW_LATEST_ANNOUNCEMENT' => '1 Bekanntmachung',
|
'VIEW_LATEST_ANNOUNCEMENT' => '1 Bekanntmachung',
|
||||||
'VIEW_LATEST_ANNOUNCEMENTS' => '%d Bekanntmachungen',
|
'VIEW_LATEST_ANNOUNCEMENTS' => '%d Bekanntmachungen',
|
||||||
@@ -62,8 +62,8 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Maximale Länge der Bekanntmachungen',
|
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Maximale Länge der Bekanntmachungen',
|
||||||
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'Foren der Bekanntmachungen',
|
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' => 'Foren der Bekanntmachungen',
|
||||||
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXP' => 'Die ID des Forums, aus welchem die Bekanntmachungen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren aussschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren aussschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM_EXP' => 'Die ID des Forums, aus welchem die Bekanntmachungen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'Foren aussschließen',
|
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
|
||||||
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP'=> 'Wähle "Ja" wenn du die ausgewählten Foren vom Bekanntmachungen-Block ausschließen willst, und "Nein" wenn du nur die Bekanntmachungen aus den ausgewählten Foren im Bekanntmachungen-Block sehen willst.',
|
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP'=> 'Wähle "Ja" wenn du die ausgewählten Foren vom Bekanntmachungen-Block ausschließen willst, und "Nein" wenn du nur die Bekanntmachungen aus den ausgewählten Foren im Bekanntmachungen-Block sehen willst.',
|
||||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
||||||
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der Bekanntmachungen',
|
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der Bekanntmachungen',
|
||||||
@@ -72,5 +72,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
||||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Attachments
|
* @package Board3 Portal v2.3 - Attachments
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -42,15 +42,13 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_ATTACHMENTS_NUMBER' => 'Anzahl der anzuzeigenden Dateianhänge',
|
'PORTAL_ATTACHMENTS_NUMBER' => 'Anzahl der anzuzeigenden Dateianhänge',
|
||||||
'PORTAL_ATTACHMENTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_ATTACHMENTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||||
'PORTAL_ATTACHMENTS_FORUM_IDS' => 'Dateianhänge Foren',
|
'PORTAL_ATTACHMENTS_FORUM_IDS' => 'Dateianhänge Foren',
|
||||||
'PORTAL_ATTACHMENTS_FORUM_IDS_EXP' => 'Die Foren, aus welchen die Dateianhänge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren aussschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren aussschließen" auf "Nein" steht, wähle die Foren aus, aus denen du die Dateianhänge sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_ATTACHMENTS_FORUM_IDS_EXP' => 'Die Foren, aus welchen die Dateianhänge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren aus, aus denen du die Dateianhänge sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'Foren aussschließen',
|
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
|
||||||
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die Dateianhänge der ausgewählten Foren im Dateianhänge-Block sehen willst.',
|
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die Dateianhänge der ausgewählten Foren im Dateianhänge-Block sehen willst.',
|
||||||
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'Maximal angezeigte Länge der Dateianhänge',
|
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'Maximal angezeigte Länge der Dateianhänge',
|
||||||
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||||
'PORTAL_ATTACHMENTS_FILETYPE' => 'Dateitypen',
|
'PORTAL_ATTACHMENTS_FILETYPE' => 'Dateitypen',
|
||||||
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'Falls "Dateitypen ausschließen" auf "Ja" steht, wähle die Dateitypen die du ausschließen willst.<br />Falls "Dateitypen ausschließen" auf "Nein" steht, wähle die Dateitypen die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'Falls "Dateitypen ausschließen" auf "Ja" steht, wähle die Dateitypen die du ausschließen willst.<br />Falls "Dateitypen ausschließen" auf "Nein" steht, wähle die Dateitypen die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_ATTACHMENTS_EXCLUDE' => 'Dateitypen aussschließen',
|
'PORTAL_ATTACHMENTS_EXCLUDE' => 'Dateitypen ausschließen',
|
||||||
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Dateitypen vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die ausgewählten Dateitypen im Dateianhänge-Block sehen willst.',
|
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Dateitypen vom Dateianhänge-Block ausschließen willst, und "Nein" wenn du nur die ausgewählten Dateitypen im Dateianhänge-Block sehen willst.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Birthday List
|
* @package Board3 Portal v2.3 - Birthday List
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -39,9 +39,6 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'Einstellungen für den Geburtstage-Block',
|
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'Einstellungen für den Geburtstage-Block',
|
||||||
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für den Geburtstage-Block ändern.',
|
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für den Geburtstage-Block ändern.',
|
||||||
'PORTAL_BIRTHDAYS' => 'Geburtstage',
|
'PORTAL_BIRTHDAYS' => 'Geburtstage',
|
||||||
'PORTAL_BIRTHDAYS_EXPLAIN' => 'Diesen Block auf dem Portal anzeigen.',
|
|
||||||
'PORTAL_BIRTHDAYS_AHEAD' => 'Anstehende Geburtstage',
|
'PORTAL_BIRTHDAYS_AHEAD' => 'Anstehende Geburtstage',
|
||||||
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'Zeitraum für die Geburtstagsvorschau (Tage).<br />"0" deaktiviert die Anzeige der bevorstehenden Geburtstage.',
|
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'Zeitraum für die Geburtstagsvorschau (Tage).<br />"0" deaktiviert die Anzeige der bevorstehenden Geburtstage.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Calendar
|
* @package Board3 Portal v2.3 - Calendar
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -115,23 +115,17 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'Die eingegebene Start-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'Die eingegebene Start-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
||||||
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'Die eingegebene End-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'Die eingegebene End-Zeit ist nicht korrekt. Bitte folge genau den Anweisungen.',
|
||||||
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'Die Start-zeit der Veranstaltung muss in der Zukunft liegen.',
|
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'Die Start-zeit der Veranstaltung muss in der Zukunft liegen.',
|
||||||
'ACP_PORTAL_EVENT_START_DAY' => 'Start-Datum der Veranstaltung',
|
'ACP_PORTAL_EVENT_START_DATE' => 'Start-Datum der Veranstaltung',
|
||||||
'ACP_PORTAL_EVENT_START_DAY_EXP' => 'Gebe das Datum ein, an dem die Veranstaltung beginnt. Das Datum muss in folgendem Format sein: JJJJ-MM-TT',
|
'ACP_PORTAL_EVENT_START_DATE_EXP' => 'Gebe das Datum und Uhrzeit ein, zu der die Veranstaltung beginnt. Datum und Uhrzeit sollten in einem ähnlichen Format sein: TT.MM.JJJJ SS:MM',
|
||||||
'ACP_PORTAL_EVENT_START_TIME' => 'Start-Zeit der Veranstaltung',
|
'ACP_PORTAL_EVENT_END_DATE' => 'End-Datum der Veranstaltung',
|
||||||
'ACP_PORTAL_EVENT_START_TIME_EXP' => 'Gebe die Zeit ein, zu der die Veranstaltung beginnt. Die Zeit muss im 24 Stunden Format sein, z.B. 23:12',
|
'ACP_PORTAL_EVENT_END_DATE_EXP' => 'Gebe das Datum und Uhrzeit ein, zu der die Veranstaltung endet. Datum und Uhrzeit sollten in einem ähnlichen Format sein: TT.MM.JJJJ',
|
||||||
'ACP_PORTAL_EVENT_END_DAY' => 'End-Datum der Veranstaltung',
|
|
||||||
'ACP_PORTAL_EVENT_END_DAY_EXP' => 'Gebe das Datum ein, an dem die Veranstaltung endet. Das Datum muss in folgendem Format sein: JJJJ-MM-TT',
|
|
||||||
'ACP_PORTAL_EVENT_END_TIME' => 'End-Zeit der Veranstaltung',
|
|
||||||
'ACP_PORTAL_EVENT_END_TIME_EXP' => 'Gebe die Zeit ein, zu der die Veranstaltung endet. Die Zeit muss im 24 Stunden Forrmat sein, z.B. 23:12',
|
|
||||||
'ACP_PORTAL_CALENDAR_EVENT_START_FIRST' => 'Das Ende der Veranstaltung muss nach dem Beginn der Veranstaltung liegen.',
|
'ACP_PORTAL_CALENDAR_EVENT_START_FIRST' => 'Das Ende der Veranstaltung muss nach dem Beginn der Veranstaltung liegen.',
|
||||||
'ACP_PORTAL_CALENDAR_PERMISSION' => 'Berechtigungen für die Veranstaltung',
|
'ACP_PORTAL_CALENDAR_PERMISSION' => 'Berechtigungen für die Veranstaltung',
|
||||||
'ACP_PORTAL_CALENDAR_PERMISSION_EXP' => 'Wähle die Gruppen aus, denen es erlaubt sein soll die Veranstaltung zu sehen. Falls alle Benutzer die Veranstaltung sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'ACP_PORTAL_CALENDAR_PERMISSION_EXP' => 'Wähle die Gruppen aus, denen es erlaubt sein soll die Veranstaltung zu sehen. Falls alle Benutzer die Veranstaltung sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
|
'PORTAL_EVENTS_URL_NEW_WINDOW' => 'Öffne externe Veranstaltungsverknüpfungen in einem neuen Fenster',
|
||||||
|
|
||||||
// Logs
|
// Logs
|
||||||
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Veranstaltung aktualisiert</strong><br />» %s',
|
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Veranstaltung aktualisiert</strong><br />» %s',
|
||||||
'LOG_PORTAL_EVENT_ADDED' => '<strong>Veranstaltung hinzugefügt</strong><br />» %s',
|
'LOG_PORTAL_EVENT_ADDED' => '<strong>Veranstaltung hinzugefügt</strong><br />» %s',
|
||||||
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Veranstaltung entfernt</strong><br />» %s',
|
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Veranstaltung entfernt</strong><br />» %s',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Clock
|
* @package Board3 Portal v2.3 - Clock
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -40,5 +40,3 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_CLOCK_SRC' => 'Uhr',
|
'ACP_PORTAL_CLOCK_SRC' => 'Uhr',
|
||||||
'ACP_PORTAL_CLOCK_SRC_EXP' => 'Gebe den Dateinamen der Uhr ein. Die Uhr muss unter folgendem Pfad gespeichert sein: styles/*yourstyle*/theme/images/portal/.',
|
'ACP_PORTAL_CLOCK_SRC_EXP' => 'Gebe den Dateinamen der Uhr ein. Die Uhr muss unter folgendem Pfad gespeichert sein: styles/*yourstyle*/theme/images/portal/.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Custom
|
* @package Board3 Portal v2.3 - Custom
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ $lang = array_merge($lang, array(
|
|||||||
// ACP
|
// ACP
|
||||||
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
|
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
|
||||||
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'Einstellungen für den eigenen Block',
|
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'Einstellungen für den eigenen Block',
|
||||||
'ACP_PORTAL_CUSTOM_CODE_SHORT' => 'Der eingegebene Code ist nicht lang genug.',
|
'TOO_FEW_CHARS' => 'Der eingegebene Code ist nicht lang genug.',
|
||||||
'ACP_PORTAL_CUSTOM_PREVIEW' => 'Vorschau',
|
'ACP_PORTAL_CUSTOM_PREVIEW' => 'Vorschau',
|
||||||
'ACP_PORTAL_CUSTOM_CODE' => 'Code für den eigenen Block',
|
'ACP_PORTAL_CUSTOM_CODE' => 'Code für den eigenen Block',
|
||||||
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Ändere den Code für deinen eigenen Block (HTML oder BBCode).',
|
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Ändere den Code für deinen eigenen Block (HTML oder BBCode).',
|
||||||
@@ -46,5 +46,3 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_CUSTOM_BBCODE' => 'BBCode für den eigenen Block aktivieren',
|
'ACP_PORTAL_CUSTOM_BBCODE' => 'BBCode für den eigenen Block aktivieren',
|
||||||
'ACP_PORTAL_CUSTOM_BBCODE_EXP' => 'BBCode kann dann in diesem Block benutzt werden. Ansonsten wird HTML direkt geparst.',
|
'ACP_PORTAL_CUSTOM_BBCODE_EXP' => 'BBCode kann dann in diesem Block benutzt werden. Ansonsten wird HTML direkt geparst.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Donation
|
* @package Board3 Portal v2.3 - Donation
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -59,12 +59,9 @@ $lang = array_merge($lang, array(
|
|||||||
// ACP
|
// ACP
|
||||||
'ACP_PORTAL_PAYPAL_SETTINGS' => 'Paypal Einstellungen',
|
'ACP_PORTAL_PAYPAL_SETTINGS' => 'Paypal Einstellungen',
|
||||||
'ACP_PORTAL_PAYPAL_SETTINGS_EXP' => 'Hier kannst du die Paypal Einstellungen ändern.',
|
'ACP_PORTAL_PAYPAL_SETTINGS_EXP' => 'Hier kannst du die Paypal Einstellungen ändern.',
|
||||||
'PORTAL_PAY_C_BLOCK' => 'Normalen Paypal-Block anzeigen',
|
|
||||||
'PORTAL_PAY_C_BLOCK_EXP' => 'Diesen Block auf dem Portal anzeigen.',
|
|
||||||
'PORTAL_PAY_S_BLOCK' => 'Paypal als kleinen Block anzeigen',
|
|
||||||
'PORTAL_PAY_S_BLOCK_EXP' => 'Diesen Block auf dem Portal anzeigen.',
|
|
||||||
'PORTAL_PAY_ACC' => 'Paypal Account',
|
'PORTAL_PAY_ACC' => 'Paypal Account',
|
||||||
'PORTAL_PAY_ACC_EXP' => 'Gib deine e-mail-Adresse an, die du bei Paypal benutzt, z.B. xxx@xxx.com',
|
'PORTAL_PAY_ACC_EXP' => 'Gib deine e-mail-Adresse an, die du bei Paypal benutzt, z.B. xxx@xxx.com',
|
||||||
|
'PORTAL_PAY_CUSTOM' => 'Benutzername an die Paypal Zahlung anhängen',
|
||||||
|
'PORTAL_PAY_DEFAULT' => 'Standard-Währung',
|
||||||
|
'PORTAL_PAY_DEFAULT_EXP' => 'Währung die standardmäßig in der Drop-Down-Liste ausgewählt ist.'
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
37
language/de/modules/portal_forumlist_module.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3 - Forumlist
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'PORTAL_FORUMLIST' => 'Forumliste',
|
||||||
|
'PORTAL_FORUMLIST_EXP' => '<span style="color: #BC2A4D;">In diesem Modul kann auf der Portal Seite kein Modul Bild oder Font Awesome Icon angezeigt werden!</span>',
|
||||||
|
));
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Friends
|
* @package Board3 Portal v2.3 - Friends
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -45,5 +45,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limitierung der Anzeige Freunde online',
|
'PORTAL_MAX_ONLINE_FRIENDS' => 'Limitierung der Anzeige Freunde online',
|
||||||
'PORTAL_MAX_ONLINE_FRIENDS_EXP' => 'Limitiert die Anzeige Freunde online auf den angegebenen Wert.',
|
'PORTAL_MAX_ONLINE_FRIENDS_EXP' => 'Limitiert die Anzeige Freunde online auf den angegebenen Wert.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Latest Bots
|
* @package Board3 Portal v2.3 - Latest Bots
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@ if (empty($lang) || !is_array($lang))
|
|||||||
// equally where a string contains only two placeholders which are used to wrap text
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
$lang = array_merge($lang, array(
|
$lang = array_merge($lang, array(
|
||||||
'LATEST_BOTS' => 'Lezte Bots',
|
'LATEST_BOTS' => 'Letzte Bots',
|
||||||
'LAST_VISITED_BOTS' => 'Die letzten %s Bots',
|
'LAST_VISITED_BOTS' => 'Die letzten Bots',
|
||||||
|
|
||||||
// ACP
|
// ACP
|
||||||
'ACP_PORTAL_BOTS_SETTINGS' => 'Einstellungen für Bot-Besuche',
|
'ACP_PORTAL_BOTS_SETTINGS' => 'Einstellungen für Bot-Besuche',
|
||||||
@@ -41,5 +41,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'Anzahl der anzuzeigenden Bots',
|
'PORTAL_LAST_VISITED_BOTS_NUMBER' => 'Anzahl der anzuzeigenden Bots',
|
||||||
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_LAST_VISITED_BOTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Latest Members
|
* @package Board3 Portal v2.3 - Latest Members
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -40,5 +40,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_MAX_LAST_MEMBER' => 'Anzahl der anzuzeigenden Mitglieder',
|
'PORTAL_MAX_LAST_MEMBER' => 'Anzahl der anzuzeigenden Mitglieder',
|
||||||
'PORTAL_MAX_LAST_MEMBER_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_MAX_LAST_MEMBER_EXP' => '0 bedeutet unbegrenzt',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Leaders
|
* @package Board3 Portal v2.3 - Leaders
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -43,5 +43,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_LEADERS_EXT' => 'Erweiterter Team-Block',
|
'PORTAL_LEADERS_EXT' => 'Erweiterter Team-Block',
|
||||||
'PORTAL_LEADERS_EXT_EXP' => 'Der standard Block listet alle Admins und Moderatoren auf, der erweiterte Team-Block listet zusätzlich alle nicht-versteckten Gruppen inklusive Legende auf.',
|
'PORTAL_LEADERS_EXT_EXP' => 'Der standard Block listet alle Admins und Moderatoren auf, der erweiterte Team-Block listet zusätzlich alle nicht-versteckten Gruppen inklusive Legende auf.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
39
language/de/modules/portal_link_us_module.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package Board3 Portal v2.3 - Link Us
|
||||||
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DO NOT CHANGE
|
||||||
|
*/
|
||||||
|
if (!defined('IN_PHPBB'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($lang) || !is_array($lang))
|
||||||
|
{
|
||||||
|
$lang = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPERS PLEASE NOTE
|
||||||
|
//
|
||||||
|
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
|
||||||
|
//
|
||||||
|
// Placeholders can now contain order information, e.g. instead of
|
||||||
|
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
|
||||||
|
// translators to re-order the output of data while ensuring it remains correct
|
||||||
|
//
|
||||||
|
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
|
||||||
|
// equally where a string contains only two placeholders which are used to wrap text
|
||||||
|
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
|
||||||
|
$lang = array_merge($lang, array(
|
||||||
|
'LINK_US' => 'Link zu uns ',
|
||||||
|
'LINK_US_HTML' => 'HTML',
|
||||||
|
'LINK_US_BBCODE' => 'BBCode',
|
||||||
|
'LINK_US_TXT' => 'Benutze bitte diesen Link um <em><strong>"%s"</strong></em> bei dir zu verlinken:',
|
||||||
|
));
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Links
|
* @package Board3 Portal v2.3 - Links
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -48,6 +48,9 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_LINK_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
'ACP_PORTAL_LINK_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
||||||
'ACP_PORTAL_LINK_PERMISSION' => 'Link Berechtigungen',
|
'ACP_PORTAL_LINK_PERMISSION' => 'Link Berechtigungen',
|
||||||
'ACP_PORTAL_LINK_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
'ACP_PORTAL_LINK_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
||||||
));
|
'ACP_PORTAL_LINKS_NEW_WINDOW' => 'Öffne externe Verknüpfungen in einem neuen Fenster/Tab',
|
||||||
|
|
||||||
?>
|
// Errors
|
||||||
|
'NO_LINK_TITLE' => 'Du musst einen Titel für diesen Link angeben.',
|
||||||
|
'NO_LINK_URL' => 'Du musst eine Link URL eingeben.',
|
||||||
|
));
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Main Menu
|
* @package Board3 Portal v2.3 - Main Menu
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -61,6 +61,9 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_MENU_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
'ACP_PORTAL_MENU_URL_EXP' => 'Externe Links:<br />Alle Links sollten mit einem http:// eingegeben werden.<br /><br />Interne Links:<br />Gebe nur die PHP Datei als Link URL ein, z.B. index.php?style=4.',
|
||||||
'ACP_PORTAL_MENU_PERMISSION' => 'Link Berechtigungen',
|
'ACP_PORTAL_MENU_PERMISSION' => 'Link Berechtigungen',
|
||||||
'ACP_PORTAL_MENU_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
'ACP_PORTAL_MENU_PERMISSION_EXP'=> 'Wähle die Gruppen aus die berechtigt sein sollen den Link zu sehen. Falls alle Benutzer den Link sehen sollen, dann wähle nichts aus.<br />Wähle mehrere Gruppen aus/ab indem du <samp>STRG</samp> gedrückt hältst und klickst.',
|
||||||
));
|
'ACP_PORTAL_MENU_EXT_NEW_WINDOW'=> 'Öffne externe Verknüpfungen in einem neuen Fenster',
|
||||||
|
|
||||||
?>
|
// Errors
|
||||||
|
'NO_LINK_TITLE' => 'Du musst einen Titel für diesen Link angeben.',
|
||||||
|
'NO_LINK_URL' => 'Du musst eine Link URL eingeben.',
|
||||||
|
));
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - News
|
* @package Board3 Portal v2.3 - News
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -56,8 +56,8 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_NEWS_LENGTH' => 'Maximal angezeigte Länge der Beiträge',
|
'PORTAL_NEWS_LENGTH' => 'Maximal angezeigte Länge der Beiträge',
|
||||||
'PORTAL_NEWS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_NEWS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
|
||||||
'PORTAL_NEWS_FORUM' => 'Beiträge Foren',
|
'PORTAL_NEWS_FORUM' => 'Beiträge Foren',
|
||||||
'PORTAL_NEWS_FORUM_EXP' => 'Die Foren, aus welchen die Beiträge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren aussschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren aussschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_NEWS_FORUM_EXP' => 'Die Foren, aus welchen die Beiträge angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_NEWS_EXCLUDE' => 'Foren aussschließen',
|
'PORTAL_NEWS_EXCLUDE' => 'Foren ausschließen',
|
||||||
'PORTAL_NEWS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Beiträge-Block ausschließen willst, und "Nein" wenn du nur die Beiträge aus den ausgewählten Foren im Aktuelle Beiträge-Block sehen willst.',
|
'PORTAL_NEWS_EXCLUDE_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Beiträge-Block ausschließen willst, und "Nein" wenn du nur die Beiträge aus den ausgewählten Foren im Aktuelle Beiträge-Block sehen willst.',
|
||||||
'PORTAL_NEWS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
'PORTAL_NEWS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
|
||||||
'PORTAL_NEWS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der aktuellen Beiträge',
|
'PORTAL_NEWS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der aktuellen Beiträge',
|
||||||
@@ -68,5 +68,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
'PORTAL_SHOW_REPLIES_VIEWS' => '"Antworten" und "Zugriffe" in Extraspalten',
|
||||||
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
'PORTAL_SHOW_REPLIES_VIEWS_EXP' => 'Einstellung für den kompakter Bekanntmachungen-Block-Stil.<br />Wenn aktiviert, wird die Anzahl der Antworten und Zugriffe in gesonderten Spalten angezeigt. Wenn deaktiviert gibt es nur zwei Spalten und die Antworten und Zugriffe werden neben "Forum" angezeigt. Bei Darstellungsproblemen mit z.B. schmalen Styles bitte deaktivieren.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Poll
|
* @package Board3 Portal v2.3 - Poll
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ $lang = array_merge($lang, array(
|
|||||||
'ACP_PORTAL_POLLS_SETTINGS' => 'Einstellungen für Umfragen',
|
'ACP_PORTAL_POLLS_SETTINGS' => 'Einstellungen für Umfragen',
|
||||||
'ACP_PORTAL_POLLS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für Umfragen ändern.',
|
'ACP_PORTAL_POLLS_SETTINGS_EXP' => 'Hier kannst du die Einstellungen für Umfragen ändern.',
|
||||||
'PORTAL_POLL_TOPIC_ID' => 'Umfragen Foren',
|
'PORTAL_POLL_TOPIC_ID' => 'Umfragen Foren',
|
||||||
'PORTAL_POLL_TOPIC_ID_EXP' => 'Die Foren, aus welchen die Umfragen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren aussschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren aussschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_POLL_TOPIC_ID_EXP' => 'Die Foren, aus welchen die Umfragen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_POLL_EXCLUDE_ID' => 'Foren ausschließen',
|
'PORTAL_POLL_EXCLUDE_ID' => 'Foren ausschließen',
|
||||||
'PORTAL_POLL_EXCLUDE_ID_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Umfragen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Umfragen-Block sehen willst.',
|
'PORTAL_POLL_EXCLUDE_ID_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Umfragen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Umfragen-Block sehen willst.',
|
||||||
'PORTAL_POLL_LIMIT' => 'Maximale Anzahl der Umfragen',
|
'PORTAL_POLL_LIMIT' => 'Maximale Anzahl der Umfragen',
|
||||||
@@ -51,5 +51,3 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_POLL_ALLOW_VOTE_EXP' => 'Verfügt der Benutzer über entsprechende Berechtigungen, kann er direkt auf der Portal-Seite abstimmen.',
|
'PORTAL_POLL_ALLOW_VOTE_EXP' => 'Verfügt der Benutzer über entsprechende Berechtigungen, kann er direkt auf der Portal-Seite abstimmen.',
|
||||||
'PORTAL_POLL_HIDE' => 'Abgelaufene Umfragen verbergen?',
|
'PORTAL_POLL_HIDE' => 'Abgelaufene Umfragen verbergen?',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Random Member
|
* @package Board3 Portal v2.3 - Random Member
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -39,5 +39,3 @@ $lang = array_merge($lang, array(
|
|||||||
'RND_FROM' => 'Wohnort',
|
'RND_FROM' => 'Wohnort',
|
||||||
'RND_WWW' => 'Webseite',
|
'RND_WWW' => 'Webseite',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Recent Module
|
* @package Board3 Portal v2.3 - Recent Module
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -45,9 +45,7 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_RECENT_TITLE_LIMIT' => 'Maximal angezeigte Länge der neuesten Themen',
|
'PORTAL_RECENT_TITLE_LIMIT' => 'Maximal angezeigte Länge der neuesten Themen',
|
||||||
'PORTAL_RECENT_TITLE_LIMIT_EXP' => '0 bedeutet unbegrenzt',
|
'PORTAL_RECENT_TITLE_LIMIT_EXP' => '0 bedeutet unbegrenzt',
|
||||||
'PORTAL_RECENT_FORUM' => 'Themen Foren',
|
'PORTAL_RECENT_FORUM' => 'Themen Foren',
|
||||||
'PORTAL_RECENT_FORUM_EXP' => 'Die Foren, aus welchen die Themen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren aussschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren aussschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
'PORTAL_RECENT_FORUM_EXP' => 'Die Foren, aus welchen die Themen angezeigt werden sollen. Frei lassen, um aus allen Foren anzeigen zu lassen. Falls "Foren ausschließen" auf "Ja" steht, wähle die Foren die du ausschließen willst.<br />Falls "Foren ausschließen" auf "Nein" steht, wähle die Foren die du sehen willst.<br />Wähle mehrere Foren aus/ab, indem du beim Klicken die <samp>Strg</samp>-Taste drückst.',
|
||||||
'PORTAL_EXCLUDE_FORUM' => 'Foren aussschließen',
|
'PORTAL_EXCLUDE_FORUM' => 'Foren ausschließen',
|
||||||
'PORTAL_EXCLUDE_FORUM_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Themen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Aktuelle Themen-Block sehen willst.',
|
'PORTAL_EXCLUDE_FORUM_EXP' => 'Wähle "Ja" wenn du die ausgewählten Foren vom Aktuelle Themen-Block ausschließen willst, und "Nein" wenn du nur die Themen aus den ausgewählten Foren im Aktuelle Themen-Block sehen willst.',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Search
|
* @package Board3 Portal v2.3 - Search
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -38,7 +38,5 @@ $lang = array_merge($lang, array(
|
|||||||
'PORTAL_SEARCH_POSTS' => 'Beiträge',
|
'PORTAL_SEARCH_POSTS' => 'Beiträge',
|
||||||
'PORTAL_SEARCH_AUTHOR' => 'Autor',
|
'PORTAL_SEARCH_AUTHOR' => 'Autor',
|
||||||
'PORTAL_SEARCH_ENGINE' => 'Suchmaschinen',
|
'PORTAL_SEARCH_ENGINE' => 'Suchmaschinen',
|
||||||
'PORTAL_SEARCH_ADV' => 'erweiterte Suche',
|
'PORTAL_SEARCH_ADV' => 'Erweiterte Suche',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Statistics
|
* @package Board3 Portal v2.3 - Statistics
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -49,5 +49,3 @@ $lang = array_merge($lang, array(
|
|||||||
'POSTS_PER_TOPIC_OTHER' => 'Beiträge pro Thema: <strong>%d</strong>',
|
'POSTS_PER_TOPIC_OTHER' => 'Beiträge pro Thema: <strong>%d</strong>',
|
||||||
'POSTS_PER_TOPIC_ZERO' => 'Beiträge pro Thema: <strong>0</strong>',
|
'POSTS_PER_TOPIC_ZERO' => 'Beiträge pro Thema: <strong>0</strong>',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @package Board3 Portal v2 - Stylechanger
|
* @package Board3 Portal v2.3 - Stylechanger
|
||||||
* @copyright (c) Board3 Group ( www.board3.de )
|
* @copyright (c) 2023 Board3 Group ( www.board3.de )
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
* @license GNU General Public License, version 2 (GPL-2.0-only)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -35,5 +35,3 @@ $lang = array_merge($lang, array(
|
|||||||
'BOARD_STYLE' => 'Mein Board-Style',
|
'BOARD_STYLE' => 'Mein Board-Style',
|
||||||
'STYLE_CHOOSE' => 'Wähle einen Style',
|
'STYLE_CHOOSE' => 'Wähle einen Style',
|
||||||
));
|
));
|
||||||
|
|
||||||
?>
|
|
||||||