465 Commits

Author SHA1 Message Date
Marc Alexander
4996846126 Remove not needed file and update composer files 2023-03-19 09:58:15 +01:00
Marc Alexander
b5e680ef0f Move portal_weather.png to styles/all folder 2023-03-15 17:26:22 +01:00
Marc Alexander
140ac8761d Improve handling and language vars for module images 2023-03-15 17:16:47 +01:00
Marc Alexander
b634c3cad8 Fix display of list markers in side modules 2023-03-01 20:44:19 +01:00
Marc Alexander
dadf57fd55 Extend explanation of module reset and link to recommended fa icons 2023-02-28 21:07:10 +01:00
Marc Alexander
eaa878645b Link to wiki in readme 2023-02-28 21:01:22 +01:00
Marc Alexander
b76bdcab13 Change icons to use for modules 2023-02-28 20:54:14 +01:00
Marc Alexander
2d7eeae515 Add ext.php for enable check and bp icon 2023-02-28 20:52:35 +01:00
Marc Alexander
9a89bf3a1b Remove note about additional icons in custom styles 2023-02-28 20:52:04 +01:00
Marc Alexander
1b4006b9a3 Clean up whitespace 2023-02-28 20:51:47 +01:00
Marc Alexander
1c88afc176 Clean up language files 2023-02-20 21:13:10 +01:00
Marc Alexander
6854ff7407 Update build.xml to exlude not wanted directories/files 2023-02-20 21:07:29 +01:00
Marc Alexander
e0c9908a2b Update README 2023-02-20 21:04:53 +01:00
Marc Alexander
9ccf4b81e9 Improve module icons and update language for icons 2023-02-20 20:51:58 +01:00
Marc Alexander
ecc95254f1 Fix shifting of clock bottom parts during animation 2023-02-19 11:05:32 +01:00
Marc Alexander
812dfa0298 Add Kirk to list of developers and update fields 2023-02-14 20:53:20 +01:00
Marc Alexander
3002126d44 Add missing b3p-icon classes to html files 2023-02-14 20:49:16 +01:00
Marc Alexander
68cf9864c6 Add support for module icons in center column 2023-02-13 20:49:53 +01:00
Marc Alexander
286bd55424 Some more cleanup and add PHP 8.2 support 2023-02-13 20:39:50 +01:00
Marc Alexander
552ceb2e49 Tweak stylesheet settings and usee newer media syntax 2023-02-13 20:35:43 +01:00
Marc Alexander
807e06f8a6 Use twig syntax in modules html files 2023-02-13 20:34:16 +01:00
Marc Alexander
46a9e89db2 Update modules code with small fixes and improvements 2023-02-13 20:24:54 +01:00
Marc Alexander
ccd7e27410 Update language files, add de_x_sie, and clean up files 2023-02-13 20:15:34 +01:00
Marc Alexander
e34de96b5d Add include to random member module 2023-02-13 19:53:33 +01:00
Marc Alexander
2069837ffc Change ACP to use twig syntax 2023-02-13 19:43:31 +01:00
Marc Alexander
44358e503a Resolve warnings in PHPUnit tests due to deprecation 2023-02-13 17:11:32 +01:00
Marc Alexander
446b76dbbb Add missing data to users fixture 2023-02-08 20:20:27 +01:00
Marc Alexander
e7419198dd Ensure that global user is set in birthday list test 2023-02-07 21:35:04 +01:00
Marc Alexander
46e7d5c334 Change block_config and portal_config to twig style & update copyright 2023-02-07 21:00:56 +01:00
Marc Alexander
791fc8920b Change events to use twig syntax & be compatible with phpBB 3.3.9+ 2023-02-07 20:57:49 +01:00
Marc Alexander
6711688b73 Update composer dependencies, supported versions, and version check 2023-02-07 20:55:21 +01:00
Marc Alexander
9d9e0960c5 Start using Ubuntu 20.04 runners 2023-02-07 20:39:58 +01:00
Marc Alexander
68b243f4ff Update copyright blocks 2023-02-07 20:36:48 +01:00
Marc Alexander
0643475b20 Merge pull request #717 from marc1706/ticket/701
Add fontawesome support
2021-09-05 14:23:21 +02:00
Marc Alexander
71c66c4cdd [ticket/701] Add missing variables for fontawesome with portal on all pages
B3P-701
2021-09-05 10:16:10 +02:00
Marc Alexander
61f943a895 Merge pull request #719 from marc1706/ticket/718
[ticket/718] Use 3.3.x in phing builds
2021-09-04 18:07:07 +02:00
Marc Alexander
d2fba40472 [ticket/718] Use 3.3.x in phing builds
B3P-718
2021-09-04 17:39:57 +02:00
Marc Alexander
38ad62d4b7 [ticket/701] Some more clean up
B3P-701
2021-09-04 17:32:43 +02:00
Marc Alexander
5f77867c36 [ticket/701] Remove non-default style
B3P-701
2021-09-04 17:24:40 +02:00
Marc Alexander
2044fc8e72 [ticket/701] Update migrations file
B3P-701
2021-09-04 17:24:16 +02:00
Marc Alexander
8fdc620197 [ticket/701] Rename migrations file to v230_fa.php
B3P-701
2021-09-04 17:21:34 +02:00
Marc Alexander
38a8b4410f [ticket/701] Replace spaces with tabs
B3P-701
2021-09-04 17:15:35 +02:00
Marc Alexander
9f374290ad [ticket/701] Fix tests and move declarations to services file
B3P-701
2021-09-04 17:15:12 +02:00
Marc Alexander
bca0afa86d [ticket/701] Replaces spaces with tabs
B3P-701
2021-09-04 16:27:41 +02:00
MarkusWME
d0a74065c0 Add Font Awesome functionality 2021-09-04 12:17:53 +02:00
MarkusWME
158e3e6954 Update styles 2021-09-04 12:17:34 +02:00
MarkusWME
478766994b Add Mobbern3.1 support 2021-09-04 12:17:33 +02:00
Marc Alexander
46da9a8b47 Merge pull request #716 from marc1706/ticket/715
[ticket/715] Resolv build issues with GitHub Actions
2021-09-04 11:52:29 +02:00
Marc Alexander
6306d6a18b [ticket/715] Make expected error type depend on PHP version
B3P-715
2021-09-04 11:27:09 +02:00
Marc Alexander
ed54e3ef0c [ticket/715] Resolve issues with portal and tests on PHP 8.0
B3P-715
2021-09-04 11:09:52 +02:00
Marc Alexander
9eb415b79c [ticket/715] Remove epv from composer dependencies
B3P-715
2021-08-29 11:18:42 +02:00
Marc Alexander
d02e6c36c1 [ticket/715] Stop executable check and remove travis files
B3P-715
2021-08-29 11:10:55 +02:00
Marc Alexander
11326bce1a [ticket/715] Fix code sniffer and mssql complaints
B3P-715
2021-08-29 11:07:11 +02:00
Marc Alexander
d24316d809 [ticket/715] Resolve some more test issues
B3P-715
2021-08-29 09:39:57 +02:00
Marc Alexander
d8bb1c64a4 [ticket/715] Resolve code sniffer complaints
B3P-715
2021-08-28 08:36:22 +02:00
Marc Alexander
2c89b28a53 [ticket/715] Create composer.json on platform PHP 7.1
B3P-715
2021-08-28 08:29:40 +02:00
Marc Alexander
99ad0f4f16 [ticket/715] Update composer to 1.10.22
B3P-715
2021-08-28 08:29:01 +02:00
Marc Alexander
ec021a72ca Merge pull request #693 from marc1706/ticket/690
[ticket/690] Apply Kirk's changes and fix pagination
2021-08-27 22:37:30 +02:00
Marc Alexander
5f838e48a1 [ticket/690] Fix issues with composer.json entries
B3P-690
2021-08-27 22:35:57 +02:00
Marc Alexander
e31522f310 [ticket/690] Add github actions workflows file
B3P-690
2021-08-27 22:35:50 +02:00
Marc Alexander
abf8a7bfcf [ticket/690] Make tests compatible with latest version of phpunit & phpBB
B3P-690
2021-08-27 22:35:42 +02:00
Marc Alexander
7ee3bd1727 [ticket/690] Adjust setUp() declaration and classes
B3P-690
2021-08-27 22:35:34 +02:00
Marc Alexander
5b62c517e5 [ticket/690] Update text shortener and other dependencies
B3P-690
2021-08-27 22:35:19 +02:00
Marc Alexander
ea527c580c [ticket/690] Add Kirk's changes from 3.3.x version
B3P-690
2021-08-27 21:20:47 +02:00
Marc Alexander
12acc2191d [master] Fix tests with missing global 2017-11-05 11:38:10 +01:00
Marc Alexander
c1227a9f2e Merge branch '2.1.x' 2017-11-05 11:22:39 +01:00
Marc Alexander
fa97aac0ab [2.1.x] Fix double semi-colon 2017-11-05 11:22:17 +01:00
Marc Alexander
cc21416254 Merge branch '2.1.x' 2017-11-05 11:21:49 +01:00
Marc Alexander
772b6449c0 Merge pull request #707 from marc1706/ticket/704
[ticket/704] Checkout 3.1.x in build.xml
2017-11-04 16:48:02 +01:00
Marc Alexander
d2a1655832 [ticket/704] Checkout 3.1.x in build.xml
B3P-704
2017-11-04 16:46:21 +01:00
Marc Alexander
b1f14fd670 Merge pull request #706 from marc1706/ticket/704
[ticket/704] Fix call to phploc.phar
2017-11-04 16:25:17 +01:00
Marc Alexander
0bbaba2c3e [ticket/704] Fix call to phploc.phar
B3P-704
2017-11-04 16:24:21 +01:00
Marc Alexander
3f98302449 Merge pull request #705 from marc1706/ticket/704
[ticket/704] Update .travis.yml for travis changes
2017-11-04 16:09:28 +01:00
Marc Alexander
5857effadd [ticket/704] Add missing phpbb_dispatcher definition for tests
B3P-704
2017-11-04 15:56:05 +01:00
Marc Alexander
52b1880593 [ticket/704] Update .travis.yml for travis changes
B3P-704
2017-11-04 15:45:54 +01:00
Marc Alexander
049a499843 Merge pull request #687 from marc1706/ticket/686
[ticket/686] Add possibility to use UI tests
2017-11-04 15:12:35 +01:00
Marc Alexander
d9e64e978c Merge pull request #699 from marc1706/ticket/696
[ticket/696] Update text shortener to latest version
2017-03-25 22:02:36 +01:00
Marc Alexander
bf54579ffa [ticket/696] Update text shortener to latest version
B3P-696
2017-03-25 14:52:47 +01:00
Marc Alexander
e6bfe744d8 Merge pull request #695 from saint-hh/master
Poll icon in all edited topics (news, announcements blocks) with phpBB 3.2
2017-01-30 08:22:48 +01:00
saint-hh
593b11f7a5 Fixing lists / missing bullet points
http://www.board3.de/viewtopic.php?p=37226#p37226
2017-01-29 22:21:09 +01:00
Marc Alexander
93ea98f744 Revert changes to use old text shortener
The old text shortener is not compatible with phpBB 3.2.
2017-01-29 16:55:49 +01:00
saint-hh
af78256355 Style changes phpBB 3.2 2017-01-29 12:50:54 +01:00
saint-hh
b73b968d37 Style changes phpBB 3.2 2017-01-29 12:48:53 +01:00
saint-hh
998fd77ee4 Style changes phpBB 3.2 cleanup 2017-01-29 12:45:20 +01:00
saint-hh
373b21121b Style changes for phpBB 3.2 2017-01-28 19:30:12 +01:00
saint-hh
6cae1e4b75 Style changes - pagination buttons 2017-01-28 19:25:41 +01:00
saint-hh
b9a0ef7cdb Add files via upload 2017-01-26 22:21:26 +01:00
Marc Alexander
3853fde6ed Merge pull request #692 from marc1706/ticket/690
[ticket/690] Change .yml files to use single quotes for arguments
2017-01-15 12:54:44 +01:00
Marc Alexander
719d0e9cfb [ticket/690] Use utf8 encoding in language files
B3P-690
2017-01-15 12:22:07 +01:00
Marc Alexander
7929bc4da4 [ticket/690] Replace windows with unix line endings
B3P-690
2017-01-15 12:15:54 +01:00
Marc Alexander
e6a4c8758a [ticket/690] Checkout 3.2.x in master & fix .yml syntax for symfony
B3P-690
2017-01-15 12:12:56 +01:00
Marc Alexander
070d25ca4b Merge pull request #691 from marc1706/ticket/690
[ticket/690] Update test for phpBB 3.2.0 and PHP 7.1 compatibility
2017-01-14 08:25:45 +01:00
Marc Alexander
5bbbf25fe8 Make sure variables are casted to numeric values 2017-01-14 08:09:24 +01:00
Marc Alexander
391cffae02 Fix invalid includes 2017-01-13 23:27:22 +01:00
Marc Alexander
2d41386fd0 Remove 3.1 text shortener 2017-01-13 23:16:51 +01:00
Marc Alexander
301e7a1b1c [ticket/690] Add PHP 7.1 to test environments
B3P-690
2017-01-08 22:33:50 +01:00
Marc Alexander
49a001f527 [ticket/690] Run tests against phpBB 3.2.x branch
B3P-690
2017-01-08 22:33:16 +01:00
Marc Alexander
7f36382cc6 [ticket/690] Update test for phpBB 3.2.0 and PHP 7.1 compatibility
B3P-690
2017-01-08 22:09:21 +01:00
Marc Alexander
acea787547 [ticket/686] Add possibility to use UI tests
B3P-686
2016-07-31 20:12:18 +02:00
Marc Alexander
8101fd3ede Merge pull request #681 from marc1706/ticket/678
[ticket/678] Fix typo in German language file
2016-04-23 22:56:12 +02:00
Marc Alexander
2ef617da09 Merge pull request #680 from marc1706/ticket/679
[ticket/679] Add horizontal line to poll module
2016-04-23 22:04:57 +02:00
Marc Alexander
33d41ac99d [ticket/678] Fix typo in German language file
B3P-678
2016-04-23 21:46:24 +02:00
Marc Alexander
5bab8a5fc3 [ticket/679] Add horizontal line to poll module
B3P-679
2016-04-23 21:44:59 +02:00
Marc Alexander
2b6c85e2cf Merge branch 'ticket/676' 2016-04-23 15:39:37 +02:00
Marc Alexander
122d79dc80 [ticket/676] Create directory instead of using touch
B3P-676
2016-04-23 15:38:51 +02:00
Marc Alexander
fc8db41bf8 [ticket/676] Make sure test cache dir exists and is writable
B3P-676
2016-04-23 15:12:18 +02:00
Marc Alexander
708873506b Merge pull request #677 from marc1706/ticket/676
[ticket/676] Set cache permissions recursively
2016-04-23 13:34:13 +02:00
Marc Alexander
54754f1d9d [ticket/676] Set cache permissions recursively
[ci skip]

B3P-676
2016-04-23 13:33:01 +02:00
Marc Alexander
94180f0e2d Merge pull request #675 from marc1706/ticket/674
[ticket/674] Define textformatter factory correctly
2016-04-23 13:15:40 +02:00
Marc Alexander
daf730ab12 [ticket/674] Define textformatter factory correctly
B3P-674
2016-04-23 12:58:55 +02:00
Marc Alexander
2a5ae2d485 Merge branch '2.1.x' 2016-04-23 12:37:55 +02:00
Marc Alexander
72f7894bf9 Merge pull request #672 from marc1706/ticket/656
[ticket/656] Reduce margin of topiclist in responsive portal all
2016-04-23 11:24:13 +02:00
Marc Alexander
84359510c5 [ticket/656] Reduce margin of topiclist in responsive portal all
B3P-656
2016-04-23 11:05:08 +02:00
Marc Alexander
2338089b51 Merge pull request #668 from alhitary/2.1.x
Arabic Translation Board3-Portal
2016-02-13 09:41:16 +01:00
Marc Alexander
a0bc7dabe4 Merge branch '2.1.x' 2016-01-07 12:25:01 +01:00
Marc Alexander
d173fbaff7 Merge pull request #671 from marc1706/ticket/669-master
[ticket/669] Purge cache if necessary in functional tests
2016-01-07 12:25:01 +01:00
Marc Alexander
ccf901dfbf Merge pull request #670 from marc1706/ticket/669
[ticket/669] Purge cache if necessary in functional tests
2016-01-07 12:24:56 +01:00
Marc Alexander
306101fee9 Merge branch 'ticket/669' into ticket/669-master
Conflicts:
	tests/functional/portal_announcement_test.php
2016-01-07 11:54:34 +01:00
Marc Alexander
0cc4deb495 [ticket/669] Purge cache if necessary in functional tests
B3P-669
2016-01-07 11:52:19 +01:00
Basil Taha Alhitary
b018d51c11 Update info_acp_portal.php 2015-12-29 22:12:15 +03:00
Basil Taha Alhitary
e2ddf73757 Update permissions_portal.php 2015-12-29 22:10:36 +03:00
Basil Taha Alhitary
6284f76c43 Create permissions_portal.php 2015-12-29 22:07:03 +03:00
Basil Taha Alhitary
3540961812 Create portal_poll_module.php 2015-12-29 21:59:11 +03:00
Basil Taha Alhitary
9c19cd17b3 Create portal_whois_online_module.php 2015-12-29 21:36:56 +03:00
Basil Taha Alhitary
d9d00c0652 Create portal_welcome_module.php 2015-12-29 21:36:36 +03:00
Basil Taha Alhitary
8589f28536 Create portal_user_menu_module.php 2015-12-29 21:36:18 +03:00
Basil Taha Alhitary
d49d2b2d96 Create portal_topposters_module.php 2015-12-29 21:35:53 +03:00
Basil Taha Alhitary
6b7b261461 Create portal_stylechanger_module.php 2015-12-29 21:35:29 +03:00
Basil Taha Alhitary
b19cb5accb Create portal_statistics_module.php 2015-12-29 21:33:15 +03:00
Basil Taha Alhitary
f1f228358f Create portal_search_module.php 2015-12-29 21:32:56 +03:00
Basil Taha Alhitary
fa503fc5ad Create portal_recent_module.php 2015-12-29 21:32:34 +03:00
Basil Taha Alhitary
3e2231a8e7 Create portal_random_member_module.php 2015-12-29 21:32:07 +03:00
Basil Taha Alhitary
ec8782b3b5 Create portal_news_module.php 2015-12-29 21:31:32 +03:00
Basil Taha Alhitary
f35af8fe0c Create portal_main_menu_module.php 2015-12-29 21:31:06 +03:00
Basil Taha Alhitary
6207e24081 Create portal_links_module.php 2015-12-29 21:30:40 +03:00
Basil Taha Alhitary
fd5fb1ab33 Create portal_link_us_module.php 2015-12-29 21:30:15 +03:00
Basil Taha Alhitary
f969e375bc Create portal_leaders_module.php 2015-12-29 21:29:55 +03:00
Basil Taha Alhitary
f6f376a23c Create portal_latest_members_module.php 2015-12-29 21:29:28 +03:00
Basil Taha Alhitary
80d4353e43 Create portal_latest_bots_module.php 2015-12-29 21:28:01 +03:00
Basil Taha Alhitary
74f2860521 Create portal_friends_module.php 2015-12-29 21:27:41 +03:00
Basil Taha Alhitary
a21358748b Create portal_forumlist_module.php 2015-12-29 21:27:22 +03:00
Basil Taha Alhitary
716ab2cb95 Create portal_donation_module.php 2015-12-29 21:26:58 +03:00
Basil Taha Alhitary
8450b49306 Create portal_custom_module.php 2015-12-29 21:26:32 +03:00
Basil Taha Alhitary
dc6df43e8f Create portal_clock_module.php 2015-12-29 19:56:19 +03:00
Basil Taha Alhitary
3cf8cf24f7 Create portal_calendar_module.php 2015-12-29 19:56:02 +03:00
Basil Taha Alhitary
d1647a1cb7 Create portal_birthday_list_module.php 2015-12-29 19:55:38 +03:00
Basil Taha Alhitary
674dad9aa9 Create portal_attachments_module.php 2015-12-29 19:55:03 +03:00
Basil Taha Alhitary
abff50d9b6 Create portal_announcements_module.php 2015-12-29 19:53:44 +03:00
Basil Taha Alhitary
2838b58151 Create portal_acp.php 2015-12-29 19:46:26 +03:00
Basil Taha Alhitary
9e4b3143df Create portal.php 2015-12-29 19:45:08 +03:00
Basil Taha Alhitary
5aaa3a8297 Create info_acp_portal.php 2015-12-29 19:44:45 +03:00
Marc Alexander
2b781defac Merge branch '2.1.x' 2015-12-10 12:55:11 +01:00
Marc Alexander
7d4b3c52cd Merge pull request #667 from marc1706/ticket/666
[ticket/666] Reduce caching time of post related queries
2015-12-10 12:53:45 +01:00
Marc Alexander
278765ed30 [ticket/666] Reduce caching time of post related queries
B3P-666
2015-12-10 10:37:04 +01:00
Marc Alexander
c0895aa638 Merge pull request #663 from marc1706/ticket/661
[ticket/661] Remove PHP7 from allowed failures
2015-11-11 11:50:29 +01:00
Marc Alexander
0ac73f5b0e [ticket/661] Remove PHP7 from allowed failures
B3P-661
2015-11-11 10:18:02 +01:00
Marc Alexander
0c22c79045 Merge pull request #659 from marc1706/ticket/658
[ticket/658] Remove subsilver2 from master branch
2015-11-11 10:16:19 +01:00
Marc Alexander
1df94beaf4 Merge pull request #662 from marc1706/ticket/660
[ticket/660] Update tests for recent changes in 3.2.x
2015-11-11 10:08:21 +01:00
Marc Alexander
6ac3c6caf3 [ticket/660] Correctly pass $NOTESTS to ext-sniff and icc check
B3P-660
2015-11-11 09:48:06 +01:00
Marc Alexander
bdd52ad3c0 [ticket/660] Fix tests after recent changes to phpBB
B3P-660
2015-11-11 09:36:56 +01:00
Marc Alexander
1641e1fdc5 [ticket/660] Update .travis.yml
B3P-660
2015-11-11 09:21:48 +01:00
Marc Alexander
1a2f4d9931 [ticket/658] Remove subsilver2 from master branch
B3P-658
2015-11-11 08:58:19 +01:00
Marc Alexander
8388533630 Merge branch '2.1.x' 2015-11-11 08:55:08 +01:00
Marc Alexander
a152da8dbd Merge pull request #655 from Galixte/patch-1
Minor update of FRENCH language for Board3 Portal extension
2015-10-16 15:09:46 +02:00
Raphaël M.
096b2bb292 Minor update of FRENCH language for Board3 Portal extension 2015-09-20 02:55:42 +02:00
Marc Alexander
6b179d204b Merge pull request #653 from marc1706/ticket/652
[ticket/652] Fix test failures caused by latest changes to phpBB's master
2015-09-14 18:38:12 +02:00
Marc Alexander
e4e5141978 [ticket/652] Fix test failures caused by latest changes to phpBB's master
B3P-652
2015-09-14 17:53:08 +02:00
Marc Alexander
2799ba6762 Merge branch '2.1.x' 2015-09-14 13:13:55 +02:00
Marc Alexander
b93ebc781e Merge pull request #651 from marc1706/ticket/648
[ticket/648] Add missing brackets to donations HTML files
2015-09-14 13:12:43 +02:00
Marc Alexander
d7f6d265fa [ticket/648] Add missing brackets to donations HTML files
B3P-648
2015-09-14 12:57:23 +02:00
Marc Alexander
74267a0f9d Merge pull request #650 from marc1706/ticket/649
[ticket/649] Use phpbb_get_user_rank() instead of deprecated function
2015-09-13 23:37:25 +02:00
Marc Alexander
bf8d10d3fe [ticket/649] Include correct language file for acp tests
B3P-649
2015-09-13 23:22:15 +02:00
Marc Alexander
8f99c070a8 [ticket/649] Fix test for getSubscribedEvents()
B3P-649
2015-09-13 23:12:27 +02:00
Marc Alexander
94b93c34e6 [ticket/649] Use correct event name and make method public
B3P-649
2015-09-13 23:07:01 +02:00
Marc Alexander
12781a6fc8 [ticket/649] Properly load language for permission settings in ACP
B3P-649
2015-09-13 23:03:10 +02:00
Marc Alexander
0845725ded [ticket/649] Use phpbb_get_user_rank() instead of deprecated function
B3P-649
2015-09-13 18:18:48 +02:00
Marc Alexander
2e947cd66f Merge branch '2.1.x' 2015-08-04 15:28:30 +02:00
Marc Alexander
6971392003 Merge pull request #647 from marc1706/ticket/644
[ticket/644] Reduce caching time on portal page
2015-08-04 15:05:56 +02:00
Marc Alexander
71e51ee730 [ticket/644] Update release date in composer.json
B3P-644
2015-08-04 14:49:22 +02:00
Marc Alexander
a991cb1359 [ticket/644] Reduce caching time on portal page
B3P-644
2015-08-04 14:48:31 +02:00
Marc Alexander
f3dd0c37c1 Merge pull request #643 from Mauron/patch-1
Italian translation update for portal_acp.php
2015-07-23 12:07:42 +02:00
Mauron
0989a7a058 Italian translation update for portal_acp.php
Some lines have been added; moreover, the ' character has been replaced by ’.
2015-07-23 11:25:25 +02:00
Marc Alexander
0e80fb3930 Merge branch '2.1.x' 2015-07-22 15:26:25 +02:00
Marc Alexander
2535ca5ebe Merge pull request #642 from marc1706/ticket/641
[ticket/641] Correctly align portal columns with css
2015-07-22 15:22:37 +02:00
Marc Alexander
8e4380a170 [ticket/641] Use correct aria roles for elements
B3P-641
2015-07-22 14:51:29 +02:00
Marc Alexander
3509044e03 [ticket/641] Correctly align portal columns in RTL languages
B3P-641
2015-07-21 14:48:32 +02:00
Marc Alexander
c61971e7eb [ticket/641] Use CSS for aligning portal columns
B3P-641
2015-07-21 14:48:07 +02:00
Marc Alexander
a1748116f6 Merge pull request #640 from marc1706/ticket/639
[ticket/639] Fix slightly incorrect alignment in portal all view
2015-06-28 19:48:27 +02:00
Marc Alexander
1bb9381027 [ticket/639] Fix slightly incorrect alignment in portal all view
B3P-639
2015-06-28 19:30:26 +02:00
Marc Alexander
7e335a660b [master] Fix tests for master branch 2015-06-24 17:09:25 +02:00
Marc Alexander
0761948012 Merge branch '2.1.x'
Conflicts:
	tests/unit/event/listener_test.php
2015-06-24 16:10:22 +02:00
Marc Alexander
281aa4fcc7 Merge pull request #637 from marc1706/ticket/634
[ticket/634] Move get_sub_taged_string to fetch_posts
2015-06-23 19:53:28 +02:00
Marc Alexander
f82794df11 [ticket/634] Add tests for birthday_list and improve modules_helper_test
B3P-634
2015-06-23 17:56:54 +02:00
Marc Alexander
c3297982f7 [ticket/634] Remove unused sql_table_exists() function
B3P-634
2015-06-23 16:32:55 +02:00
Marc Alexander
668040b48e [ticket/634] Move get_sub_taged_string to fetch_posts
B3P-634
2015-06-23 16:02:08 +02:00
Marc Alexander
060319d2ea Merge pull request #636 from marc1706/ticket/634
[ticket/634] Increase test coverage
2015-06-23 12:50:15 +02:00
Marc Alexander
1eb4dc0e8e [ticket/634] Assert that events row is empty
B3P-634
2015-06-23 12:29:33 +02:00
Marc Alexander
66a5d95ed9 [ticket/634] Improve test coverage and fix coding issues
B3P-634
2015-06-23 12:15:38 +02:00
Marc Alexander
0cc4b4ea0a [ticket/634] Add tests for clock module and improve tests for calendar
B3P-634
2015-06-23 00:48:52 +02:00
Marc Alexander
2b65156d47 [ticket/634] Add more tests
B3P-634
2015-06-22 21:18:32 +02:00
Marc Alexander
1967e94f64 Merge pull request #635 from marc1706/ticket/634
[ticket/634] Increase code coverage
2015-06-22 18:16:04 +02:00
Marc Alexander
98aee57309 [ticket/634] Add tests for welcome module
B3P-634
2015-06-22 17:50:23 +02:00
Marc Alexander
b805ce2e5f [ticket/634] Increase test coverage of acp module
B3P-634
2015-06-22 16:59:14 +02:00
Marc Alexander
cba13d7a7d Merge pull request #633 from marc1706/ticket/632
[ticket/632] Use different test_config for 2.2.x builds [ci skip]
2015-06-22 12:07:22 +02:00
Marc Alexander
c549ea4f1d [ticket/632] Use different test_config for 2.2.x builds [ci skip]
B3P-632
2015-06-22 11:59:12 +02:00
Marc Alexander
c8a36b0c36 Merge branch '2.1.x' 2015-06-22 11:23:47 +02:00
Marc Alexander
0ea94ae9c8 Merge pull request #631 from marc1706/ticket/628
[ticket/628] Properly parse build number
2015-06-22 10:25:51 +02:00
Marc Alexander
5be701a09a [ticket/628] Properly parse build number
B3P-628
2015-06-22 10:25:21 +02:00
Marc Alexander
b3adcbe97d Merge pull request #630 from marc1706/ticket/628
[ticket/628] Correctly pass version.override [ci skip]
2015-06-21 23:44:00 +02:00
Marc Alexander
5e7cb9b63f [ticket/628] Correctly pass version.override [ci skip]
B3P-628
2015-06-21 23:43:12 +02:00
Marc Alexander
8755e12b53 Merge pull request #629 from marc1706/ticket/628
[ticket/628] Name portal builds based on git commit ID [ci skip]
2015-06-21 23:31:20 +02:00
Marc Alexander
863933cc56 [ticket/628] Name portal builds based on git commit ID [ci skip]
B3P-628
2015-06-21 23:30:47 +02:00
Marc Alexander
c3d71b992f Merge branch '2.1.x' 2015-06-21 23:01:45 +02:00
Marc Alexander
1714f1fb33 Merge pull request #627 from marc1706/ticket/626
[ticket/626] Correctly resize portal on all pages again
2015-06-21 21:45:54 +02:00
Marc Alexander
c0841d17b3 [ticket/626] Correctly resize portal on all pages again
B3P-626
2015-06-21 21:39:00 +02:00
Marc Alexander
7cf857fd93 Merge pull request #625 from marc1706/ticket/624
[ticket/624] Display modules on all pages if column disabled in portal
2015-06-21 21:37:01 +02:00
Marc Alexander
dc5638ef55 [ticket/624] Display modules on all pages if column disabled in portal
B3P-624
2015-06-21 20:31:03 +02:00
Marc Alexander
1ce0d2d535 Merge branch '2.1.x' 2015-06-21 13:26:04 +02:00
Marc Alexander
6a5c79787d Merge pull request #623 from marc1706/ticket/622
[ticket/622] Return css settings to initial prosilver values in portal_all
2015-06-21 12:32:57 +02:00
Marc Alexander
511f7571c2 Merge pull request #621 from marc1706/ticket/550
[ticket/550] Update module_auth upon update to 2.1.0
2015-06-21 12:15:51 +02:00
Marc Alexander
f26b019a44 [ticket/622] Further improve responsiveness of forumlist
B3P-622
2015-06-21 12:14:06 +02:00
Marc Alexander
d2012e1712 [ticket/622] Return css settings to initial prosilver values in portal_all
B3P-622
2015-06-21 12:06:35 +02:00
Marc Alexander
a9a4e9af63 [ticket/550] Update module_auth upon update to 2.1.0
B3P-550
2015-06-21 12:00:00 +02:00
Marc Alexander
ba64d8aef6 Merge branch '2.1.x' 2015-06-20 19:44:23 +02:00
Marc Alexander
fe1ebd8299 Merge pull request #620 from marc1706/ticket/619
[ticket/619] Fix wrong overflow in compact center blocks
2015-06-20 19:43:25 +02:00
Marc Alexander
a15acd0382 [ticket/619] Fix wrong overflow in compact center blocks
B3P-619
2015-06-20 19:42:11 +02:00
Marc Alexander
1007dac3cb Merge branch '2.1.x' 2015-06-20 15:05:19 +02:00
Marc Alexander
64facf06d0 Merge pull request #618 from marc1706/ticket/552
[ticket/552] Correctly create path to module images
2015-06-20 15:04:39 +02:00
Marc Alexander
83a2d7d816 [ticket/552] Correctly create path to module images
B3P-552
2015-06-20 14:42:00 +02:00
Marc Alexander
c76ba45e77 Merge pull request #617 from marc1706/ticket/616
[ticket/616] Update composer.json and composer.lock
2015-06-19 14:57:54 +02:00
Marc Alexander
4a1c82b140 [ticket/616] Update composer.json and composer.lock
B3P-616
2015-06-19 14:29:36 +02:00
Marc Alexander
46d22c53ea Merge pull request #615 from marc1706/ticket/614
[ticket/614] Select correct role ID for hidden forum
2015-06-19 14:10:14 +02:00
Marc Alexander
d819efc34b [ticket/614] Select correct role ID for hidden forum
B3P-614
2015-06-19 13:50:00 +02:00
Marc Alexander
805147a0f6 Merge branch '2.1.x' 2015-06-19 10:56:23 +02:00
Marc Alexander
7647af3673 Merge pull request #613 from marc1706/ticket/605
[ticket/605] Fix incorrect path to config [ci skip]
2015-06-19 10:55:42 +02:00
Marc Alexander
2140e03bd9 [ticket/605] Fix incorrect path to config [ci skip]
B3P-605
2015-06-19 10:55:03 +02:00
Marc Alexander
7814b373b4 Merge branch '2.1.x' 2015-06-19 10:50:11 +02:00
Marc Alexander
4183b631f3 Merge pull request #612 from marc1706/ticket/611
[ticket/611] Move paypal image to styles/all folder
2015-06-19 10:38:43 +02:00
Marc Alexander
77e03d27bd [ticket/611] Move paypal image to styles/all folder
B3P-611
2015-06-19 10:16:00 +02:00
Marc Alexander
01a44515ce Merge branch '2.1.x' 2015-06-16 21:01:32 +02:00
Marc Alexander
4697a1fbf5 Merge pull request #610 from marc1706/ticket/582
[ticket/582] Increase space for last post info [ci skip]

Conflicts:
	styles/prosilver/theme/portal.css
2015-06-16 21:01:07 +02:00
Marc Alexander
50dcce6c59 [ticket/582] Increase space for last post info [ci skip]
B3P-582
2015-06-16 20:58:26 +02:00
Marc Alexander
9fef51e3e9 Merge pull request #609 from marc1706/ticket/582
[ticket/582] Improve responsiveness for prosilver SE
2015-06-16 20:57:35 +02:00
Marc Alexander
add30ed905 [ticket/582] Increase space for last post info
B3P-582
2015-06-16 20:49:03 +02:00
Marc Alexander
a1a6220e47 [ticket/582] Remove redundant CSS
B3P-582
2015-06-16 20:34:35 +02:00
Marc Alexander
a140f8ecc1 [ticket/582] Improve responsiveness for prosilver SE
B3P-582
2015-06-16 20:32:58 +02:00
Marc Alexander
57f4a56727 Merge pull request #608 from marc1706/ticket/605
[ticket/605] Fix incorrect path to config [ci skip]
2015-06-16 17:18:03 +02:00
Marc Alexander
5a19a3d4db [ticket/605] Fix incorrect path to config [ci skip]
B3P-605
2015-06-16 17:16:52 +02:00
Marc Alexander
735e4f5297 Merge pull request #607 from marc1706/ticket/605
[ticket/605] Revert changes to chmod and change copy path [ci skip]
2015-06-16 17:00:55 +02:00
Marc Alexander
47cfa00f0e [ticket/605] Revert changes to chmod and change copy path [ci skip]
B3P-605
2015-06-16 16:59:53 +02:00
Marc Alexander
3821609831 Merge pull request #606 from marc1706/ticket/605
[ticket/605] Recursively chmod cache directory
2015-06-16 16:11:28 +02:00
Marc Alexander
2944dbf057 [ticket/605] Recursively chmod cache directory
B3P-605
2015-06-16 14:43:59 +02:00
Marc Alexander
e6fd931b39 Merge branch '2.1.x' 2015-06-16 10:48:50 +02:00
Marc Alexander
8a08e80368 Merge pull request #604 from marc1706/ticket/603
[ticket/603] Correctly exclude files from phploc report
2015-06-16 00:12:46 +02:00
Marc Alexander
3bf91b97f1 [ticket/603] Correctly exclude files from phploc report
B3P-603
2015-06-16 00:12:06 +02:00
Marc Alexander
d0d69befa4 Merge pull request #602 from marc1706/ticket/601
[ticket/601] Clone phpBB's master branch for master branch
2015-06-15 23:55:00 +02:00
Marc Alexander
be7b9e23d3 [ticket/601] Clone phpBB's master branch for master branch
B3P-601
2015-06-15 23:54:03 +02:00
Marc Alexander
72f6db8577 Merge branch '2.1.x' 2015-06-15 23:17:06 +02:00
Marc Alexander
ba921a8eae Merge pull request #600 from marc1706/ticket/597
[ticket/597] Update composer.lock [ci skip]
2015-06-15 23:16:12 +02:00
Marc Alexander
d72f1c0788 [ticket/597] Update composer.lock [ci skip]
B3P-597
2015-06-15 23:15:32 +02:00
Marc Alexander
36ef4dff01 Merge pull request #598 from marc1706/ticket/597
[ticket/597] Update composer.lock and composer.phar
2015-06-15 00:32:17 +02:00
Marc Alexander
b8981f54fa Merge pull request #599 from marc1706/ticket/583
[ticket/583] Correctly show clock in legacy browsers
2015-06-15 00:19:34 +02:00
Marc Alexander
b276309c2c [ticket/597] Update composer.lock and composer.phar
B3P-597
2015-06-15 00:03:58 +02:00
Marc Alexander
7af7268440 [ticket/583] Correctly show clock in legacy browsers
B3P-583
2015-06-14 23:39:20 +02:00
Marc Alexander
6f0dcb6699 Merge pull request #596 from marc1706/ticket/592
[ticket/592] Use proper relative path for phploc
2015-06-14 14:14:47 +02:00
Marc Alexander
51e88a7c56 [ticket/592] Use proper relative path for phploc
B3P-592
2015-06-14 14:14:06 +02:00
Marc Alexander
ea053a251d Merge pull request #595 from marc1706/ticket/592
[ticket/592] Do not run phploc on complete git repository
2015-06-14 14:12:16 +02:00
Marc Alexander
b8cbeb5b01 [ticket/592] Do not run phploc on complete git repository
B3P-592
2015-06-14 14:11:39 +02:00
Marc Alexander
b734d1f3fb Merge pull request #594 from marc1706/ticket/592
[ticket/592] Correctly check if already setup inside phpBB
2015-06-14 12:44:02 +02:00
Marc Alexander
d6c8538c13 [ticket/592] Correctly check if already setup inside phpBB
B3P-592
2015-06-14 12:43:08 +02:00
Marc Alexander
c47b7f5cef Merge pull request #593 from marc1706/ticket/592
[ticket/592] Run phploc on jenkins build
2015-06-14 12:34:25 +02:00
Marc Alexander
7f8d8ce50a [ticket/592] Run phploc on jenkins build
B3P-592
2015-06-14 12:33:25 +02:00
Marc Alexander
f64825e730 Merge branch '2.1.x'
Conflicts:
	tests/unit/functions/version_check_test.php
2015-06-13 18:20:43 +02:00
Marc Alexander
5aef24cb98 [ticket/584] Use correct repository for checkout
B3P-584
2015-06-13 18:19:15 +02:00
Marc Alexander
06da0228a6 Merge pull request #591 from marc1706/ticket/584
[ticket/584] Check for file instead of directory
2015-06-13 18:13:08 +02:00
Marc Alexander
252a91231f [ticket/584] Check for file instead of directory
B3P-584
2015-06-13 17:40:31 +02:00
Marc Alexander
9d1cbc0063 Merge pull request #590 from marc1706/ticket/584
[ticket/584] Make sure phpunit is available during build
2015-06-13 17:36:54 +02:00
Marc Alexander
ec68169445 [ticket/584] Make sure phpunit is available during build
B3P-584
2015-06-13 17:18:58 +02:00
Marc Alexander
2e067f8de5 Merge pull request #589 from marc1706/ticket/588
[ticket/588] Fix code sniffer issues in portal files [ci skip]
2015-06-13 16:19:47 +02:00
Marc Alexander
2c633fe567 [ticket/588] Fix code sniffer issues in portal files [ci skip]
B3P-588
2015-06-13 16:18:21 +02:00
Marc Alexander
adfdc0c817 Merge pull request #587 from marc1706/ticket/584
[ticket/584] Allow building with test environment on Jenkins
2015-06-13 15:35:15 +02:00
Marc Alexander
5e6c7ac4b6 [ticket/584] Properly set up whitelist filtering in phunit.xml.dist
B3P-584
2015-06-13 12:31:26 +02:00
Marc Alexander
81d08cbef1 [ticket/584] Create phpBB setup
B3P-584
2015-06-13 11:57:04 +02:00
Marc Alexander
053a31fef5 Merge pull request #586 from marc1706/ticket/585
[ticket/585] Use up-to-date images in README.md
2015-06-11 15:36:19 +02:00
Marc Alexander
4df5702eff [ticket/585] Use up-to-date images in README.md
B3P-585
2015-06-11 15:08:35 +02:00
Marc Alexander
2afa1c14c9 Merge pull request #580 from marc1706/ticket/577
[ticket/577] Use phpBB's extension version check instead of B3P version
2015-06-07 00:05:01 +02:00
Marc Alexander
2b05a550c5 [ticket/577] Fix tests
B3P-577
2015-06-06 23:46:05 +02:00
Marc Alexander
a927aae498 [ticket/577] Use phpBB's extension version check instead of B3P version
B3P-577
2015-06-06 23:38:17 +02:00
Marc Alexander
426af6f844 Merge pull request #579 from marc1706/ticket/578
[ticket/578] Correctly assign classes to elements upon deleting/moving modules
2015-06-06 23:03:20 +02:00
Marc Alexander
24c7950dcb [ticket/578] Correctly align right and left columns
This also fixes responsiveness in RTL languages.

B3P-578
2015-06-06 22:44:47 +02:00
Marc Alexander
b143c5f525 [ticket/578] Correctly align left column no matter what column enabled
B3P-578
2015-06-06 22:10:07 +02:00
Marc Alexander
215a29c0ac [ticket/578] Correctly assign classes upon moving modules up/down
B3P-578
2015-06-06 21:39:18 +02:00
Marc Alexander
e5319bfbe3 [ticket/578] Correctly assign classes to element upon deleting modules
B3P-578
2015-06-06 21:22:37 +02:00
Marc Alexander
4739c5317c Merge branch '2.1.x' 2015-06-06 18:17:19 +02:00
Marc Alexander
55d7991829 Merge pull request #576 from marc1706/ticket/575
[ticket/575] Remove border-radius from top and bottom modules
2015-06-06 18:01:02 +02:00
Marc Alexander
f92ef62843 Merge pull request #573 from marc1706/ticket/571
[ticket/571] Intval more variables and fix validation issues
2015-06-06 18:00:57 +02:00
Marc Alexander
a364f1f258 [ticket/575] Remove border-radius from top and bottom modules
B3P-575
2015-06-06 17:01:29 +02:00
Marc Alexander
0665dba08f [ticket/571] Fix incorrect cast to integer in database_handler
B3P-571
2015-06-06 16:52:37 +02:00
Marc Alexander
04d4cc50af Merge pull request #574 from marc1706/ticket/572
[ticket/572] Use json_decode/encode instead of serializing data
2015-06-06 16:51:00 +02:00
Marc Alexander
2ee6b3c819 [ticket/572] Use json_decode/encode instead of serializing data
B3P-572
2015-06-06 16:26:28 +02:00
Marc Alexander
7d5128db80 [ticket/571] Improve docblocks and simplify check in controller helper
B3P-571
2015-06-06 15:46:16 +02:00
Marc Alexander
35e07a1201 [ticket/571] No longer enforce date formats
B3P-571
2015-06-06 15:45:58 +02:00
Marc Alexander
31d01f0aa4 [ticket/571] Use proper links for forms in ACP
B3P-571
2015-06-06 15:37:03 +02:00
Marc Alexander
45fb1c859d [ticket/571] Some more minor fixes
B3P-571
2015-06-06 15:29:37 +02:00
Marc Alexander
9d4515432c [ticket/571] Remove unused ext.php
B3P-571
2015-06-06 14:50:46 +02:00
Marc Alexander
f3be40fd72 [ticket/571] Intval more variables and improve code quality
B3P-571
2015-06-06 14:47:35 +02:00
Marc Alexander
dd25b5dc1f Merge branch '2.1.x' 2015-06-06 14:13:57 +02:00
Marc Alexander
e72d8c0a5f Merge pull request #570 from marc1706/ticket/569
[ticket/569] Do not display portal on login page if board is disabled
2015-06-06 14:13:15 +02:00
Marc Alexander
4e3cbbc378 [ticket/569] Do not display portal on login page if board is disabled
B3P-569
2015-06-06 13:54:36 +02:00
Marc Alexander
62847190dd Merge branch '2.1.x' 2015-06-05 12:16:33 +02:00
Marc Alexander
a7ee21e621 Merge pull request #568 from marc1706/ticket/527
[ticket/527] Move calendar arrow icons to styles/all/
2015-06-05 10:56:07 +02:00
Marc Alexander
cbe29004bd [ticket/527] Move calendar arrow icons to styles/all/
B3P-527
2015-06-05 10:02:15 +02:00
Marc Alexander
eae00a3897 Merge pull request #567 from marc1706/ticket/565
[ticket/565] Properly create select box for multiple options
2015-06-04 22:50:52 +02:00
Marc Alexander
a832bea536 [ticket/565] Properly create select box for multiple options
B3P-565
2015-06-04 22:28:33 +02:00
Marc Alexander
c6767fa9f2 Merge pull request #563 from Galixte/patch-6
Update of FRENCH translation for Board3 Portal extension
2015-06-04 21:38:44 +02:00
Raphaël M.
8e398363fe Update of FRENCH translation for Board3 Portal extension
- update for portal_donation_module.php file.
2015-06-04 12:03:37 +02:00
Marc Alexander
f3f6dc16ea Merge branch '2.1.x' 2015-06-03 19:40:16 +02:00
Marc Alexander
b50d6012ea Merge pull request #562 from marc1706/ticket/550
[ticket/550] Use extension ACL variable in portal_info
2015-06-03 19:38:54 +02:00
Marc Alexander
9e1623e37d Merge pull request #561 from marc1706/ticket/560
[ticket/560] Properly instantiate router class in tests
2015-06-03 19:33:28 +02:00
Marc Alexander
2f0852cb70 [ticket/550] Use extension ACL variable in portal_info
B3P-550
2015-06-03 15:57:22 +02:00
Marc Alexander
309e6d06e2 [ticket/560] Properly instantiate router class in tests
B3P-560
2015-06-03 15:54:08 +02:00
Marc Alexander
efdfa5a074 Merge branch '2.1.x' 2015-06-03 15:39:34 +02:00
Marc Alexander
cddeb1eeac Merge pull request #559 from marc1706/ticket/558
[ticket/558] Fix coding guidelines infractions
2015-06-03 15:38:43 +02:00
Marc Alexander
bad0316a94 Merge pull request #557 from marc1706/ticket/555
[ticket/555] Allow setting default currency in ACP
2015-06-03 14:48:23 +02:00
Marc Alexander
522b4d3087 [ticket/558] Fix coding guidelines infractions
B3P-558
2015-06-03 13:59:26 +02:00
Marc Alexander
530d841674 [ticket/555] Fix tests
B3P-555
2015-06-03 13:36:21 +02:00
Marc Alexander
d3cca6a3e2 [ticket/555] Add missing language entries
B3P-555
2015-06-03 12:55:55 +02:00
Marc Alexander
a5ccbb48c7 [ticket/555] Allow defining default currency in ACP
B3P-555
2015-06-03 12:53:21 +02:00
Marc Alexander
367d5168bd [ticket/555] Add default currency to donation modules in migration
B3P-555
2015-06-03 11:06:42 +02:00
Marc Alexander
f4bf6e1d9f [ticket/555] Add setting for default currency
B3P-555
2015-06-03 11:01:51 +02:00
Marc Alexander
8cdf4a2161 Merge pull request #556 from marc1706/ticket/541
[ticket/541] Update for final release of Board3 Portal
2015-06-03 10:50:46 +02:00
Marc Alexander
ba684e1025 Merge branch '2.1.x' 2015-06-03 10:43:57 +02:00
Marc Alexander
c63ec881b1 Merge pull request #554 from marc1706/ticket/553
[ticket/553] Fix code sniffer complaints
2015-06-01 23:51:02 +02:00
Marc Alexander
9c90d2834b [ticket/553] Fix code sniffer complaints
B3P-553
2015-06-01 22:40:14 +02:00
Marc Alexander
7b7fde2a00 [ticket/541] Update for final release of Board3 Portal
B3P-541
2015-05-07 15:48:14 +02:00
Marc Alexander
127617ceaa Merge branch '2.1.x' 2015-05-07 15:45:51 +02:00
Marc Alexander
44a1937237 Merge pull request #548 from marc1706/ticket/541
[ticket/541] Update versions in composer.json
2015-05-07 15:43:51 +02:00
Marc Alexander
5899c9e7a5 [ticket/541] Update versions in composer.json
B3P-541
2015-05-07 15:01:41 +02:00
Marc Alexander
d4a2b63b4e Merge pull request #547 from marc1706/ticket/546
[ticket/546] Use phpbb\language\language for module language files
2015-05-06 12:26:53 +02:00
Marc Alexander
6ad980975a [ticket/546] Use phpbb\language\language for module language files
B3P-546
2015-05-06 11:46:49 +02:00
Marc Alexander
5cee058e69 Merge pull request #545 from marc1706/ticket/544
[ticket/544] Use dummy cache driver instead of replaced null driver
2015-05-06 10:13:11 +02:00
Marc Alexander
5a32b757f6 [ticket/544] Use dummy cache driver instead of replaced null driver
B3P-544
2015-05-06 09:54:24 +02:00
Marc Alexander
76dbec58d9 Merge branch '2.1.x' 2015-05-06 01:05:21 +02:00
Marc Alexander
072957b6ec Merge pull request #543 from marc1706/ticket/542
[ticket/542] Add missing calls to sql_freeresult()
2015-05-06 01:05:17 +02:00
Marc Alexander
76003767d5 [ticket/542] Add missing calls to sql_freeresult()
B3P-542
2015-05-05 23:36:50 +02:00
Marc Alexander
27f9ae0949 Merge branch '2.1.x' 2015-05-05 23:29:19 +02:00
Marc Alexander
229033a618 Merge pull request #540 from marc1706/ticket/539
[ticket/539] Do not show portal on all pages if board is disabled
2015-05-05 23:07:37 +02:00
Marc Alexander
85337f9a09 [ticket/539] Do not show portal on all pages if board is disabled
B3P-539
2015-05-05 20:43:38 +02:00
Marc Alexander
ddeeb97338 Merge branch '2.1.x' 2015-05-01 16:08:49 +02:00
Marc Alexander
3e0ec62751 Merge pull request #538 from marc1706/ticket/535
[ticket/535] Update trimmessage tool
2015-05-01 16:08:47 +02:00
Marc Alexander
2239850ba9 [ticket/535] Update trimmessage tool
B3P-535
2015-05-01 15:27:57 +02:00
Marc Alexander
d5712e70cb Merge pull request #537 from marc1706/ticket/534
[ticket/534] Adapt tests for master branch of phpBB
2015-05-01 15:22:58 +02:00
Marc Alexander
f61a0376dc [ticket/534] No longer test unsupported PHP 5.3.3
B3P-534
2015-05-01 15:07:01 +02:00
Marc Alexander
7ff4937108 [ticket/534] Adapt tests for master branch of phpBB
B3P-534
2015-05-01 15:00:46 +02:00
Marc Alexander
2d7232a392 Merge branch '2.1.x' 2015-04-30 17:50:21 +02:00
Marc Alexander
6cd36b4b13 Merge branch 'ticket/532' into 2.1.x 2015-04-30 17:50:18 +02:00
Marc Alexander
5678dd2251 [ticket/532] Update build excludes in travis.yml
B3P-532
2015-04-30 17:47:47 +02:00
Marc Alexander
5fe659d6b1 Merge remote-tracking branch 'upstream/2.2.x' 2015-04-30 17:42:14 +02:00
Marc Alexander
a1659237ab Merge remote-tracking branch 'upstream/develop-2.1.x' 2015-04-30 17:41:44 +02:00
Marc Alexander
61077d332a [2.2.x] Enable tests that should work with up-to-date DOMCrawler 2015-04-30 17:39:11 +02:00
Marc Alexander
5d8026c3c8 [2.2.x] Add new branch for 2.2.x 2015-04-30 17:38:48 +02:00
Marc Alexander
b4f68afd3c Merge pull request #531 from marc1706/ticket/530
[ticket/530] Update composer.phar for PHP7 compatibility
2015-04-27 19:18:59 +02:00
Marc Alexander
1f6ddc245e Merge pull request #529 from marc1706/ticket/528
[ticket/528] Correctly load module language for 3rd party modules
2015-04-27 19:18:51 +02:00
Marc Alexander
92a960ebd5 [ticket/530] Update composer.phar for PHP7 compatibility
B3P-530
2015-04-27 16:49:55 +02:00
Marc Alexander
9d0146918d [ticket/528] Add missing dependencies to tests
B3P-528
2015-04-27 16:48:21 +02:00
Marc Alexander
d699ef0e3b [ticket/528] Correctly load module language for 3rd party modules
B3P-528
2015-04-27 16:18:04 +02:00
Marc Alexander
6767c6406b Merge pull request #520 from Galixte/patch-5
Update of FRENCH translation for Board3 Portal extension
2015-04-09 13:58:01 +02:00
Marc Alexander
33a96b967b Merge pull request #526 from marc1706/ticket/525
[ticket/525] Use path instead of pattern for routes in tests
2015-04-09 13:38:53 +02:00
Marc Alexander
7e4a6468a2 [ticket/525] Use path instead of pattern for routes in tests
B3P-525
2015-04-09 13:24:07 +02:00
Marc Alexander
5007b9ee35 Merge pull request #524 from marc1706/ticket/521
[ticket/521] Display correct day of week in calendar module
2015-04-08 00:38:02 +02:00
Marc Alexander
8c0c123627 [ticket/521] Display correct day of week in calendar module
B3P-521
2015-04-08 00:12:07 +02:00
Marc Alexander
605c7bc41f Merge pull request #523 from marc1706/ticket/522
[ticket/522] Hide portal on all pages on low resolutions
2015-04-06 23:05:13 +02:00
Marc Alexander
0123621025 [ticket/522] Hide portal on all pages on low resolutions
B3P-522
2015-04-06 17:22:57 +02:00
Raphaël M.
3f2e5d56a6 Update of FRENCH translation for Board3 Portal extension
Update of FRENCH translation for portal_calendar_module.php file
2015-04-02 01:21:58 +02:00
Marc Alexander
dd43a8364c Merge pull request #517 from marc1706/ticket/510
[ticket/510] Order groups by group_legend setting in leaders module
2015-03-21 11:10:23 +01:00
Marc Alexander
6c8b63db06 Merge pull request #516 from marc1706/ticket/513
[ticket/513] Add build script
2015-03-21 10:12:31 +01:00
Marc Alexander
7e0034cd1a [ticket/510] Order groups by group_legend setting in leaders module
B3P-510
2015-03-21 10:11:12 +01:00
Marc Alexander
112b7d2db7 [ticket/513] Add missing line at end of file
B3P-513
2015-03-21 09:52:35 +01:00
Marc Alexander
9792360f03 [ticket/513] Run tests while packaging board3 portal
B3P-513
2015-03-21 09:51:07 +01:00
Marc Alexander
4d042239d6 [ticket/513] Update composer dependencies
B3P-513
2015-03-21 09:51:02 +01:00
Marc Alexander
2a5d91b474 [ticket/513] Add build script
B3P-513
2015-03-21 09:50:57 +01:00
Marc Alexander
61782b6e77 Merge pull request #515 from marc1706/ticket/514
[ticket/514] Add PHP7 to travis build matrix
2015-03-20 18:47:37 +01:00
Marc Alexander
39482d5441 [ticket/514] Use preg_replace_callback in portal
B3P-514
2015-03-20 17:49:41 +01:00
Marc Alexander
6835979dbf [ticket/514] Use preg_replace_callback in main_menu
B3P-514
2015-03-20 17:49:29 +01:00
Marc Alexander
2dd46f61b6 [ticket/514] Add PHP7 to travis build matrix
B3P-514
2015-03-20 15:31:37 +01:00
Marc Alexander
24f18700bb Merge pull request #512 from marc1706/ticket/511
[ticket/511] Do not show <hr> at bottom of prosilver main menu
2015-03-19 11:00:58 +01:00
Marc Alexander
01cb85005a [ticket/511] Do not show <hr> at bottom of prosilver main menu
B3P-511
2015-03-18 13:51:36 +01:00
Marc Alexander
1a4587a2a3 Merge pull request #509 from marc1706/ticket/508
[ticket/508] Only execute portal once when accessed via domain only
2015-03-15 17:29:19 +01:00
Marc Alexander
eb24ba1425 [ticket/508] Only execute portal once when accessed via domain only
B3P-508
2015-03-15 15:26:32 +01:00
Marc Alexander
c0430bb20e Merge pull request #507 from marc1706/ticket/506
[ticket/506] Move module images to styles/all folder
2015-03-15 13:57:29 +01:00
Marc Alexander
08a4d74937 [ticket/506] Only check styles/all folder for module images and fix tests
B3P-506
2015-03-15 13:33:10 +01:00
Marc Alexander
f8de6be004 [ticket/506] Move module images to styles/all folder
B3P-506
2015-03-15 11:56:16 +01:00
Marc Alexander
cd4e7e2993 Merge pull request #505 from marc1706/ticket/504
[ticket/504] Order who is online based on phpBB ACP setting
2015-03-15 11:09:53 +01:00
Marc Alexander
22e48beb8f [ticket/504] Order who is online based on phpBB ACP setting
B3P-504
2015-03-15 09:00:20 +01:00
Marc Alexander
545f7af4de Merge pull request #503 from marc1706/ticket/502
[ticket/502] Remove inner rounded corners from center modules
2015-03-10 21:17:45 +01:00
Marc Alexander
53a9dbf5dd [ticket/502] Remove inner rounded corners from center modules
B3P-502
2015-03-10 20:30:36 +01:00
Marc Alexander
9ca1e197ee Merge pull request #501 from marc1706/ticket/500
[ticket/500] Show correct number of replies in news and announcements
2015-03-09 22:32:24 +01:00
Marc Alexander
131b7a691d [ticket/500] Show correct number of replies in news and announcements
B3P-500
2015-03-09 21:42:27 +01:00
Marc Alexander
c3e1128ad6 Merge pull request #499 from marc1706/ticket/498
[ticket/498] Add nofollow for calendar and add roles for elements
2015-03-05 11:17:36 +01:00
Marc Alexander
2d5a14db22 [ticket/498] Add nofollow for calendar and add roles for elements
B3P-498
2015-03-05 10:59:57 +01:00
Marc Alexander
4134f59a15 Merge pull request #497 from marc1706/ticket/494
[ticket/494] Improve caching and query performance of portal
2015-03-05 10:31:43 +01:00
Marc Alexander
1a74082154 [ticket/494] Remove SQL queries to portal_modules when changing settings
B3P-494
2015-03-04 17:32:53 +01:00
Marc Alexander
9fe7e17124 [ticket/494] Correctly mock sql_save and sql_load methods of cache
B3P-494
2015-03-04 10:23:37 +01:00
Marc Alexander
726f94e798 Merge pull request #496 from marc1706/ticket/495
[ticket/495] Correctly load template files for modules
2015-03-03 15:32:55 +01:00
Marc Alexander
1e405e9d91 [ticket/494] Cache more queries on portal page
B3P-494
2015-03-03 15:25:22 +01:00
Marc Alexander
42973b1a10 [ticket/495] Correctly load template files for modules
B3P-495
2015-03-03 14:55:56 +01:00
Marc Alexander
a699a92e31 Merge pull request #493 from marc1706/ticket/492
[ticket/492] Use B3P controller helper for loading module language
2015-03-02 14:14:33 +01:00
Marc Alexander
22ef20d0e7 [ticket/492] Use B3P controller helper for loading module language
B3P-492
2015-03-02 13:50:28 +01:00
Marc Alexander
a9c5913c1f Merge pull request #491 from Galixte/patch-4
Update for FRENCH translation - UTF8 FRENCH quotes
2015-03-02 11:01:01 +01:00
Raphaël
74adacbe1f Update for FRENCH translation for portal_recent_module.php file
Update for FRENCH translation for portal_recent_module.php file
2015-02-28 15:31:26 +01:00
Raphaël
e2c85346b0 Update for FRENCH translation for portal_poll_module.php file
Update for FRENCH translation for portal_poll_module.php file
2015-02-28 15:31:03 +01:00
Raphaël
7129e5e2a2 Update for FRENCH translation for portal_news_module.php file
Update for FRENCH translation for portal_news_module.php file
2015-02-28 15:30:38 +01:00
Raphaël
af21b2edc4 Update for FRENCH translation for portal_attachments_module.php file
Update for FRENCH translation for portal_attachments_module.php file
2015-02-28 15:30:09 +01:00
Raphaël
f65f132649 Update for FRENCH translation for portal_announcements_module.php file
Update for FRENCH translation for portal_announcements_module.php file
2015-02-28 15:29:45 +01:00
Raphaël
7ac5201425 Update for FRENCH translation - UTF8 FRENCH quotes
Update for FRENCH translation for portal_acp.php file
Update for FRENCH translation for modules/portal_announcements_module.php
Update for FRENCH translation for modules/portal_attachments_module.php
Update for FRENCH translation for modules/portal_news_module.php
Update for FRENCH translation for modules/portal_poll_module.php
Update for FRENCH translation for modules/portal_recent_module.php
2015-02-28 15:28:59 +01:00
Marc Alexander
6488dd8d0c Merge pull request #490 from marc1706/ticket/487
[ticket/487] Add missing language entries to German language
2015-02-27 21:00:17 +01:00
Marc Alexander
df854fe083 [ticket/487] Add missing language entries to German language
B3P-487
2015-02-27 20:41:57 +01:00
Marc Alexander
36db7c0b28 Merge pull request #488 from marc1706/ticket/477
[ticket/477] Expect version_helper to throw RuntimeException
2015-02-27 10:40:39 +01:00
Marc Alexander
3c23f6b405 [ticket/477] Expect version check to return false
B3P-477
2015-02-27 09:24:51 +01:00
Marc Alexander
de98a00df5 [ticket/477] Use class members instead of passing by reference
B3P-477
2015-02-27 09:19:25 +01:00
Marc Alexander
96b31e8abb [ticket/477] Move assignment of update information to seperate method
B3P-477
2015-02-27 09:16:19 +01:00
Marc Alexander
dec789fef7 Merge pull request #489 from marc1706/ticket/464
[ticket/464] Use phpbb_admin_path for links to acp pages
2015-02-27 09:08:13 +01:00
Marc Alexander
3e18e50f89 [ticket/464] Use phpbb_admin_path for links to acp pages
B3P-464
2015-02-26 23:12:29 +01:00
Marc Alexander
53eb8ebe02 [ticket/477] Expect version_helper to throw RuntimeException
B3P-477
2015-02-26 23:08:07 +01:00
Marc Alexander
9551290fcf Merge pull request #485 from marc1706/ticket/482
[ticket/482] Get rid of conflicts between portal and phpBB CSS
2015-02-26 21:12:21 +01:00
Marc Alexander
e838684ae5 Merge pull request #486 from marc1706/ticket/481
[ticket/481] Remove unneeded assignment of S_SEARCH_ACTION in search
2015-02-26 21:06:34 +01:00
Marc Alexander
b68bb7f4a6 [ticket/481] Remove unneeded assignment of S_SEARCH_ACTION in search
B3P-481
2015-02-26 17:55:34 +01:00
Marc Alexander
119855aedf Merge pull request #484 from marc1706/ticket/483
[ticket/483] Use phpBB's 3.1.x branch for travis builds
2015-02-26 17:45:21 +01:00
Marc Alexander
5b6b6740ca [ticket/483] Use phpBB's 3.1.x branch for travis builds
B3P-483
2015-02-26 17:08:00 +01:00
Marc Alexander
3ab38cdf31 [ticket/482] Get rid of conflicts between portal and phpBB CSS
B3P-482
2015-02-26 17:02:11 +01:00
Marc Alexander
5c79d9452a Merge pull request #480 from Galixte/patch-3
Update for FRENCH translation for portal_acp.php file
2015-02-21 11:31:22 +01:00
Raphaël
ce17432e78 Update for FRENCH translation for portal_acp.php file
Update for FRENCH translation for portal_acp.php file
2015-02-21 01:28:54 +01:00
Marc Alexander
7b9380360c Merge pull request #476 from marc1706/ticket/475
[ticket/475] Show "No announcements" if no announcements present
2015-02-15 10:31:47 +01:00
Marc Alexander
a8655fc78d Merge pull request #474 from marc1706/ticket/473
[ticket/473] Correctly create news on read all page
2015-02-15 01:16:57 +01:00
Marc Alexander
d16acc444b [ticket/475] Show "No announcements" if no announcements present
B3P-475
2015-02-15 01:09:57 +01:00
Marc Alexander
76c5f62cbd [ticket/473] Correctly create news on read all page
B3P-473
2015-02-15 01:01:58 +01:00
Marc Alexander
faedc2bd25 Merge pull request #470 from marc1706/ticket/469
[ticket/469] Add setting for displaying portal side columns on all pages
2015-02-14 22:51:08 +01:00
Marc Alexander
cfa2657da4 [ticket/469] Correctly create path to images on pages outside root
B3P-469
2015-02-14 22:30:57 +01:00
Marc Alexander
8e85752c65 [ticket/469] Enable portal on all pages in subsilver2 & add tests
B3P-469
2015-02-14 22:21:10 +01:00
Marc Alexander
9899d4fd3c [ticket/469] Fix incorrect doc block
B3P-469
2015-02-13 22:23:49 +01:00
Marc Alexander
1e7dc9b576 [ticket/469] Add tests for displaying all pages using main controller
B3P-469
2015-02-13 22:23:23 +01:00
Marc Alexander
30bd67f3d8 [ticket/469] Fix tests with new settings
B3P-469
2015-02-13 19:52:00 +01:00
Marc Alexander
311c7cb97f [ticket/469] Only allow showing left or right module on all pages
B3P-469
2015-02-13 16:34:53 +01:00
Marc Alexander
f75dd66601 [ticket/469] Add prosilver events required for portal on all pages
B3P-469
2015-02-13 16:34:52 +01:00
Marc Alexander
0ea8d11360 [ticket/469] Remove unused template variable
B3P-469
2015-02-13 16:34:52 +01:00
Marc Alexander
70efdf099e [ticket/469] Add CSS if portal is displayed on all pages
B3P-469
2015-02-13 16:34:51 +01:00
Marc Alexander
bc3b430569 [ticket/469] Add new language entries for displaying portal on all pages
B3P-469
2015-02-13 16:34:51 +01:00
Marc Alexander
ee096bf60d [ticket/469] Allow restricting portal columns based on parameter in handle
B3P-469
2015-02-13 16:34:50 +01:00
Marc Alexander
f2b002c49b [ticket/469] Check current page with get_current_url()
The current session page seems to be wrong on the first page access.

B3P-469
2015-02-13 16:34:49 +01:00
Marc Alexander
a50e6c04d0 [ticket/469] Make listener display portal if settings are set to true
B3P-469
2015-02-13 16:34:49 +01:00
Marc Alexander
e4861caed8 [ticket/469] Add settings for displaying portal on all pages
B3P-469
2015-02-13 16:34:48 +01:00
Marc Alexander
7a63c9a3a8 [ticket/469] Make sure to not define constants more than once
B3P-469
2015-02-13 16:34:47 +01:00
Marc Alexander
2397563b9a Merge pull request #472 from marc1706/ticket/471
[ticket/471] Do not shorten text if limit is at 0
2015-02-12 23:52:15 +01:00
Marc Alexander
ce42fb4fb8 [ticket/471] Do not shorten text if limit is at 0
Also, text will no longer be shortened if the modules is using the compact
style.

B3P-471
2015-02-12 23:03:33 +01:00
Marc Alexander
b98c6fed23 Merge pull request #468 from marc1706/ticket/467
[ticket/467] Update composer dependencies
2015-02-11 15:30:21 +01:00
Marc Alexander
8d38348f15 [ticket/467] Update composer dependencies
B3P-467
2015-02-11 15:14:39 +01:00
Marc Alexander
64eb8f871a [ticket/467] Update composer.phar to latest version
B3P-467
2015-02-11 15:13:48 +01:00
Marc Alexander
6614a7c320 Merge pull request #466 from marc1706/ticket/465
[ticket/465] Use path instead of pattern in routing.yml
2015-02-11 12:08:26 +01:00
Marc Alexander
9bf8fd049d [ticket/465] Use path instead of pattern in routing.yml
B3P-465
2015-02-11 11:53:19 +01:00
Marc Alexander
6e6e3c504b Merge pull request #463 from Galixte/patch-2
Update for FRENCH translation for Board3 Portal extension
2015-02-08 11:26:48 +01:00
Raphaël
e3163df594 Update for FRENCH translation for portal_topposters_module.php file
Update for FRENCH translation for portal_topposters_module.php file
2015-02-08 00:11:49 +01:00
Raphaël
3713332da0 Update for FRENCH translation for portal_latest_bots_module.php file
Update for FRENCH translation for portal_latest_bots_module.php file
2015-02-08 00:08:16 +01:00
Raphaël
68af642d73 Update for FRENCH translation for portal_random_member_module.php file
Update for FRENCH translation for portal_random_member_module.php file
2015-02-08 00:07:10 +01:00
Marc Alexander
f4ce532f69 Merge pull request #462 from marc1706/ticket/461
[ticket/461] Fix tests for current version
2015-02-07 19:51:59 +01:00
Marc Alexander
2c62ff85a9 [ticket/461] Fix tests for current version
B3P-461
2015-02-07 19:37:59 +01:00
431 changed files with 10564 additions and 6588 deletions

3
.gitattributes vendored
View File

@@ -8,5 +8,4 @@ phpunit.xml.* export-ignore
README.md export-ignore
git-tools/ export-ignore
.coveralls.yml export-ignore
composer.phar export-ignore
composer.lock export-ignore
build.xml export-ignore

414
.github/workflows/tests.yml vendored Normal file
View 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

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
/.idea/*
/tests/test_config.php
/vendor/
/build/

View File

@@ -1,71 +0,0 @@
language: php
matrix:
include:
- php: 5.3.3
env: DB=mysqli
- php: 5.3
env: DB=mysqli # MyISAM
- php: 5.4
env: DB=mysqli
- php: 5.4
env: DB=mysql
- php: 5.4
env: DB=mariadb
- php: 5.4
env: DB=postgres
- php: 5.4
env: DB=sqlite3
- php: 5.5
env: DB=mysqli
- php: 5.6
env: DB=mysqli
- php: hhvm
env: DB=mysqli
allow_failures:
- php: hhvm
fast_finish: true
env:
global:
- EXTNAME="board3/portal"
- SNIFF="1" # Should we run code sniffer on your code?
- IMAGE_ICC="0" # Should we run icc profile sniffer on your images?
- COVERAGE="1" # Should we send coverage?
- EPV="1" # Should we run EPV (Extension Pre Validator) on your code?
- SPELLCHECK="1" # Should the php files be checked for obvious spelling errors?
- PHPBB_BRANCH="develop-ascraeus"
branches:
except:
- master
- develop-1_0_X
install:
- php composer.phar install --dev --no-interaction --prefer-source
- travis/prepare-phpbb.sh $EXTNAME $PHPBB_BRANCH
- cd ../../phpBB3
- travis/prepare-extension.sh $EXTNAME $PHPBB_BRANCH
- travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
- sh -c "if [ '$COVERAGE' != '0' ]; then ../board3/Board3-Portal/travis/prepare-coverage.sh $DB $TRAVIS_PHP_VERSION; fi"
before_script:
- travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
- mkdir build/logs
- chmod +wx build/logs
script:
- sh -c "if [ '$SNIFF' != '0' ]; then travis/ext-sniff.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
- sh -c "if [ '$IMAGE_ICC' != '0' ]; then travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION; fi"
- ../board3/Board3-Portal/travis/run-testsuite.sh $DB $TRAVIS_PHP_VERSION
- sh -c "if [ '$EPV' != '0' ]; then ../board3/Board3-Portal/travis/run-epv.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
after_script:
- sh -c "if [ '$COVERAGE' != '0' ]; then ../board3/Board3-Portal/travis/send-coverage.sh $DB $TRAVIS_PHP_VERSION; fi"
notifications:
email:
recipients:
- admin@m-a-styles.de
on_success: change
on_failure: change

View File

@@ -1,23 +1,24 @@
#Board3 Portal 2.1.x
# Board3 Portal 2.3.x
Board Portal 2.1.x is a second generation portal for phpBB 3.1.x. It adds a portal with several blocks to your forum.
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
## How to use
You can download the current development version of Board3 Portal 2.1.x here or download the current release at [www.board3.de](http://www.board3.de/ "Board3 • Portal").
Board3 Portal 2.1.x can be installed via the phpBB 3.1 ACP.
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
Support for Board3 Portal can be found at [www.board3.de](http://www.board3.de/ "Board3 • Portal") or on [www.phpbb.com](http://www.phpbb.com/community/viewtopic.php?f=70&t=2131824/ "phpBB • Board3 Portal").
The extension is currently under heavy development and not supported until further notice.
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 travis build below.
develop-2.1.x - [![Build Status](https://api.travis-ci.org/board3/Board3-Portal.png?branch=develop-2.1.x)](https://travis-ci.org/board3/Board3-Portal)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/board3/Board3-Portal/badges/quality-score.png?b=develop-2.1.x)](https://scrutinizer-ci.com/g/board3/Board3-Portal/?branch=develop-2.1.x)
[![Code Coverage](https://scrutinizer-ci.com/g/board3/Board3-Portal/badges/coverage.png?b=develop-2.1.x)](https://scrutinizer-ci.com/g/board3/Board3-Portal/?branch=develop-2.1.x)
We are starting to have unit and functional tests in order to prevent regressions. You can check our GitHub Actions builds below.
master - [![Tests](https://github.com/board3/Board3-Portal/actions/workflows/tests.yml/badge.svg)](https://github.com/board3/Board3-Portal/actions/workflows/tests.yml)

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -19,10 +19,10 @@ class portal_info
return array(
'filename' => '\board3\portal\acp\portal_module',
'title' => 'ACP_PORTAL',
'version' => '2.0.1-rc1',
'version' => '2.1.0',
'modes' => array(
'config' => array('title' => 'ACP_PORTAL_GENERAL_INFO', 'auth' => 'acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
'modules' => array('title' => 'ACP_PORTAL_MODULES', 'auth' => 'acl_a_manage_portal', 'cat' => array('ACP_PORTAL')),
'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')),
),
);
}

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -12,13 +12,13 @@ namespace board3\portal\acp;
class portal_module
{
public $u_action;
public $new_config = array();
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, $version_check, $request, $php_ext, $portal_helper, $modules_helper, $log, $portal_columns;
protected $root_path, $request, $php_ext, $portal_helper, $modules_helper, $log, $portal_columns;
/** @var \board3\portal\portal\modules\manager */
protected $modules_manager;
@@ -26,6 +26,9 @@ class portal_module
/** @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;
@@ -48,17 +51,21 @@ class portal_module
$this->phpbb_admin_path = $phpbb_admin_path;
$this->php_ext = $phpEx;
$this->phpbb_container = $phpbb_container;
$this->version_check = $this->phpbb_container->get('board3.portal.version.check');
$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');
define('PORTAL_MODULES_TABLE', $this->phpbb_container->getParameter('board3.portal.modules.table'));
define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.portal.config.table'));
$this->board3_controller_helper = $this->phpbb_container->get('board3.portal.controller_helper');
if(!function_exists('obtain_portal_config'))
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);
}
@@ -91,12 +98,18 @@ class portal_module
'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_version_check' => array('lang' => 'PORTAL_VERSION_CHECK', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'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' => array('lang' => 'PORTAL_LEFT_COLUMN_WIDTH', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'board3_right_column_width' => array('lang' => 'PORTAL_RIGHT_COLUMN_WIDTH', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true),
'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),
)
);
@@ -115,13 +128,12 @@ class portal_module
if (!($this->c_class = $this->portal_helper->get_module($module_data['module_classname'])))
{
continue;
break;
}
if ($this->c_class->get_language())
{
$this->user->add_lang_ext('board3/portal', 'modules/' . $this->c_class->get_language());
}
// 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(
@@ -129,21 +141,23 @@ class portal_module
'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/' . $this->user->style['style_path'] . '/theme/images/portal/' . $module_data['module_image_src'] : '',
'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('center', 'top', 'bottom'))) ? false : true,
'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')
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
$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))
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,
@@ -157,11 +171,6 @@ class portal_module
$this->template->assign_var('SHOW_MODULE_OPTIONS', true);
}
}
else
{
// only show the mod version check if we are on the General Settings page
$this->version_check->check();
}
$this->new_config = $this->config;
$cfg_array = ($this->request->is_set('config')) ? $this->request->variable('config', array('' => ''), true) : $this->new_config;
@@ -183,7 +192,7 @@ class portal_module
// Reset module
$reset_module = $this->request->variable('module_reset', 0);
if($reset_module && !empty($module_data))
if ($reset_module && !empty($module_data))
{
$this->modules_manager->reset_module($id, $mode, $module_id, $module_data);
}
@@ -215,11 +224,11 @@ class portal_module
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) : $config_name;
$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) : $config_name;
$args = ($module_id != 0) ? array($cfg_array[$config_name], $config_name, $module_id) : array($config_name);
$func = $null['submit'];
}
}
@@ -232,7 +241,7 @@ class portal_module
continue;
}
if(isset($null['type']) && $null['type'] == 'custom')
if (isset($null['type']) && $null['type'] == 'custom')
{
continue;
}
@@ -255,7 +264,7 @@ class portal_module
FROM ' . GROUPS_TABLE . '
ORDER BY group_id ASC';
$result = $this->db->sql_query($sql);
while($row = $this->db->sql_fetchrow($result))
while ($row = $this->db->sql_fetchrow($result))
{
$groups_ary[] = $row['group_id'];
}
@@ -266,13 +275,15 @@ class portal_module
$sql_ary = array(
'module_image_src' => $this->request->variable('module_image', ''),
'module_image_width' => $this->request->variable('module_img_width', 0),
'module_image_height' => $this->request->variable('module_img_height', 0),
'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))
if (!(isset($this->c_class->hide_name) && $this->c_class->hide_name == true))
{
$sql_ary['module_name'] = $this->request->variable('module_name', '', true);
}
@@ -285,10 +296,10 @@ class portal_module
WHERE module_id = ' . (int) $module_id;
$this->db->sql_query($sql);
$this->cache->destroy('portal_modules');
$this->cache->destroy('sql', PORTAL_MODULES_TABLE);
$this->cache->destroy('sql', CONFIG_TABLE);
if(isset($module_name))
if (isset($module_name))
{
if (isset($module_data) && $module_data['module_classname'] !== '\board3\portal\modules\custom')
{
@@ -299,11 +310,11 @@ class portal_module
{
$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_root_path}adm/index.{$this->php_ext}", 'i=\board3\portal\acp\portal_module&amp;mode=modules') : $this->u_action));
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&amp;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))
if (!isset($this->c_class->custom_acp_tpl) || empty($this->c_class->custom_acp_tpl))
{
$this->tpl_name = 'portal/acp_portal_config';
}
@@ -314,7 +325,7 @@ class portal_module
$this->page_title = $display_vars['title'];
$this->template->assign_vars(array(
'L_TITLE' => $this->user->lang[$display_vars['title']],
'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,
@@ -350,7 +361,7 @@ class portal_module
$l_explain = (isset($this->user->lang[$vars['lang'] . '_EXP'])) ? $this->user->lang[$vars['lang'] . '_EXP'] : '';
}
if($vars['type'] != 'custom')
if ($vars['type'] != 'custom')
{
$content = build_cfg_template($type, $config_key, $this->new_config, $config_key, $vars);
}
@@ -399,7 +410,7 @@ class portal_module
$portal_modules = obtain_portal_modules();
$installed_modules = $module_column = array();
foreach($portal_modules as $cur_module)
foreach ($portal_modules as $cur_module)
{
$installed_modules[] = $cur_module['module_classname'];
// Create an array with the columns the module is in
@@ -416,11 +427,11 @@ class portal_module
{
$this->modules_manager->move_module_vertical($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_DOWN);
}
else if($action == 'move_right')
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')
else if ($action == 'move_left')
{
$this->modules_manager->move_module_horizontal($module_id, \board3\portal\portal\modules\database_handler::MOVE_DIRECTION_LEFT);
}
@@ -441,7 +452,7 @@ class portal_module
if (!($this->c_class = $this->portal_helper->get_module($module_classname)))
{
continue;
break;
}
// Do not add modules that shouldn't be added
@@ -459,7 +470,7 @@ class portal_module
$sql = 'SELECT module_order
FROM ' . PORTAL_MODULES_TABLE . '
WHERE module_column = ' . $add_column . '
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');
@@ -491,7 +502,7 @@ class portal_module
if (is_array($error))
{
$error_output = '';
foreach($error as $cur_error)
foreach ($error as $cur_error)
{
$error_output .= $cur_error . '<br />';
}
@@ -534,10 +545,9 @@ class portal_module
if ($module->get_allowed_columns() & $this->portal_columns->string_to_constant($add_module))
{
if ($module->get_language())
{
$this->user->add_lang_ext('board3/portal', 'modules/' . $module->get_language());
}
// Load module language
$this->board3_controller_helper->load_module_language($module);
$fileinfo[] = array(
'module' => $module_class,
'name' => $this->user->lang[$module->get_name()],
@@ -546,7 +556,7 @@ class portal_module
}
// we sort the $fileinfo array by the name of the modules
foreach($fileinfo as $key => $cur_file)
foreach ($fileinfo as $key => $cur_file)
{
$name_ary[$key] = $cur_file['name'];
}
@@ -590,21 +600,20 @@ class portal_module
{
$portal_modules = obtain_portal_modules();
foreach($portal_modules as $row)
foreach ($portal_modules as $row)
{
if (!($this->c_class = $this->portal_helper->get_module($row['module_classname'])))
{
continue;
}
if ($this->c_class->get_language())
{
$this->user->add_lang_ext('board3/portal', 'modules/' . $this->c_class->get_language());
}
// 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))
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
@@ -634,7 +643,7 @@ class portal_module
$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))
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
@@ -666,7 +675,7 @@ class portal_module
$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/' . $this->user->style['style_path'] . '/theme/images/portal/' . $row['module_image_src'] . '" alt="' . $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']) . '&amp;action=delete&amp;module_classname=' . $row['module_classname'],
@@ -683,6 +692,7 @@ class portal_module
'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),
));
}

View File

@@ -18,8 +18,8 @@ function helpline(help)
/**
* Fix a bug involving the TextRange object. From
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
*/
function initInsertions()
*/
function initInsertions()
{
var doc;
@@ -27,7 +27,7 @@ function initInsertions()
{
doc = document;
}
else
else
{
doc = opener.document;
}
@@ -45,12 +45,12 @@ function initInsertions()
* bbstyle
*/
function bbstyle(bbnumber)
{
{
if (bbnumber != -1)
{
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
}
else
}
else
{
insert_text('[*]');
document.getElementById(text_name).focus();
@@ -92,7 +92,7 @@ function bbfontstyle(bbopen, bbclose)
//The new position for the cursor after adding the bbcode
var caret_pos = getCaretPosition(textarea).start;
var new_pos = caret_pos + bbopen.length;
var new_pos = caret_pos + bbopen.length;
// Open tag
insert_text(bbopen + bbclose);
@@ -103,7 +103,7 @@ function bbfontstyle(bbopen, bbclose)
{
textarea.selectionStart = new_pos;
textarea.selectionEnd = new_pos;
}
}
// IE
else if (document.selection)
{
@@ -124,15 +124,15 @@ function insert_text(text, spaces, popup)
{
var textarea;
if (!popup)
if (!popup)
{
textarea = document.getElementById(text_name);
}
else
}
else
{
textarea = opener.document.getElementById(text_name);
}
if (spaces)
if (spaces)
{
text = ' ' + text + ' ';
}
@@ -148,7 +148,7 @@ function insert_text(text, spaces, popup)
}
else if (textarea.createTextRange && textarea.caretPos)
{
if (baseHeight != textarea.caretPos.boundingHeight)
if (baseHeight != textarea.caretPos.boundingHeight)
{
textarea.focus();
storeCaret(textarea);
@@ -161,7 +161,7 @@ function insert_text(text, spaces, popup)
{
textarea.value = textarea.value + text;
}
if (!popup)
if (!popup)
{
textarea.focus();
}
@@ -283,7 +283,7 @@ function split_lines(text)
j++;
}
}
while(splitAt != -1)
while (splitAt != -1)
}
}
return splitLines;
@@ -298,7 +298,7 @@ function mozWrap(txtarea, open, close)
var selEnd = txtarea.selectionEnd;
var scrollTop = txtarea.scrollTop;
if (selEnd == 1 || selEnd == 2)
if (selEnd == 1 || selEnd == 2)
{
selEnd = selLength;
}
@@ -424,7 +424,7 @@ function getCaretPosition(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);
}
@@ -432,7 +432,7 @@ function getCaretPosition(txtarea)
// 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;
caretPos.end = txtarea.sel_start;
}
return caretPos;

View File

@@ -1,198 +1,206 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<h3>{{ lang('WARNING') }}</h3>
<p>{{ ERROR_MSG }}</p>
</div>
<!-- ENDIF -->
{% endif %}
<!-- IF S_EDIT -->
<form id="acp_portal_links" method="post" action="{B3P_U_ACTION}">
{% if S_EDIT %}
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
<fieldset>
<legend>{L_ACP_PORTAL_EVENTS}</legend>
<legend>{{ lang('ACP_PORTAL_EVENTS') }}</legend>
<dl>
<dt><label for="event_title">{L_EVENT_TITLE}{L_COLON}</label></dt>
<dd><input name="event_title" type="text" id="event_title" value="{EVENT_TITLE}" maxlength="255" /></dd>
<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">{L_EVENT_DESC}{L_COLON}</label></dt>
<dd><textarea id="event_desc" rows="6" cols="6" name="event_desc">{EVENT_DESC}</textarea></dd>
<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">{L_ACP_PORTAL_EVENT_START_DATE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_EVENT_START_DATE_EXP}</span>
<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>
<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">{L_EVENT_ALL_DAY}{L_COLON}</label></dt>
<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 --> />{L_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 --> /> {L_NO}</label>
<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 -->>
<div id="end"{% if EVENT_ALL_DAY %}style="display: none;"{% endif %}>
<dl>
<dt>
<label for="event_end_date">{L_ACP_PORTAL_EVENT_END_DATE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_EVENT_END_DATE_EXP}</span>
<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>
<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">{L_EVENT_LINK}{L_COLON}</label><br />
<span>{L_EVENT_LINK_EXP}</span>
<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>
<dd><input name="event_url" type="text" id="event_url" value="{{ EVENT_URL }}" maxlength="255" /></dd>
</dl>
<dl>
<dt>
<label for="permission-setting-calendar">{L_ACP_PORTAL_CALENDAR_PERMISSION}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_CALENDAR_PERMISSION_EXP}</span>
<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[]">
<!-- BEGIN permission_setting_calendar -->
<option value="{permission_setting_calendar.GROUP_ID}"<!-- IF permission_setting_calendar.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_calendar.GROUP_NAME}</option>
<!-- END 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="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<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="{U_ACTION}">
<!-- IF SHOW_MODULE_OPTIONS -->
{% else %}
<form id="acp_portal_calendar" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}{L_COLON}</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
{% endif %}
{% for options in loops.options %}
{% if options.S_LEGEND %}
{% if not options.S_FIRST_ROW %}
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<legend>{{ options.LEGEND }}</legend>
{% else %}
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
<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 -->
<!-- END options -->
{% endif %}
{% endfor %}
</fieldset>
<fieldset>
<legend>{L_ACP_PORTAL_EVENTS}</legend>
<fieldset class="tabulated">
<legend>{{ lang('ACP_PORTAL_EVENTS') }}</legend>
<fieldset class="tabulated">
<p class="quick">
<input class="button2" name="add" type="submit" value="{L_ADD_EVENT}" />
</p>
<p class="quick">
<input class="button2" name="add" type="submit" value="{{ lang('ADD_EVENT') }}" />
</p>
<table cellspacing="1">
<thead>
<tr>
<th>{L_EVENT_TITLE}</th>
<th>{L_EVENT_DESC}</th>
<th>{L_EVENT_TIME}</th>
<th>{L_EVENT_LINK}</th>
<th>{L_ACTION}</th>
</tr>
</thead>
<tbody>
<!-- BEGIN 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 -->{L_EVENT_START}{L_COLON}&nbsp;{events.EVENT_START}&nbsp;&#124;&nbsp;{L_EVENT_END}{L_COLON}&nbsp;{events.EVENT_END}<!-- ELSE -->{L_EVENT_TIME}{L_COLON}&nbsp;{events.EVENT_START}<!-- IF events.EVENT_ALL_DAY -->&nbsp;&#124;&nbsp;{L_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>
<!-- BEGINELSE -->
<tr class="row1">
<td style="text-align: center;" colspan="5">{L_NO_EVENTS}</td>
</tr>
<!-- END events -->
</tbody>
</table>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
<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') }}&nbsp;{{ events.EVENT_START }}&nbsp;&#124;&nbsp;{{ lang('EVENT_END') }}{{ lang('COLON') }}&nbsp;{{ events.EVENT_END }}{% else %}{{ lang('EVENT_TIME') }}{{ lang('COLON') }}&nbsp;{{ events.EVENT_START }}{% if events.EVENT_ALL_DAY %}&nbsp;&#124;&nbsp;{{ 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') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{{ S_FORM_TOKEN }}
</fieldset>
</fieldset>
</form>
<!-- ENDIF -->
{% endif %}
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -1,126 +1,109 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<h3>{{ lang('WARNING') }}</h3>
<p>{{ ERROR_MSG }}</p>
</div>
<!-- ENDIF -->
{% endif %}
<!-- BEGIN mods -->
<fieldset>
<legend>{L_VERSION_CHECK}</legend>
<p style="font-weight: bold; color: <!-- IF mods.S_UP_TO_DATE -->#228822<!-- ELSE -->#BC2A4D<!-- ENDIF -->;">{mods.UP_TO_DATE}</p>
<dl>
<dt><label>{L_CURRENT_VERSION}</label></dt>
<dd><strong>{mods.CURRENT_VERSION}</strong></dd>
</dl>
<dl>
<dt><label>{L_LATEST_VERSION}</label></dt>
<dd><strong>{mods.LATEST_VERSION}</strong></dd>
</dl>
<!-- IF not mods.S_UP_TO_DATE -->
<dl>
<dt><label>{L_DOWNLOAD_LATEST}</label></dt>
<dd><strong><a href="{mods.DOWNLOAD}">{L_DOWNLOAD} {mods.TITLE} {mods.LATEST_VERSION}</a></strong></dd>
</dl>
<dl>
<dt><label>{L_ANNOUNCEMENT_TOPIC}</label></dt>
<dd><strong><a href="{mods.ANNOUNCEMENT}">{L_RELEASE_ANNOUNCEMENT}</a></strong></dd>
</dl>
<!-- ENDIF -->
</fieldset>
<!-- END mods -->
<form id="acp_portal_config" method="post" action="{B3P_U_ACTION}">
<!-- IF SHOW_MODULE_OPTIONS -->
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<!-- IF MODULE_NAME -->
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
{% if MODULE_NAME %}
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% endif %}
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}{L_COLON}</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
{% endif %}
{% for options in loops.options %}
{% if options.S_LEGEND %}
{% if not options.S_FIRST_ROW %}
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<legend>{{ options.LEGEND }}</legend>
{% else %}
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
<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 -->
<!-- BEGINELSE -->
{% endif %}
{% else %}
<fieldset>
<!-- END options -->
{% endfor %}
<!-- IF S_AUTH -->
<!-- BEGIN auth_tpl -->
{auth_tpl.TPL}
<!-- END auth_tpl -->
<!-- ENDIF -->
{% 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="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</form>
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<!-- INCLUDEJS portal/acp_editor.js -->
{% INCLUDEJS 'portal/acp_editor.js' %}
<script type="text/javascript">
// <![CDATA[
/**
@@ -29,28 +29,28 @@ 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]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
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: '{LA_BBCODE_B_HELP}',
i: '{LA_BBCODE_I_HELP}',
u: '{LA_BBCODE_U_HELP}',
q: '{LA_BBCODE_Q_HELP}',
c: '{LA_BBCODE_C_HELP}',
l: '{LA_BBCODE_L_HELP}',
o: '{LA_BBCODE_O_HELP}',
p: '{LA_BBCODE_P_HELP}',
w: '{LA_BBCODE_W_HELP}',
a: '{LA_BBCODE_A_HELP}',
s: '{LA_BBCODE_S_HELP}',
f: '{LA_BBCODE_F_HELP}',
e: '{LA_BBCODE_E_HELP}',
d: '{LA_BBCODE_D_HELP}'
<!-- BEGIN custom_tags -->
,cb_{custom_tags.BBCODE_ID}: '{custom_tags.A_BBCODE_HELPLINE}'
<!-- END custom_tags -->
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()
@@ -60,11 +60,11 @@ function change_palette()
if (e.style.display == 'block')
{
document.getElementById('bbpalette').value = '{LA_FONT_COLOR_HIDE}';
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR_HIDE')|escape('js') }}';
}
else
{
document.getElementById('bbpalette').value = '{LA_FONT_COLOR}';
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR')|escape('js') }}';
}
}
@@ -73,84 +73,92 @@ function change_palette()
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<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 -->
{% endif %}
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_ACP_PORTAL_CUSTOM_PERMISSION}{L_COLON}</label><br /><span>{L_ACP_PORTAL_CUSTOM_PERMISSION_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- IF S_PREVIEW -->
{% endif %}
{% if S_PREVIEW %}
<fieldset>
<legend>{L_ACP_PORTAL_CUSTOM_PREVIEW}</legend>
<legend>{{ lang('ACP_PORTAL_CUSTOM_PREVIEW') }}</legend>
<dl>
<dt style="border: none; width: 100%;">
{PREVIEW_TEXT}
{{ PREVIEW_TEXT }}
</dt>
</dl>
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{L_PORTAL_CUSTOM}</legend>
<dl id="bbcode-buttons"<!-- IF not CUSTOM_USE_BBCODE --> style="display: none;"<!-- ENDIF -->>
<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>{L_FONT_COLOR}{L_COLON}</label></dt>
<dt style="border: none;"><label>{{ lang('FONT_COLOR') }}{{ lang('COLON') }}</label></dt>
<dd></dd>
</dl>
<dl style="clear: left;">
@@ -159,73 +167,73 @@ function change_palette()
</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="{L_BBCODE_B_HELP}" />
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" />
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_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="{L_BBCODE_Q_HELP}" />
<!-- ENDIF -->
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" />
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" />
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" />
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_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="{L_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="{L_BBCODE_W_HELP}" />
<!-- ENDIF -->
<!-- IF S_BBCODE_FLASH -->
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_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="{L_BBCODE_F_HELP}">
<option value="50">{L_FONT_TINY}</option>
<option value="85">{L_FONT_SMALL}</option>
<option value="100" selected="selected">{L_FONT_NORMAL}</option>
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 -->
<option value="150">{L_FONT_LARGE}</option>
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 -->
<option value="200">{L_FONT_HUGE}</option>
<!-- ENDIF -->
<!-- ENDIF -->
<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="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}" />
<!-- BEGIN 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}" />
<!-- END custom_tags -->
<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">{L_ACP_PORTAL_CUSTOM_CODE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_CUSTOM_CODE_EXP}</span>
<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>
<dd><textarea name="custom_code" id="custom_code" cols="6" rows="12">{{ CUSTOM_CODE }}</textarea></dd>
</dl>
<dl>
<dt>
<label for="custom_use_bbcode">{L_ACP_PORTAL_CUSTOM_BBCODE}</label><br />
<span>{L_ACP_PORTAL_CUSTOM_BBCODE_EXP}</span>
<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 --> />{L_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 --> />{L_NO}</label>
<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 -->
<!-- BEGIN auth_tpl -->
{auth_tpl.TPL}
<!-- END auth_tpl -->
<!-- ENDIF -->
{% 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="{L_PREVIEW}" />&nbsp;
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}" />&nbsp;
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</form>
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -1,179 +1,187 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<h3>{{ lang('WARNING') }}</h3>
<p>{{ ERROR_MSG }}</p>
</div>
<!-- ENDIF -->
{% endif %}
<!-- IF S_EDIT -->
<form id="acp_portal_links" method="post" action="{B3P_U_ACTION}">
{% if S_EDIT %}
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
<fieldset>
<legend>{L_ACP_PORTAL_LINKS}</legend>
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
<dl>
<dt><label for="link_title">{L_ACP_PORTAL_LINK_TITLE}{L_COLON}</label></dt>
<dd><input name="link_title" type="text" id="link_title" value="{LINK_TITLE}" maxlength="255" /></dd>
<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">{L_ACP_PORTAL_LINK_TYPE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_LINK_TYPE_EXP}</span>
<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 --> />{L_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 --> /> {L_ACP_PORTAL_LINK_EXT}</label>
<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">{L_ACP_PORTAL_LINK_URL}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_LINK_URL_EXP}</span>
<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>
<dd><input name="link_url" type="text" id="link_url" value="{{ LINK_URL }}" maxlength="255" /></dd>
</dl>
<dl>
<dt>
<label for="permission-setting-link">{L_ACP_PORTAL_LINK_PERMISSION}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_LINK_PERMISSION_EXP}</span>
<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[]">
<!-- BEGIN permission_setting_link -->
<option value="{permission_setting_link.GROUP_ID}"<!-- IF permission_setting_link.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_link.GROUP_NAME}</option>
<!-- END 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 -->
{% if LINK_ID !== '' %}<input type="hidden" name="id" value="{{ LINK_ID }}" />{% endif %}
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<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="{U_ACTION}">
<!-- IF SHOW_MODULE_OPTIONS -->
{% else %}
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}{L_COLON}</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
{% endif %}
{% for options in loops.options %}
{% if options.S_LEGEND %}
{% if not options.S_FIRST_ROW %}
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<legend>{{ options.LEGEND }}</legend>
{% else %}
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
<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 -->
<!-- BEGINELSE -->
{% endif %}
{% else %}
<fieldset>
<!-- END options -->
{% endfor %}
<fieldset class="tabulated">
<legend>{L_ACP_PORTAL_LINKS}</legend>
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
<p class="quick">
<input class="button2" name="add" type="submit" value="{L_ACP_PORTAL_LINK_ADD}" />
<input class="button2" name="add" type="submit" value="{{ lang('ACP_PORTAL_LINK_ADD') }}" />
</p>
<table cellspacing="1">
<table style="cellspacing: 1;">
<thead>
<tr>
<th>{L_ACP_PORTAL_LINK_TITLE}</th>
<th>{L_ACP_PORTAL_LINK_URL}</th>
<th>{L_ACTION}</th>
<th>{{ lang('ACP_PORTAL_LINK_TITLE') }}</th>
<th>{{ lang('ACP_PORTAL_LINK_URL') }}</th>
<th>{{ lang('ACTION') }}</th>
</tr>
</thead>
<tbody>
<!-- BEGIN 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 -->
{% 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 -->&nbsp;
<!-- IF links.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->&nbsp;
<a href="{links.U_EDIT}">{ICON_EDIT}</a> <a href="{links.U_DELETE}">{ICON_DELETE}</a>
{% if links.S_FIRST_ROW %}{{ ICON_MOVE_UP_DISABLED }}{% else %}<a href="{{ links.U_MOVE_UP }}">{{ ICON_MOVE_UP }}</a>{% endif %}&nbsp;
{% if links.S_LAST_ROW %}{{ ICON_MOVE_DOWN_DISABLED }}{% else %}<a href="{{ links.U_MOVE_DOWN }}">{{ ICON_MOVE_DOWN }}</a>{% endif %}&nbsp;
<a href="{{ links.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ links.U_DELETE }}">{{ ICON_DELETE }}</a>
</td>
</tr>
<!-- BEGINELSE -->
{% else %}
<tr class="row1">
<td style="text-align: center;" colspan="3">{L_LINKS_NO_LINKS}</td>
<td style="text-align: center;" colspan="3">{{ lang('LINKS_NO_LINKS') }}</td>
</tr>
<!-- END links -->
{% endfor %}
</tbody>
</table>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</fieldset>
</form>
<!-- ENDIF -->
{% endif %}
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -1,186 +1,194 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<h3>{{ lang('WARNING') }}</h3>
<p>{{ ERROR_MSG }}</p>
</div>
<!-- ENDIF -->
{% endif %}
<!-- IF S_EDIT -->
<form id="acp_portal_links" method="post" action="{B3P_U_ACTION}">
{% if S_EDIT %}
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
<fieldset>
<legend>{L_ACP_PORTAL_MENU_LINK_SETTINGS}</legend>
<legend>{{ lang('ACP_PORTAL_MENU_LINK_SETTINGS') }}</legend>
<dl>
<dt><label for="link_title">{L_ACP_PORTAL_MENU_TITLE}{L_COLON}</label></dt>
<dd><input name="link_title" type="text" id="link_title" value="{LINK_TITLE}" maxlength="255" /></dd>
<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">{L_ACP_PORTAL_MENU_IS_CAT}{L_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 --> />{L_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 --> /> {L_NO}</label></dd>
<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 -->>
<div id="url"{% if S_LINK_IS_CAT %} style="display: none;"{% endif %}>
<dl>
<dt>
<label for="link_type">{L_ACP_PORTAL_MENU_TYPE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_MENU_TYPE_EXP}</span>
<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 --> />{L_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 --> /> {L_ACP_PORTAL_MENU_EXT}</label>
<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">{L_ACP_PORTAL_MENU_URL}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_MENU_URL_EXP}</span>
<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>
<dd><input name="link_url" type="text" id="link_url" value="{{ LINK_URL }}" maxlength="255" /></dd>
</dl>
<dl>
<dt>
<label for="permission-setting-menu">{L_ACP_PORTAL_MENU_PERMISSION}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_MENU_PERMISSION_EXP}</span>
<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[]">
<!-- BEGIN permission_setting_menu -->
<option value="{permission_setting_menu.GROUP_ID}"<!-- IF permission_setting_menu.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting_menu.GROUP_NAME}</option>
<!-- END 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 -->
{% if LINK_ID !== '' %}<input type="hidden" name="id" value="{{ LINK_ID }}" />{% endif %}
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<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="{U_ACTION}">
<!-- IF SHOW_MODULE_OPTIONS -->
{% else %}
<form id="acp_portal_links" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}{L_COLON}</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
{% endif %}
{% for options in loops.options %}
{% if options.S_LEGEND %}
{% if not options.S_FIRST_ROW %}
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{options.LEGEND}</legend>
<!-- ELSE -->
<legend>{{ options.LEGEND }}</legend>
{% else %}
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
<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 -->
<!-- BEGINELSE -->
{% endif %}
{% else %}
<fieldset>
<!-- END options -->
{% endfor %}
<fieldset class="tabulated">
<legend>{L_ACP_PORTAL_LINKS}</legend>
<legend>{{ lang('ACP_PORTAL_LINKS') }}</legend>
<p class="quick">
<input class="button2" name="add" type="submit" value="{L_ACP_PORTAL_MENU_ADD}" />
<input class="button2" name="add" type="submit" value="{{ lang('ACP_PORTAL_MENU_ADD') }}" />
</p>
<table cellspacing="1">
<table style="cellspacing: 1;">
<thead>
<tr>
<th>{L_ACP_PORTAL_MENU_TITLE}</th>
<th>{L_ACP_PORTAL_MENU_URL}</th>
<th>{L_ACTION}</th>
<th>{{ lang('ACP_PORTAL_MENU_TITLE') }}</th>
<th>{{ lang('ACP_PORTAL_MENU_URL') }}</th>
<th>{{ lang('ACTION') }}</th>
</tr>
</thead>
<tbody>
<!-- BEGIN 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 -->
{% 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 -->&nbsp;
<!-- IF links.S_LAST_ROW -->{ICON_MOVE_DOWN_DISABLED}<!-- ELSE --><a href="{links.U_MOVE_DOWN}">{ICON_MOVE_DOWN}</a><!-- ENDIF -->&nbsp;
<a href="{links.U_EDIT}">{ICON_EDIT}</a> <a href="{links.U_DELETE}">{ICON_DELETE}</a>
{% if links.S_FIRST_ROW %}{{ ICON_MOVE_UP_DISABLED }}{% else %}<a href="{{ links.U_MOVE_UP }}">{{ ICON_MOVE_UP }}</a>{% endif %}&nbsp;
{% if links.S_LAST_ROW %}{{ ICON_MOVE_DOWN_DISABLED }}{% else %}<a href="{{ links.U_MOVE_DOWN }}">{{ ICON_MOVE_DOWN }}</a>{% endif %}&nbsp;
<a href="{{ links.U_EDIT }}">{{ ICON_EDIT }}</a> <a href="{{ links.U_DELETE }}">{{ ICON_DELETE }}</a>
</td>
</tr>
<!-- BEGINELSE -->
{% else %}
<tr class="row1">
<td style="text-align: center;" colspan="3">{L_MENU_NO_LINKS}</td>
<td style="text-align: center;" colspan="3">{{ lang('MENU_NO_LINKS') }}</td>
</tr>
<!-- END links -->
{% endfor %}
</tbody>
</table>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</fieldset>
</form>
<!-- ENDIF -->
{% endif %}
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -1,78 +1,78 @@
<!-- IF S_AJAX_REQUEST -->
<form id="acp_portal_modules" method="post" action="{U_ACTION}">
{% if S_AJAX_REQUEST %}
<form id="acp_portal_modules" method="post" action="{{ U_ACTION }}">
<fieldset>
<dl>
<dt><label for="module_classname" style="display: inline;">{L_CHOOSE_MODULE}{L_COLON}</label><br /><span>{L_CHOOSE_MODULE_EXP}</span></dt>
<dd><select name="module_classname" id="module_classname">{S_MODULE_NAMES}</select></dd>
<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="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}{S_HIDDEN_FIELDS}
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<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 -->
{% else %}
{% INCLUDECSS 'portal/b3p_admin.css' %}
{% INCLUDE 'overall_header.html' %}
<a name="maincontent"></a>
<!-- IF S_EDIT -->
{% if S_EDIT %}
<h1>{L_ACP_PORTAL_MODULES}</h1>
<p>{L_ACP_PORTAL_MODULES_EXP}</p>
<h1>{{ lang('ACP_PORTAL_MODULES') }}</h1>
<p>{{ lang('ACP_PORTAL_MODULES_EXP') }}</p>
<form id="acp_portal_modules" method="post" action="{B3P_U_ACTION}">
<form id="acp_portal_modules" method="post" action="{{ B3P_U_ACTION }}">
<fieldset>
<dl>
<dt><label for="module_classname">{L_CHOOSE_MODULE}{L_COLON}</label><br /><span>{L_CHOOSE_MODULE_EXP}</span></dt>
<dd><select name="module_classname" id="module_classname">{S_MODULE_NAMES}</select></dd>
<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="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}{S_HIDDEN_FIELDS}
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
{{ S_FORM_TOKEN }}{{ S_HIDDEN_FIELDS }}
</p>
</fieldset>
</form>
<!-- ELSE -->
{% else %}
<h1>{L_ACP_PORTAL_MODULES}</h1>
<p>{L_ACP_PORTAL_MODULES_EXP}</p>
<h1>{{ lang('ACP_PORTAL_MODULES') }}</h1>
<p>{{ lang('ACP_PORTAL_MODULES_EXP') }}</p>
<form id="acp_portal_modules" method="post" action="{U_ACTION}" data-ajax="true">
<form id="acp_portal_modules" method="post" action="{{ B3P_U_ACTION }}" data-ajax="true">
<fieldset class="tabulated">
<legend>{L_ACP_PORTAL_MODULES}</legend>
<legend>{{ lang('ACP_PORTAL_MODULES') }}</legend>
<table class="portal-modules-overview">
<tr>
<th style="text-align: center;">{L_MODULE_POS_TOP}</th>
<th style="text-align: center;">{{ lang('MODULE_POS_TOP') }}</th>
</tr>
<!-- BEGIN 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 -->
{% 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 />
{{ 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}&nbsp;</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>&nbsp;</span>
<span<!-- IF not modules_top.S_LAST_ROW --> style="display: none;"<!-- ENDIF -->>{ICON_MOVE_DOWN_DISABLED}&nbsp;</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>&nbsp;</span>
<a href="{modules_top.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_top.U_DELETE}" data-ajax="b3p_delete_module">{ICON_DELETE}</a>
<span{% if not modules_top.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }}&nbsp;</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>&nbsp;</span>
<span{% if not modules_top.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }}&nbsp;</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>&nbsp;</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>
<!-- BEGINELSE -->
{% else %}
<tr>
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
</tr>
<!-- END modules_top -->
{% endfor %}
</table>
<p class="quick">
<input class="button2" name="add[top]" type="submit" value="{L_ADD_MODULE}" />
<input class="button2" name="add[top]" type="submit" value="{{ lang('ADD_MODULE') }}" />
</p>
<table style="background-color: transparent; border: none; padding: 0px; margin: 0px;">
@@ -80,88 +80,88 @@
<td style="width: 20%; font-size: 100%; line-height: 100%; padding: 0px; margin: 0px;">
<table class="portal-modules-overview">
<tr>
<th>{L_MODULE_POS_LEFT}</th>
<th>{{ lang('MODULE_POS_LEFT') }}</th>
</tr>
<!-- BEGIN 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 -->
{% 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 />
{{ 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}&nbsp;</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>&nbsp;</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 -->&nbsp;
<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 -->&nbsp;
<span<!-- IF not modules_left.S_LAST_ROW --> style="display: none;"<!-- ENDIF -->>{ICON_MOVE_DOWN_DISABLED}&nbsp;</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>
<span{% if not modules_left.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }}&nbsp;</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>&nbsp;</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 %}&nbsp;
<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 %}&nbsp;
<span{% if not modules_left.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }}&nbsp;</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>
<!-- BEGINELSE -->
{% else %}
<tr>
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
</tr>
<!-- END modules_left -->
{% endfor %}
</table>
<p class="quick">
<input class="button2" name="add[left]" type="submit" value="{L_ADD_MODULE}" />
<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;">{L_MODULE_POS_CENTER}</th>
<th style="text-align: center;">{{ lang('MODULE_POS_CENTER') }}</th>
</tr>
<!-- BEGIN 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 -->
{% 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 />
{{ 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}&nbsp;</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>&nbsp;</span>
<!-- IF modules_center.U_MOVE_RIGHT --><a href="{modules_center.U_MOVE_RIGHT}">{ICON_MOVE_RIGHT}</a><!-- ELSE -->{ICON_MOVE_RIGHT_DISABLED}<!-- ENDIF -->&nbsp;
<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 -->&nbsp;
<span<!-- IF not modules_center.S_LAST_ROW --> style="display: none;"<!-- ENDIF -->>{ICON_MOVE_DOWN_DISABLED}&nbsp;</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>
<span{% if not modules_center.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }}&nbsp;</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>&nbsp;</span>
{% if modules_center.U_MOVE_RIGHT %}<a href="{{ modules_center.U_MOVE_RIGHT }}">{{ ICON_MOVE_RIGHT }}</a>{% else %}{{ ICON_MOVE_RIGHT_DISABLED }}{% endif %}&nbsp;
<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 %}&nbsp;
<span{% if not modules_center.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }}&nbsp;</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>
<!-- BEGINELSE -->
{% else %}
<tr>
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
</tr>
<!-- END modules_center -->
{% endfor %}
</table>
<p class="quick">
<input class="button2" name="add[center]" type="submit" value="{L_ADD_MODULE}" />
<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>{L_MODULE_POS_RIGHT}</th>
<th>{{ lang('MODULE_POS_RIGHT') }}</th>
</tr>
<!-- BEGIN 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 -->
{% 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 />
{{ 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}&nbsp;</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>&nbsp;</span>
<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->{ICON_MOVE_LEFT_DISABLED}<!-- ELSE -->{ICON_MOVE_RIGHT_DISABLED}<!-- ENDIF -->&nbsp;
<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 -->&nbsp;
<span<!-- IF not modules_right.S_LAST_ROW --> style="display: none;"<!-- ENDIF -->>{ICON_MOVE_DOWN_DISABLED}&nbsp;</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>
<span{% if not modules_right.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }}&nbsp;</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>&nbsp;</span>
{% if S_CONTENT_DIRECTION eq 'rtl' %}{{ ICON_MOVE_LEFT_DISABLED }}{% else %}{{ ICON_MOVE_RIGHT_DISABLED }}{% endif %}&nbsp;
<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 %}&nbsp;
<span{% if not modules_right.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }}&nbsp;</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>
<!-- BEGINELSE -->
{% else %}
<tr>
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
</tr>
<!-- END modules_right -->
{% endfor %}
</table>
<p class="quick">
<input class="button2" name="add[right]" type="submit" value="{L_ADD_MODULE}" />
<input class="button2" name="add[right]" type="submit" value="{{ lang('ADD_MODULE') }}" />
</p>
</td>
</tr>
@@ -170,37 +170,37 @@
<table class="portal-modules-overview">
<tr>
<th style="text-align: center;">{L_MODULE_POS_BOTTOM}</th>
<th style="text-align: center;">{{ lang('MODULE_POS_BOTTOM') }}</th>
</tr>
<!-- BEGIN 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 -->
{% 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 />
{{ 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}&nbsp;</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>&nbsp;</span>
<span<!-- IF not modules_bottom.S_LAST_ROW --> style="display: none;"<!-- ENDIF -->>{ICON_MOVE_DOWN_DISABLED}&nbsp;</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>&nbsp;</span>
<a href="{modules_bottom.U_EDIT}">{ICON_EDIT}</a> <a href="{modules_bottom.U_DELETE}" data-ajax="b3p_delete_module">{ICON_DELETE}</a>
<span{% if not modules_bottom.S_FIRST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_UP_DISABLED }}&nbsp;</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>&nbsp;</span>
<span{% if not modules_bottom.S_LAST_ROW %} style="display: none;"{% endif %}>{{ ICON_MOVE_DOWN_DISABLED }}&nbsp;</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>&nbsp;</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>
<!-- BEGINELSE -->
{% else %}
<tr>
<td class="row1" style="text-align: center;">{L_NO_MODULES}</td>
<td class="row1" style="text-align: center;">{{ lang('NO_MODULES') }}</td>
</tr>
<!-- END modules_bottom -->
{% endfor %}
</table>
<p class="quick">
<input class="button2" name="add[bottom]" type="submit" value="{L_ADD_MODULE}" />
<input class="button2" name="add[bottom]" type="submit" value="{{ lang('ADD_MODULE') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</form>
<!-- ENDIF -->
{% endif %}
<!-- INCLUDEJS portal/ajax.js -->
{% INCLUDEJS 'portal/ajax.js' %}
<!-- INCLUDE overall_footer.html -->
<!-- ENDIF -->
{% INCLUDE 'overall_footer.html' %}
{% endif %}

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE overall_header.html -->
{% INCLUDE 'overall_header.html' %}
<!-- INCLUDEJS portal/acp_editor.js -->
{% INCLUDEJS 'portal/acp_editor.js' %}
<script type="text/javascript">
// <![CDATA[
/**
@@ -29,28 +29,28 @@ 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]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
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: '{LA_BBCODE_B_HELP}',
i: '{LA_BBCODE_I_HELP}',
u: '{LA_BBCODE_U_HELP}',
q: '{LA_BBCODE_Q_HELP}',
c: '{LA_BBCODE_C_HELP}',
l: '{LA_BBCODE_L_HELP}',
o: '{LA_BBCODE_O_HELP}',
p: '{LA_BBCODE_P_HELP}',
w: '{LA_BBCODE_W_HELP}',
a: '{LA_BBCODE_A_HELP}',
s: '{LA_BBCODE_S_HELP}',
f: '{LA_BBCODE_F_HELP}',
e: '{LA_BBCODE_E_HELP}',
d: '{LA_BBCODE_D_HELP}'
<!-- BEGIN custom_tags -->
,cb_{custom_tags.BBCODE_ID}: '{custom_tags.A_BBCODE_HELPLINE}'
<!-- END custom_tags -->
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()
@@ -60,11 +60,11 @@ function change_palette()
if (e.style.display == 'block')
{
document.getElementById('bbpalette').value = '{LA_FONT_COLOR_HIDE}';
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR_HIDE')|escape('js') }}';
}
else
{
document.getElementById('bbpalette').value = '{LA_FONT_COLOR}';
document.getElementById('bbpalette').value = '{{ lang('FONT_COLOR')|escape('js') }}';
}
}
@@ -73,83 +73,91 @@ function change_palette()
<a name="maincontent"></a>
<h1>{L_TITLE}</h1>
<h1>{{ lang('TITLE') }}</h1>
<p>{L_TITLE_EXPLAIN}</p>
<p>{{ lang('TITLE_EXPLAIN') }}</p>
<!-- IF S_ERROR -->
{% if S_ERROR %}
<div class="errorbox">
<h3>{L_WARNING}</h3>
<p>{ERROR_MSG}</p>
<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 -->
{% endif %}
<form id="acp_portal_config" method="post" action="{{ B3P_U_ACTION }}">
{% if SHOW_MODULE_OPTIONS %}
<fieldset>
<legend>{L_MODULE_OPTIONS}</legend>
<legend>{{ lang('MODULE_OPTIONS') }}</legend>
<dl>
<dt><label for="module_name">{L_MODULE_NAME}{L_COLON}</label><br /><span>{L_MODULE_NAME_EXP}</span></dt>
<dd><input id="module_name" type="text" value="{MODULE_NAME}" name="module_name" maxlength="255" size="64" /></dd>
<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 -->
{% if MODULE_SHOW_IMAGE %}
<dl>
<dt><label for="module_image">{L_MODULE_IMAGE}{L_COLON}</label><br /><span>{L_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="{L_MODULE_IMAGE}" /></dd><!-- ENDIF -->
<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 -->
{% if MODULE_IMAGE_SRC %}
<dl>
<dt><label for="module_img_width">{L_MODULE_IMAGE_WIDTH}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_WIDTH_EXP}</span></dt>
<dd><input id="module_img_width" type="text" value="{MODULE_IMAGE_WIDTH}" name="module_img_width" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<dl>
<dt><label for="module_img_height">{L_MODULE_IMAGE_HEIGHT}{L_COLON}</label><br /><span>{L_MODULE_IMAGE_HEIGHT_EXP}</span></dt>
<dd><input id="module_img_height" type="text" value="{MODULE_IMAGE_HEIGHT}" name="module_img_height" maxlength="3" size="3" />px</dd>
<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" />&nbsp;{{ lang('PIXEL') }}</dd>
</dl>
<!-- ENDIF -->
<!-- ENDIF -->
{% endif %}
<dl>
<dt><label for="module_reset">{L_MODULE_RESET}{L_COLON}</label><br /><span style="color: #BC2A4D;">{L_MODULE_RESET_EXP}</span></dt>
<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"/>&nbsp;{{ 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">{L_MODULE_STATUS}{L_COLON}</label></dt>
<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 --> />{L_YES}</label>
<label><input type="radio" class="radio" name="module_status" value="0"<!-- IF not MODULE_ENABLED --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
<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 .permission_setting -->
{% if loops.permission_setting|length %}
<dl>
<dt><label for="permission-setting">{L_MODULE_PERMISSIONS}{L_COLON}</label><br /><span>{L_MODULE_PERMISSIONS_EXP}</span></dt>
<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[]">
<!-- BEGIN permission_setting -->
<option value="{permission_setting.GROUP_ID}"<!-- IF permission_setting.SELECTED -->selected="selected"<!-- ENDIF -->>{permission_setting.GROUP_NAME}</option>
<!-- END 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 -->
{% endif %}
</fieldset>
<!-- ENDIF -->
<!-- IF S_PREVIEW -->
{% endif %}
{% if S_PREVIEW %}
<fieldset>
<legend>{L_ACP_PORTAL_WELCOME_PREVIEW}</legend>
<legend>{{ lang('ACP_PORTAL_WELCOME_PREVIEW') }}</legend>
<dl>
<dt style="border: none; width: 100%;">
{PREVIEW_TEXT}
{{ PREVIEW_TEXT }}
</dt>
</dl>
</fieldset>
<!-- ENDIF -->
{% endif %}
<fieldset>
<legend>{L_PORTAL_WELCOME}</legend>
<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>{L_FONT_COLOR}{L_COLON}</label></dt>
<dt style="border: none;"><label>{{ lang('FONT_COLOR') }}{{ lang('COLON') }}</label></dt>
<dd></dd>
</dl>
<dl style="clear: left;">
@@ -158,63 +166,63 @@ function change_palette()
</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="{L_BBCODE_B_HELP}" />
<input type="button" class="button2" accesskey="i" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}" />
<input type="button" class="button2" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onclick="bbstyle(4)" title="{L_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="{L_BBCODE_Q_HELP}" />
<!-- ENDIF -->
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}" />
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}" />
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}" />
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" title="{L_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="{L_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="{L_BBCODE_W_HELP}" />
<!-- ENDIF -->
<!-- IF S_BBCODE_FLASH -->
<input type="button" class="button2" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_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="{L_BBCODE_F_HELP}">
<option value="50">{L_FONT_TINY}</option>
<option value="85">{L_FONT_SMALL}</option>
<option value="100" selected="selected">{L_FONT_NORMAL}</option>
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 150 -->
<option value="150">{L_FONT_LARGE}</option>
<!-- IF not MAX_FONT_SIZE or MAX_FONT_SIZE >= 200 -->
<option value="200">{L_FONT_HUGE}</option>
<!-- ENDIF -->
<!-- ENDIF -->
<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="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}" />
<!-- BEGIN 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}" />
<!-- END custom_tags -->
<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">{L_ACP_PORTAL_WELCOME_MESSAGE}{L_COLON}</label><br />
<span>{L_ACP_PORTAL_WELCOME_MESSAGE_EXP}</span>
<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>
<dd><textarea name="welcome_message" id="welcome_message" cols="6" rows="12">{{ WELCOME_MESSAGE }}</textarea></dd>
</dl>
<!-- IF S_AUTH -->
<!-- BEGIN auth_tpl -->
{auth_tpl.TPL}
<!-- END auth_tpl -->
<!-- ENDIF -->
{% 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="{L_PREVIEW}" />&nbsp;
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<input class="button2" type="submit" id="preview" name="preview" value="{{ lang('PREVIEW') }}" />&nbsp;
<input class="button1" type="submit" id="submit" name="submit" value="{{ lang('SUBMIT') }}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{{ lang('RESET') }}" />
</p>
{S_FORM_TOKEN}
{{ S_FORM_TOKEN }}
</fieldset>
</form>
<!-- INCLUDE overall_footer.html -->
{% INCLUDE 'overall_footer.html' %}

View File

@@ -13,33 +13,39 @@ phpbb.addAjaxCallback('b3p_move_module_up', function(res) {
return;
}
var el = $(this).parents('tr:first'),
trSwap = el.prev(),
elClass = trSwap.attr('class'),
trSwapClass = el.attr('class');
var $bottomRow = $(this).parents('tr:first'),
$topRow = $bottomRow.prev(),
topRowClass = $topRow.attr('class'),
bottomRowClass = $bottomRow.attr('class');
el.insertBefore(trSwap);
el.attr('class', elClass);
trSwap.attr('class', trSwapClass);
$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 = trSwap.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
var swapIsFirstRow = $topRow.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
if (swapIsFirstRow) {
trSwap.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
trSwap.find('img[src*="icon_up."]').parents('span:first').toggle();
el.find('img[src*="icon_up."]').parents('span:first').toggle();
el.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
$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 = el.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
var elIsLastRow = $bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
if (elIsLastRow) {
trSwap.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
trSwap.find('img[src*="icon_down."]').parents('span:first').toggle();
el.find('img[src*="icon_down."]').parents('span:first').toggle();
el.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
$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();
}
});
@@ -48,33 +54,39 @@ phpbb.addAjaxCallback('b3p_move_module_down', function(res) {
return;
}
var el = $(this).parents('tr:first'),
trSwap = el.next(),
elClass = trSwap.attr('class'),
trSwapClass = el.attr('class');
var $topRow = $(this).parents('tr:first'),
$bottomRow = $topRow.next(),
bottomRowClass = $bottomRow.attr('class'),
topRowClass = $topRow.attr('class');
el.insertAfter(trSwap);
el.attr('class', elClass);
trSwap.attr('class', trSwapClass);
$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 = trSwap.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
var swapIsLastRow = $bottomRow.find('img[src*="icon_down_disabled"]').parents('span:first').is(':visible');
if (swapIsLastRow) {
trSwap.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
trSwap.find('img[src*="icon_down."]').parents('span:first').toggle();
el.find('img[src*="icon_down."]').parents('span:first').toggle();
el.find('img[src*="icon_down_disabled"]').parents('span:first').toggle();
$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 = el.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
var elIsFirstRow = $topRow.find('img[src*="icon_up_disabled"]').parents('span:first').is(':visible');
if (elIsFirstRow) {
trSwap.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
trSwap.find('img[src*="icon_up."]').parents('span:first').toggle();
el.find('img[src*="icon_up."]').parents('span:first').toggle();
el.find('img[src*="icon_up_disabled"]').parents('span:first').toggle();
$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();
}
});
@@ -83,16 +95,20 @@ phpbb.addAjaxCallback('b3p_delete_module', function(res) {
return;
}
var el = $(this).parents('tr:first'),
nextEl = el.next();
var $deletedRow = $(this).parents('tr:first'),
$nextRow = $deletedRow.next();
el.remove();
$deletedRow.remove();
// Fix classes of next elements
while (nextEl !== undefined && nextEl.is('tr')) {
var nextElClass = (nextEl.attr('class') === 'row1') ? 'row2' : 'row1';
nextEl.attr('class', nextElClass);
nextEl = nextEl.next();
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();
}
});

233
build.xml Normal file
View 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>

View File

@@ -2,38 +2,46 @@
"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": "http://www.board3.de",
"version": "2.1.0-rc2",
"time": "2015-02-07 16:41:42",
"license": "GPL-2.0",
"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": "http://www.m-a-styles.de",
"role": "Lead Developer"
},
"homepage": "https://www.m-a-styles.de",
"role": "Developer"
},
{
"name": "Joas Schilling",
"email": "nickvergessen@gmx.de",
"homepage": "http://mods.flying-bits.org",
"homepage": "https://www.schilljs.com/",
"role": "Former Developer"
},
{
"name": "Kirk",
"homepage": "https://reyno41.bplaced.net/phpbb/",
"role": "Developer"
}],
}
],
"require": {
"php": ">=5.3.3",
"nickvergessen/phpbb-tool-trimmessage": "1.3.*"
},
"require-dev": {
"phpbb/epv": "dev-master"
"php": ">=7.1.0,<8.3.0",
"marc1706/phpbb-text-shortener": "^0.3.0"
},
"extra": {
"display-name": "Board3 Portal",
"soft-require": {
"phpbb/phpbb": ">=3.1.3,<3.2.*@dev"
"phpbb/phpbb": ">=3.2.6,<3.4@dev"
},
"version-check": {
"host": "board3.de",
"directory": "/updatecheck",
"filename": "board3_portal.json"
"filename": "board3_portal.json",
"ssl": "true"
}
},
"config": {
"allow-plugins": {
"composer/installers": true
}
}
}

447
composer.lock generated
View File

@@ -1,229 +1,37 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"hash": "fcaf26c5c7d6cd3f177ec06f4ce681e6",
"content-hash": "a9605bea31820bc73c4bd7d142cbba7c",
"packages": [
{
"name": "nickvergessen/phpbb-tool-trimmessage",
"version": "1.3.0",
"name": "marc1706/phpbb-text-shortener",
"version": "v0.3.0",
"source": {
"type": "git",
"url": "https://github.com/nickvergessen/phpbb-tool-trimmessage.git",
"reference": "2a3d8273dc1238dd06454688bcb6496f62f66c3b"
"url": "https://github.com/marc1706/phpbb-text-shortener.git",
"reference": "9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nickvergessen/phpbb-tool-trimmessage/zipball/2a3d8273dc1238dd06454688bcb6496f62f66c3b",
"reference": "2a3d8273dc1238dd06454688bcb6496f62f66c3b",
"url": "https://api.github.com/repos/marc1706/phpbb-text-shortener/zipball/9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69",
"reference": "9f0e4a7ae1a203cc73697f95a4d3bd3f3ff14d69",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
"php": ">=7.1.3"
},
"require-dev": {
"phpunit/phpunit": "4.1.*"
"phpunit/phpunit": "^7.0",
"symfony/yaml": "~3.4"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "Joas Schilling",
"email": "nickvergessen@gmx.de",
"homepage": "https://github.com/nickvergessen",
"role": "Developer"
}
],
"description": "This tool contains a class, that is able to trim a message from the phpbb message_parser to a maximum length without breaking the bbcodes/smilies and links.",
"homepage": "https://github.com/nickvergessen/phpbb-tool-trimmessage",
"time": "2014-07-06 19:42:34"
}
],
"packages-dev": [
{
"name": "gitonomy/gitlib",
"version": "v0.1.7",
"source": {
"type": "git",
"url": "https://github.com/gitonomy/gitlib.git",
"reference": "7a46107cfb8552b312101e0d5906e95d54d7ddc6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/gitonomy/gitlib/zipball/7a46107cfb8552b312101e0d5906e95d54d7ddc6",
"reference": "7a46107cfb8552b312101e0d5906e95d54d7ddc6",
"shasum": ""
},
"require": {
"symfony/process": "~2.4"
},
"require-dev": {
"psr/log": "~1"
},
"suggest": {
"psr/log": "Add some log"
},
"type": "library",
"autoload": {
"psr-0": {
"Gitonomy\\Git": [
"src/",
"tests/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alexandre Salomé",
"email": "alexandre.salome@gmail.com",
"homepage": "http://alexandre-salome.fr"
},
{
"name": "Julien DIDIER",
"email": "genzo.wm@gmail.com",
"homepage": "http://www.jdidier.net"
}
],
"description": "Library for accessing git",
"homepage": "http://gitonomy.com",
"time": "2014-07-13 19:02:31"
},
{
"name": "nikic/php-parser",
"version": "v0.9.5",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "ef70767475434bdb3615b43c327e2cae17ef12eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ef70767475434bdb3615b43c327e2cae17ef12eb",
"reference": "ef70767475434bdb3615b43c327e2cae17ef12eb",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=5.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.9-dev"
}
},
"autoload": {
"psr-0": {
"PHPParser": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2014-07-23 18:24:17"
},
{
"name": "phpbb/epv",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/phpbb/epv.git",
"reference": "07e017ea9d92581d5b83066469eb33b4b2a8f6ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpbb/epv/zipball/07e017ea9d92581d5b83066469eb33b4b2a8f6ed",
"reference": "07e017ea9d92581d5b83066469eb33b4b2a8f6ed",
"shasum": ""
},
"require": {
"gitonomy/gitlib": "0.1.*@dev",
"nikic/php-parser": "0.9.*@dev",
"php": ">=5.3.3",
"sensiolabs/ansi-to-html": "~1.1",
"symfony/console": ">=2.3.0",
"symfony/finder": ">=2.3.0",
"symfony/yaml": ">=2.3.0|>=2.4.0|>=2.5.0"
},
"require-dev": {
"phpunit/phpunit": "4.0.*"
},
"bin": [
"src/EPV.php"
],
"type": "library",
"autoload": {
"psr-4": {
"Phpbb\\Epv\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "Paul Sohier",
"email": "paul@phpbb.com"
}
],
"description": "A extension validator for phpBB extensions. Extensions are required to pass the validator when submitted to the extension database.",
"time": "2014-12-13 10:15:27"
},
{
"name": "sensiolabs/ansi-to-html",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/ansi-to-html.git",
"reference": "92d2ef7ffba5418be060d8ba8adaf7223d741f93"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/ansi-to-html/zipball/92d2ef7ffba5418be060d8ba8adaf7223d741f93",
"reference": "92d2ef7ffba5418be060d8ba8adaf7223d741f93",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"suggest": {
"twig/twig": "Provides nice templating features"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"autoload": {
"psr-0": {
"SensioLabs\\AnsiConverter": "."
"Marc1706\\TextShortener\\": "src",
"Marc1706\\TextShortener\\tests\\": "tests"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -232,221 +40,40 @@
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
"name": "Marc Alexander",
"email": "admin@m-a-styles.de",
"homepage": "https://www.m-a-styles.de",
"role": "Developer"
}
],
"description": "A library to convert a text with ANSI codes to HTML",
"time": "2014-08-01 14:02:39"
},
{
"name": "symfony/console",
"version": "v2.6.3",
"target-dir": "Symfony/Component/Console",
"source": {
"type": "git",
"url": "https://github.com/symfony/Console.git",
"reference": "6ac6491ff60c0e5a941db3ccdc75a07adbb61476"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Console/zipball/6ac6491ff60c0e5a941db3ccdc75a07adbb61476",
"reference": "6ac6491ff60c0e5a941db3ccdc75a07adbb61476",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/event-dispatcher": "~2.1",
"symfony/process": "~2.1"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/process": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Console\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"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"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Console Component",
"homepage": "http://symfony.com",
"time": "2015-01-06 17:50:02"
},
{
"name": "symfony/finder",
"version": "v2.6.3",
"target-dir": "Symfony/Component/Finder",
"source": {
"type": "git",
"url": "https://github.com/symfony/Finder.git",
"reference": "16513333bca64186c01609961a2bb1b95b5e1355"
"support": {
"issues": "https://github.com/marc1706/phpbb-text-shortener/issues",
"source": "https://github.com/marc1706/phpbb-text-shortener/tree/v0.3.0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Finder/zipball/16513333bca64186c01609961a2bb1b95b5e1355",
"reference": "16513333bca64186c01609961a2bb1b95b5e1355",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Finder\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Finder Component",
"homepage": "http://symfony.com",
"time": "2015-01-03 08:01:59"
},
{
"name": "symfony/process",
"version": "v2.6.3",
"target-dir": "Symfony/Component/Process",
"source": {
"type": "git",
"url": "https://github.com/symfony/Process.git",
"reference": "319794f611bd8bdefbac72beb3f05e847f8ebc92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Process/zipball/319794f611bd8bdefbac72beb3f05e847f8ebc92",
"reference": "319794f611bd8bdefbac72beb3f05e847f8ebc92",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Process\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Process Component",
"homepage": "http://symfony.com",
"time": "2015-01-06 22:47:52"
},
{
"name": "symfony/yaml",
"version": "v2.6.3",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
"reference": "82462a90848a52c2533aa6b598b107d68076b018"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/Yaml/zipball/82462a90848a52c2533aa6b598b107d68076b018",
"reference": "82462a90848a52c2533aa6b598b107d68076b018",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-0": {
"Symfony\\Component\\Yaml\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Yaml Component",
"homepage": "http://symfony.com",
"time": "2015-01-03 15:33:07"
"time": "2023-02-07T19:46:11+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"phpbb/epv": 20
},
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.3.3"
"php": ">=7.1.0,<8.3.0"
},
"platform-dev": []
"platform-dev": [],
"plugin-api-version": "1.1.0"
}

Binary file not shown.

View File

@@ -2,319 +2,324 @@ 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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- @template
- @user
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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
- '@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%
- '@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%
- '@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
- '@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
- '@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%
- '@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%
- '@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%
- '@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
- @dbal.conn
- @template
- @user
- %core.root_path%
- %core.php_ext%
- '@auth'
- '@config'
- '@dbal.conn'
- '@template'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: board3.portal.module }

View File

@@ -1,13 +1,15 @@
board3_portal_controller:
pattern: /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:
pattern: /
defaults: { _controller: board3.portal.main:handle }
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'

View File

@@ -1,121 +1,107 @@
imports:
- { resource: modules.yml }
parameters:
board3.version_data:
author: Marc
title: Board3 Portal
version: board3_portal_version
file:
- board3.de
- /updatecheck
- board3_portal.json
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
- @template
- @user
- @path_helper
- @board3.portal.helper
- %core.root_path%
- .%core.php_ext%
board3.portal.version.check:
class: board3\portal\includes\version_check
scope: prototype
arguments:
- %board3.version_data%
- @config
- @version_helper
- @template
- @user
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
- @request
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:
- @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.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
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'

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -26,6 +26,9 @@ class helper
*/
protected $config;
/** @var \phpbb\language\language */
protected $language;
/**
* Template object
* @var \phpbb\template
@@ -84,6 +87,7 @@ class helper
* @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
@@ -91,11 +95,12 @@ class helper
* @param string $phpbb_root_path phpBB root path
* @param string $php_ext PHP file extension
*/
public function __construct($auth, $portal_columns, $config, $template, $user, $path_helper, $portal_helper, $phpbb_root_path, $php_ext)
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;
@@ -103,7 +108,7 @@ class helper
$this->php_ext = $php_ext;
$this->portal_helper = $portal_helper;
$this->root_path = $phpbb_root_path . 'ext/board3/portal/';
$this->root_path = str_replace($this->path_helper->get_web_root_path(), '', $phpbb_root_path . 'ext/board3/portal/');
}
/**
@@ -114,7 +119,7 @@ class helper
*/
protected function check_permission()
{
if (!isset($this->config['board3_enable']) || !$this->config['board3_enable'] || !$this->auth->acl_get('u_view_portal'))
if (empty($this->config['board3_enable']) || !$this->auth->acl_get('u_view_portal'))
{
redirect(append_sid($this->phpbb_root_path . 'index' . $this->php_ext));
}
@@ -173,7 +178,9 @@ class helper
}
/**
* Check if user is in required groups
* 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
*
@@ -204,11 +211,11 @@ class helper
// Load language file from vendor if specified
if (is_array($language_file))
{
$this->user->add_lang_ext($language_file['vendor'], $language_file['file']);
$this->language->add_lang($language_file['file'], $language_file['vendor']);
}
else
{
$this->user->add_lang_ext('board3/portal', 'modules/' . $language_file);
$this->language->add_lang('modules/' . $language_file, 'board3/portal');
}
}
}
@@ -223,27 +230,36 @@ class helper
*/
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' => 'portal/modules/' . $template_module['template'],
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $template_module['image_src'],
'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' => 'portal/modules/' . $template_module,
'IMAGE_SRC' => $this->path_helper->get_web_root_path() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $row['module_image_src'],
'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,
));
}
}
@@ -259,9 +275,26 @@ class helper
$this->check_permission();
// Load language file
$this->user->add_lang_ext('board3/portal', 'portal');
$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;
}
}

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -80,6 +80,12 @@ class main
*/
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
@@ -111,8 +117,11 @@ class main
$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;
define('PORTAL_MODULES_TABLE', $modules_table);
define('PORTAL_CONFIG_TABLE', $config_table);
if (!defined('PORTAL_MODULES_TABLE'))
{
define('PORTAL_MODULES_TABLE', $modules_table);
define('PORTAL_CONFIG_TABLE', $config_table);
}
if (!function_exists('obtain_portal_config'))
{
@@ -123,12 +132,27 @@ class main
/**
* 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()
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;
@@ -181,6 +205,14 @@ class main
// 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);
@@ -206,9 +238,16 @@ class main
public function get_module_template($row, $module)
{
$template_module = false;
$column = $this->portal_columns->number_to_string($row['module_column']);
if (in_array($column, array('left', 'right')) && $this->config['board3_' . $column . '_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']);
@@ -222,6 +261,18 @@ class main
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
*/
@@ -252,7 +303,7 @@ class main
'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() . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/',
'T_EXT_THEME_PATH' => $this->path_helper->get_web_root_path() . ltrim($this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/', './'),
));
}
@@ -266,7 +317,7 @@ class main
*/
protected function check_module_count($column, $config = true)
{
return $this->module_count[$column] > 0 && $config;
return $this->module_count[$column] > 0 && ($config || $this->allowed_columns);
}
/**
@@ -282,4 +333,36 @@ class main
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;
}
}
}

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -13,6 +13,9 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
/** @var \board3\portal\controller\main */
protected $board3_controller;
/** @var \phpbb\auth\auth */
protected $auth;
@@ -37,6 +40,7 @@ class listener implements EventSubscriberInterface
/**
* 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
@@ -45,8 +49,9 @@ class listener implements EventSubscriberInterface
* @param \phpbb\user $user User object
* @param string $php_ext phpEx
*/
public function __construct(\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)
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;
@@ -61,12 +66,13 @@ class listener implements EventSubscriberInterface
*
* @return array
*/
static public function getSubscribedEvents()
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',
);
}
@@ -106,16 +112,22 @@ class listener implements EventSubscriberInterface
*
* @return null
*/
public function add_portal_link()
public function add_portal_link($event)
{
if (!$this->has_portal_access())
{
return;
}
if (strpos($this->user->data['session_page'], '/portal') === false)
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
{
@@ -136,4 +148,50 @@ class listener implements EventSubscriberInterface
{
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;
}
}

57
ext.php
View File

@@ -1,16 +1,63 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
// This file is needed for phpBB3 to properly register the extension
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&amp;mode=main'));
}
}

View File

@@ -1,16 +1,16 @@
<?php
// @codingStandardsIgnoreFile
/**
*
* @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
* @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
* @codingStandardsIgnoreFile
*/
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
@@ -71,49 +71,28 @@ function set_portal_config($config_name, $config_value)
/**
* Get portal modules
*
* @return array Portal modules array
*/
function obtain_portal_modules()
{
global $db, $cache, $portal_modules;
global $db;
if (($portal_modules = $cache->get('portal_modules')) === false || defined('DEBUG'))
$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 = $portal_cached_modules = array();
$sql = 'SELECT *
FROM ' . PORTAL_MODULES_TABLE . '
ORDER BY module_order ASC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$portal_cached_modules[] = $row;
$portal_modules[] = $row;
}
$db->sql_freeresult($result);
$cache->put('portal_modules', $portal_cached_modules);
$portal_modules[] = $row;
}
$db->sql_freeresult($result);
return $portal_modules;
}
/**
* Fetch post for news & announce
*
* @deprecated 2.1.0-b1 (To be removed: 2.2.0)
*/
function phpbb_fetch_posts($module_id, $forum_from, $permissions, $number_of_posts, $text_length, $time, $type, $start = 0, $invert = false)
{
global $phpbb_container;
$fetch_posts = $phpbb_container->get('board3.portal.fetch_posts');
$fetch_posts->set_module_id($module_id);
return $fetch_posts->get_posts($forum_from, $permissions, $number_of_posts, $text_length, $time, $type, $start, $invert);
}
/**
* Censor title, return short title
*
@@ -134,27 +113,6 @@ function character_limit(&$title, $limit = 0)
}
}
/**
* Cut post text to given length
*
* @param string $message post text
* @param string $bbcode_uid bbcode uid
* @param int $length The desired length
*
* @return string Shortened message
*/
function get_sub_taged_string($message, $bbcode_uid, $length)
{
if (class_exists('\Nickvergessen\TrimMessage\TrimMessage'))
{
$trim = new \Nickvergessen\TrimMessage\TrimMessage($message, $bbcode_uid, $length);
$message = $trim->message();
unset($trim);
}
return $message;
}
function ap_validate($str)
{
$s = str_replace('<br />', '<br/>', $str);
@@ -200,7 +158,7 @@ function generate_portal_pagination($base_url, $num_items, $per_page, $start_ite
$on_page = floor($start_item / $per_page) + 1;
$url_delim = (strpos($base_url, '?') === false) ? '?' : '&amp;';
$page_string = ($on_page == 1) ? '<ul><li class="active"><span>1</span></li>' : '<ul><li><a href="' . $base_url . $anker .'">1</a></li>';
$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)
{
@@ -212,7 +170,7 @@ function generate_portal_pagination($base_url, $num_items, $per_page, $start_ite
for ($i = $start_cnt + 1; $i < $end_cnt; ++$i)
{
$page_string .= ($i == $on_page) ? '<li class="active"><span>' . $i . '</span></li>' : '<li><a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '">' . $i . '</a></li>';
$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;
@@ -228,25 +186,25 @@ function generate_portal_pagination($base_url, $num_items, $per_page, $start_ite
for ($i = 2; $i < $total_pages; ++$i)
{
$page_string .= ($i == $on_page) ? '<li class="active"><span>' . $i . '</span></li>' : '<li><a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($i - 1) * $per_page) . $anker . '">' . $i . '</a></li>';
$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 href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($total_pages - 1) * $per_page) . $anker . '">' . $total_pages . '</a></li></ul>';
$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 href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker . '">' . $user->lang['PREVIOUS'] . '</a>&nbsp;&nbsp;' . $page_string;
$page_string = '<a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . (($on_page - 2) * $per_page) . $anker . '" role="button">' . $user->lang['PREVIOUS'] . '</a>&nbsp;&nbsp;' . $page_string;
}
if ($on_page != $total_pages)
{
$page_string .= '&nbsp;&nbsp;<a href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker . '">' . $user->lang['NEXT'] . '</a>';
$page_string .= '&nbsp;&nbsp;<a class="button" href="' . $base_url . "{$url_delim}" . $pagination_type . '=' . ($on_page * $per_page) . $anker . '" role="button">' . $user->lang['NEXT'] . '</a>';
}
}
@@ -263,29 +221,6 @@ function generate_portal_pagination($base_url, $num_items, $per_page, $start_ite
return $page_string;
}
/**
* Check if table exists
* @copyright (c) 2007 phpBB Group
*
* @param string $table_name The table name to check for
* @return bool true if table exists, else false
*/
function sql_table_exists($table_name)
{
global $db;
$db->sql_return_on_error(true);
$result = $db->sql_query_limit('SELECT * FROM ' . $db->sql_escape($table_name), 1);
$db->sql_return_on_error(false);
if ($result)
{
$db->sql_freeresult($result);
return true;
}
return false;
}
/**
* get topic tracking info for news
* based on get_complete_tracking_info of phpBB3
@@ -318,9 +253,9 @@ function get_portal_tracking_info($fetch_news)
$mark_time = array();
$sql = 'SELECT topic_id, mark_time
FROM ' . TOPICS_TRACK_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND " . $db->sql_in_set('topic_id', $current_forum);
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))
@@ -334,9 +269,9 @@ function get_portal_tracking_info($fetch_news)
if (sizeof($topic_ids))
{
$sql = 'SELECT forum_id, mark_time
FROM ' . FORUMS_TRACK_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND " . $db->sql_in_set('forum_id', $forum_ids);
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))
@@ -345,10 +280,10 @@ function get_portal_tracking_info($fetch_news)
}
$db->sql_freeresult($result);
// @todo: do not use $current_forum here as this is already used by the outside foreach
foreach($forum_ids as $current_forum)
// Set user last mark time
foreach ($forum_ids as $current_forum_id)
{
$user_lastmark[$current_forum] = (isset($mark_time[$current_forum])) ? $mark_time[$current_forum] : $user->data['user_lastmark'];
$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
@@ -433,36 +368,24 @@ function get_portal_tracking_info($fetch_news)
*/
function check_file_src($value, $key, $module_id, $force_error = true)
{
global $db, $phpbb_root_path, $phpEx, $user;
global $phpbb_admin_path, $portal_root_path, $phpEx, $user;
$error = '';
// We check if the chosen file is present in all active styles
$sql = 'SELECT style_path
FROM ' . STYLES_TABLE . '
WHERE style_active = 1';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
// 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))
{
if (!file_exists($phpbb_root_path . 'styles/' . $row['style_path'] . '/theme/images/portal/' . $value) &&
!file_exists($phpbb_root_path . 'ext/board3/portal/styles/' . $row['style_path'] . '/theme/images/portal/' . $value))
{
$error .= $user->lang['B3P_FILE_NOT_FOUND'] . ': styles/' . $row['style_path'] . '/theme/images/portal/' . $value . '<br />';
}
$error .= $user->lang('B3P_FILE_NOT_FOUND') . ': styles/all/theme/images/portal/' . $value . '<br />';
}
$db->sql_freeresult($result);
if (!empty($error))
{
if ($force_error)
{
trigger_error($error . adm_back_link(append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=\board3\portal\acp\portal_module&amp;mode=config&amp;module_id=' . $module_id)), E_USER_WARNING);
}
else
{
return $error;
trigger_error($error . adm_back_link(append_sid("{$phpbb_admin_path}index.$phpEx", 'i=\board3\portal\acp\portal_module&amp;mode=config&amp;module_id=' . $module_id)), E_USER_WARNING);
}
return $error;
}
else
{
@@ -483,13 +406,15 @@ function get_user_groups()
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))
while ($row = $db->sql_fetchrow($result))
{
$groups_ary[] = $row['group_id'];
}

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -25,6 +25,9 @@ class modules_helper
*/
protected $config;
/** @var \phpbb\db\driver\driver_interface */
protected $db;
/** @var \phpbb\controller\helper Controller helper */
protected $controller_helper;
@@ -34,6 +37,9 @@ class modules_helper
*/
protected $request;
/** @var string Styles table */
protected $styles_table;
/**
* Constructor
* NOTE: The parameters of this method must match in order and type with
@@ -41,14 +47,18 @@ class modules_helper
* @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, $request)
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;
}
/**
@@ -78,14 +88,16 @@ class modules_helper
* @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)
public function generate_select_box($key, $select_ary, $selected_options, $multiple = false)
{
// Build options
$options = '<select id="' . $key . '" name="' . $key . '[]" multiple="multiple">';
$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>';
@@ -109,7 +121,7 @@ class modules_helper
$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)
if (isset($this->config[$key]) && strlen($this->config[$key]) > 0)
{
$selected_options = explode(',', $this->config[$key]);
}
@@ -124,7 +136,7 @@ class modules_helper
);
}
return $this->generate_select_box($key, $select_ary, $selected_options);
return $this->generate_select_box($key, $select_ary, $selected_options, true);
}
/**
@@ -158,4 +170,72 @@ class modules_helper
{
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));
}
}

View File

@@ -1,110 +0,0 @@
<?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
*
*/
namespace board3\portal\includes;
class version_check
{
/**
* @var array version_data
*/
protected $version_data;
/**
* @var \phpbb\config\config
*/
protected $config;
/**
* @var \phpbb\version_helper $version_helper phpBB version helper
*/
protected $version_helper;
/**
* @var \phpbb\template\twig\twig
*/
protected $template;
/**
* @var \phpbb\user
*/
protected $user;
/**
* @var string Current version
*/
protected $current_version;
/**
* Construct a version_check object
*
* @param array $version_data Version data
* @param \phpbb\config\config $config phpBB config
* @param \phpbb\version_helper $version_helper phpBB version helper
* @param \phpbb\template\twig\twig $template phpBB template object
* @param \phpbb\user $user phpBB user object
*/
public function __construct($version_data, $config, $version_helper, $template, $user)
{
$this->version_data = $version_data;
$this->config = $config;
$this->version_helper = $version_helper;
$this->template = $template;
$this->user = $user;
$this->current_version = $this->config[str_replace(' ', '', $this->version_data['version'])];
}
/**
* Check MOD version and assign template variables for version info if not
* returning current version
*
* @param bool $return_version Yes if current version should be returned
* @return string Current version if $return_version is set to true
*/
public function check($return_version = false)
{
// Set file location
$this->version_helper->set_file_location($this->version_data['file'][0], $this->version_data['file'][1], $this->version_data['file'][2]);
// Set current version
$this->version_helper->set_current_version($this->current_version);
$this->version_helper->force_stability(($this->config['extension_force_unstable'] || !$this->version_helper->is_stable($this->current_version)) ? 'unstable' : null);
$updates = $this->version_helper->get_suggested_updates(true);
// Return version if $return_version is set to true
if ($return_version)
{
return $this->current_version;
}
$version_up_to_date = empty($updates);
$template_data = array(
'AUTHOR' => $this->version_data['author'],
'CURRENT_VERSION' => $this->current_version,
'UP_TO_DATE' => sprintf((!$version_up_to_date) ? $this->user->lang['NOT_UP_TO_DATE'] : $this->user->lang['UP_TO_DATE'], $this->version_data['title']),
'S_UP_TO_DATE' => $version_up_to_date,
'U_AUTHOR' => 'http://www.phpbb.com/community/memberlist.php?mode=viewprofile&un=' . $this->version_data['author'],
'TITLE' => (string) $this->version_data['title'],
'LATEST_VERSION' => $this->current_version,
);
if (!$version_up_to_date)
{
$updates = array_shift($updates);
$template_data = array_merge($template_data, array(
'ANNOUNCEMENT' => (string) $updates['announcement'],
'DOWNLOAD' => (string) $updates['download'],
'LATEST_VERSION' => $updates['current'],
));
}
$this->template->assign_block_vars('mods', $template_data);
}
}

View 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 />&raquo; تم إضافة الرابط : %s ',
'LOG_PORTAL_LINK_UPDATED' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; تم تحديث الرابط : %s ',
'LOG_PORTAL_LINK_REMOVED' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; تم إزالة الرابط : %s ',
'LOG_PORTAL_EVENT_ADDED' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; تم إضافة حدث : %s ',
'LOG_PORTAL_EVENT_UPDATED' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; تم تحديث حدث : %s ',
'LOG_PORTAL_EVENT_REMOVED' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; تم إزالة حدث : %s ',
'LOG_PORTAL_CONFIG' => '<strong>تغيير إعدادات المجلة</strong><br />&raquo; %s',
));

View 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 />يُنصح بإختيار "لا" في حالة وجود مشاكل في ظهور الأعمدة الإضافية والتي تتطلب مساحة أكبر.',
));

View 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' => 'اختار "نعم" إذا تريد استثناء أنواع الملفات التي حددتها في الخيار أعلاه ( أنواع الملفات ). اختار "لا" لتعطيل هذا الخيار.',
));

View 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 />القيمة صفر تعني تعطيل قائمة أعياد الميلاد.',
));

View 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 />&raquo; %s',
'LOG_PORTAL_EVENT_ADDED' => '<strong>تم إضافة الحدث في المجلة</strong><br />&raquo; %s',
'LOG_PORTAL_EVENT_REMOVED' => '<strong>تم حذف الحدث في المجلة</strong><br />&raquo; %s',
));

View 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* يعني إسم الإستايل الذي تستخدمه.',
));

View 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.',
));

View 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' => 'العُملة التي سيتم تحديدها افتراضياً في القائمة المُنسدلة للعُملات.'
));

View 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' => 'قائمة المنتديات',
));

View 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' => 'الحد الأقصى لعدد الأصدقاء الذين سيتم عرضهم في الموديل.',
));

View 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' => 'عدد محركات البحث الذي تريد عرضهم في الموديل. القيمة صفر تعني عدد غير محدود',
));

View 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' => 'الحد الأقصى لعدد آخر الأعضاء المُسجلين الذين سيتم عرضهم. الصفر يعني عدد غير محدود',
));

View 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' => 'العرض القياسي سيكون لجميع المدراء والمشرفين , بينما العرض الموسع سيتضمن جميع المجموعات الغير المخفية في ألوان المجموعات.',
));

View 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 التالي في موقعك :',
));

View 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' => 'يجب عليك إضافة عنوان الرابط.',
));

View 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' => 'يجب عليك إضافة الرابط.',
));

View 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 />يُنصح بإختيار "لا" في حالة وجود مشاكل في ظهور الأعمدة الإضافية والتي تتطلب مساحة أكبر.',
));

View 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' => 'إخفاء التصويتات المُنتهية ',
));

View 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' => 'صفحة الموقع ',
));

View 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' => 'اختار "نعم" إذا تريد استثناء آخر المواضيع من المنتديات التي حددتها في الخيار أعلاه ( المنتديات ). اختار "لا" لتعطيل هذا الخيار.',
));

View 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' => 'بحث مُتقدم',
));

View 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>',
));

View 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' => 'حدد الإستايل',
));

View 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' => 'أدخل عدد الأعضاء الذين تريد عرضهم في موديل أكثر الأعضاء نشاطاً.',
));

View 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' => 'عرض رابط التسجيل في قائمة العضو',
));

View 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 / الصور / الروابط مسموح بها.',
));

View 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' => 'الأعضاء الموجودون الآن',
));

View 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
View 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
View 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' => 'جاري حذف الموديلات من قاعدة البيانات',
));

View 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',
]);

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -47,8 +47,4 @@ $lang = array_merge($lang, array(
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Termin geändert: %s ',
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Termin gelöscht: %s ',
'LOG_PORTAL_CONFIG' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; %s',
// Adding the permissions
'ACL_A_MANAGE_PORTAL' => 'Kann Portal-Einstellungen ändern',
'ACL_U_VIEW_PORTAL' => 'Kann das Portal sehen',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Announcements
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @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
$lang = array_merge($lang, array(
'LATEST_ANNOUNCEMENTS' => 'Letzte Bekanntmachung',
'GLOBAL_ANNOUNCEMENTS' => 'Global Bekanntmachungen',
'GLOBAL_ANNOUNCEMENTS' => 'Globale Bekanntmachungen',
'GLOBAL_ANNOUNCEMENT' => 'Globale Bekanntmachung',
'VIEW_LATEST_ANNOUNCEMENT' => '1 Bekanntmachung',
'VIEW_LATEST_ANNOUNCEMENTS' => '%d Bekanntmachungen',

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Attachments
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Birthday List
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Calendar
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Clock
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Custom
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -37,7 +37,7 @@ $lang = array_merge($lang, array(
// ACP
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
'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_CODE' => 'Code für den eigenen Block',
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Ändere den Code für deinen eigenen Block (HTML oder BBCode).',

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Donation
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -57,9 +57,11 @@ $lang = array_merge($lang, array(
'ILS' => 'Neue Israelische Schekel (ILS)',
// 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.',
'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_CUSTOM' => 'Benutzername an die Paypal Zahlung anhängen',
'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.'
));

View File

@@ -1,9 +1,9 @@
<?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
* @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)
*
*/
@@ -33,4 +33,5 @@ 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
$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>',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Friends
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Latest Bots
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Latest Members
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Leaders
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @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)
*
*/
@@ -33,5 +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
$lang = array_merge($lang, array(
'LINK_US' => 'Link zu uns ',
'LINK_US_TXT' => 'Benutze bitte diesen Link um <strong>%s</strong> bei dir zu verlinken:',
'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:',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Links
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -48,7 +48,7 @@ $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_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_LINKS_NEW_WINDOW' => 'Öffne externe Verknüpfungen in einem neuen Fenster',
'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.',

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Main Menu
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - News
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Poll
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Random Member
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?php
/**
*
* @package Board3 Portal v2.1 - Recent Module
* @copyright (c) 2013 Board3 Group ( www.board3.de )
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
* @package Board3 Portal v2.3 - Recent Module
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Search
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -38,5 +38,5 @@ $lang = array_merge($lang, array(
'PORTAL_SEARCH_POSTS' => 'Beiträge',
'PORTAL_SEARCH_AUTHOR' => 'Autor',
'PORTAL_SEARCH_ENGINE' => 'Suchmaschinen',
'PORTAL_SEARCH_ADV' => 'erweiterte Suche',
'PORTAL_SEARCH_ADV' => 'Erweiterte Suche',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Statistics
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Stylechanger
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Topposters
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - User Menu
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Welcome
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -36,7 +36,7 @@ $lang = array_merge($lang, array(
// ACP
'ACP_PORTAL_WELCOME_SETTINGS' => 'Einstellungen für die Willkommens-Nachricht',
'ACP_PORTAL_WELCOME_MESSAGE_SHORT' => 'Die eingegebene Nachricht ist nicht lang genug.',
'TOO_FEW_CHARS' => 'Die eingegebene Nachricht ist nicht lang genug.',
'ACP_PORTAL_WELCOME_PREVIEW' => 'Willkommens-Nachricht Vorschau',
'ACP_PORTAL_WELCOME_MESSAGE' => 'Willkommens-Nachricht',
'ACP_PORTAL_WELCOME_MESSAGE_EXP' => 'Du kannst die Willkommens-Nachricht in der Textbox verändern. BBCode, Bilder und Links sind erlaubt.',

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3 - Who is online
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/

View File

@@ -0,0 +1,39 @@
<?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(
// Adding the permissions
'ACL_A_MANAGE_PORTAL' => 'Kann Portal-Einstellungen <20>ndern',
'ACL_U_VIEW_PORTAL' => 'Kann das Portal sehen',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -37,4 +37,5 @@ $lang = array_merge($lang, array(
'PORTAL' => 'Portal',
'VIEWING_PORTAL' => 'Betrachtet das Portal',
'BACK' => 'Zurück',
'B3P_WRONG_METHOD_CALL' => 'Falscher Aufruf der Methode %s',
));

View File

@@ -1,9 +1,9 @@
<?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
* @package Board3 Portal v2.3
* @copyright (c) 2023 Board3 Group ( www.board3.de )
* @license GNU General Public License, version 2 (GPL-2.0-only)
*
*/
@@ -51,6 +51,7 @@ $lang = array_merge($lang, array(
'MOVE_RIGHT' => 'Nach rechts',
'MOVE_LEFT' => 'Nach links',
'B3P_FILE_NOT_FOUND' => 'Die angegebene Datei konnte nicht gefunden werden',
'UNABLE_TO_ADD_MODULE' => 'Es ist nicht möglich den Block in die gewählte Spalte hinzuzufügen.',
'UNABLE_TO_MOVE' => 'Es ist nicht möglich den Block in die gewählte Spalte zu verschieben.',
'UNABLE_TO_MOVE_ROW' => 'Es ist nicht möglich den Block in die gewählte Reihe zu verschieben.',
'DELETE_MODULE_CONFIRM' => 'Bist du sicher, dass du das Modul "%1$s" löschen möchtest?',
@@ -62,15 +63,15 @@ $lang = array_merge($lang, array(
'MODULE_NAME' => 'Modul Name',
'MODULE_NAME_EXP' => 'Gebe den Namen ein der für das Modul in der Modul Konfiguration angezeigt werden soll.',
'MODULE_IMAGE' => 'Modul Bild',
'MODULE_IMAGE_EXP' => 'Gebe den Dateinamen des Modul Bildes ein. Das Bild muss sich in allen styles/{Dein Style}/theme/images/portal/ Ordnern befinden.',
'MODULE_IMAGE_EXP' => 'Gebe den Dateinamen des Modul Bildes ein. Das Bild muss sich im Verzeichnis styles/all/theme/images/portal/ befinden.',
'MODULE_PERMISSIONS' => 'Modul Berechtigungen',
'MODULE_PERMISSIONS_EXP' => 'Wähle die Gruppen aus, die berechtigt sein sollen, das Modul zu sehen. Sollen alle Benutzer das Modul sehen können, wähle nichts aus.<br />An- / abwählen mehrerer Gruppen indem man <samp>Strg</samp> gedrückt hält und klickt.',
'MODULE_IMAGE_WIDTH' => 'Modul Bild Breite',
'MODULE_IMAGE_WIDTH_EXP' => 'Gebe die breite des Modul Bildes in Pixeln ein',
'MODULE_IMAGE_WIDTH_EXP' => 'Gebe die breite des Modul Bildes in Pixeln ein.<br>Wenn kein Modul Bild gewünscht, gebe <strong>0</strong> als Wert ein.',
'MODULE_IMAGE_HEIGHT' => 'Modul Bild Höhe',
'MODULE_IMAGE_HEIGHT_EXP' => 'Gebe die Höhe des Modul Bildes in Pixeln ein',
'MODULE_IMAGE_HEIGHT_EXP' => 'Gebe die Höhe des Modul Bildes in Pixeln ein.',
'MODULE_RESET' => 'Modul Einstellungen zurücksetzen',
'MODULE_RESET_EXP' => 'Dies wird alle Einstellungen des Moduls auf die Standardeinstellungen zurücksetzen!',
'MODULE_RESET_EXP' => 'Dies wird alle Einstellungen des Moduls auf die Standardeinstellungen zurücksetzen!<br>Aus technischen Gründen muss nach dem Zurücksetzen auf die Standardeinstellungen, das FA Icon erneut eingeben werden!<br>Passende Icons können der <a href="https://github.com/board3/Board3-Portal/wiki#empfohlene-fa-icons--recommended-fa-icons" target="_blank" rel="noopener noreferrer"><strong>Liste empfohlener FA-Icons</strong></a> entnommen werden.',
'MODULE_STATUS' => 'Aktiviere Modul',
'MODULE_ADD_ONCE' => 'Diese Modul kann nur ein Mal hinzugefügt werden.',
'MODULE_IMAGE_ERROR' => 'Während dem Prüfen des Modul Bildes sind ein oder mehrere Fehler aufgetreten:',
@@ -80,20 +81,25 @@ $lang = array_merge($lang, array(
'ACP_PORTAL_CONFIG_INFO' => 'Allgemeine Einstellungen',
'ACP_PORTAL_GENERAL_TITLE' => 'Portal Verwaltung',
'ACP_PORTAL_GENERAL_TITLE_EXP' => 'Danke, dass du dich für board3 Portal entschieden hast. Auf dieser Seite kannst du dein Portal verwalten. Diese Anzeige gibt dir einen schnellen Überblick über die verschiedenen Portal-Einstellungen.',
'ACP_PORTAL_SHOW_ALL' => 'Zeige portal auf allen Seiten',
'ACP_PORTAL_SHOW_ALL_EXP' => 'Zeigt das Portal auf allen Seiten des Forums an.',
'PORTAL_ENABLE' => 'Portal aktivieren',
'PORTAL_ENABLE_EXP' => 'Wenn deaktiviert, wird das komplette Portal abgeschaltet.',
'PORTAL_LEFT_COLUMN' => 'Linke Spalte aktivieren',
'PORTAL_LEFT_COLUMN_EXP' => 'Die Linke Spalte auf dem Portal anzeigen',
'PORTAL_RIGHT_COLUMN' => 'Rechte Spalte aktivieren',
'PORTAL_RIGHT_COLUMN_EXP' => 'Die Rechte Spalte auf dem Portal anzeigen',
'PORTAL_VERSION_CHECK' => 'Versioncheck auf Portal',
'ACP_PORTAL_COLUMN_WIDTH_SETTINGS' => 'Breiteneinstellung der rechten und linken Spalte',
'PORTAL_LEFT_COLUMN_WIDTH' => 'Breite der linken Spalte',
'PORTAL_LEFT_COLUMN_WIDTH_EXP' => 'Ändere hier die Breite der linken Spalte in Pixel, empfohlener Wert 180',
'PORTAL_RIGHT_COLUMN_WIDTH' => 'Breite der rechten Spalte',
'PORTAL_RIGHT_COLUMN_WIDTH_EXP' => 'Ändere hier die Breite der rechten Spalte in Pixel, empfohlener Wert 180',
'PORTAL_DISPLAY_JUMPBOX' => 'Zeige Jumpbox',
'PORTAL_DISPLAY_JUMPBOX_EXP' => 'Die Jumpbox auf dem Portal anzeigen. Die Jumpbox wird nur angezeigt, wenn sie gleichzeitig in den Board-Funktionalitäten aktiviert ist.',
'PORTAL_DISPLAY_JUMPBOX_EXP' => 'Die Jumpbox auf dem Portal anzeigen. Die Jumpbox wird nur angezeigt, wenn sie gleichzeitig unter Server-Konfiguration/Serverlast aktiviert ist.',
'PORTAL_SHOW_ALL_SIDE' => 'Spalte die auf allen Seiten angezeigt werden soll',
'PORTAL_SHOW_ALL_SIDE_EXP' => 'Wähle welche Spalte auf allen seiten des Portals angezeigt werden soll.',
'PORTAL_SHOW_ALL_LEFT' => 'Links',
'PORTAL_SHOW_ALL_RIGHT' => 'Rechts',
'LINK_ADDED' => 'Der Link wurde erfolgreich eingetragen',
'LINK_UPDATED' => 'Der Link wurde erfolgreich geändert',
@@ -102,16 +108,11 @@ $lang = array_merge($lang, array(
'PORTAL_BASIC_INSTALL' => 'Füge Basismodule hinzu',
'PORTAL_BASIC_UNINSTALL' => 'Entferne Module von Datenbank',
/**
* A copy of Handyman` s MOD version check, to view it on the gallery overview
*/
'ANNOUNCEMENT_TOPIC' => 'Release Ankündigung',
'CURRENT_VERSION' => 'Derzeitige Version',
'DOWNLOAD_LATEST' => 'Neueste Version herunterladen',
'LATEST_VERSION' => 'Neueste Version',
'NO_INFO' => 'Der Server konnte nicht erreicht werden',
'NOT_UP_TO_DATE' => '%s ist nicht aktuell',
'RELEASE_ANNOUNCEMENT' => 'Ankündigungsthema',
'UP_TO_DATE' => '%s ist aktuell',
'VERSION_CHECK' => 'Extension Version Check',
// Font Awesome
'ACP_FA' => 'Font Awesome Styles',
'ACP_FA_EXP' => 'Hier kannst du einstellen welche Styles Font Awesome Icons nutzen sollen.',
'MODULE_FA' => 'Font Awesome Icon',
'MODULE_FA_EXP' => 'Hier kannst du ein <a href="https://fontawesome.com/v4.7.0/icons/" target="_blank" rel="noopener noreferrer"><strong>Font Awesome</strong></a> Icon einstellen. Dieses wird verwendet wenn der Style Font Awesome verwendet.',
'MODULE_FA_SIZE' => 'Font Awesome Icongröße',
'MODULE_FA_SIZE_EXP' => 'Hier kannst du die Größe des Font Awesome Icons einstellen (in Pixel).',
));

View 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üfen Sie 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',
]);

View 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 = [];
}
// 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, [
'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 />&raquo; Link hinzugefügt: %s ',
'LOG_PORTAL_LINK_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Link geändert: %s ',
'LOG_PORTAL_LINK_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Link gelöscht: %s ',
'LOG_PORTAL_EVENT_ADDED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Termin eingetragen: %s ',
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Termin geändert: %s ',
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; Termin gelöscht: %s ',
'LOG_PORTAL_CONFIG' => '<strong>Portal-Einstellungen geändert</strong><br />&raquo; %s',
]);

View File

@@ -0,0 +1,74 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Announcements
* @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, [
'LATEST_ANNOUNCEMENTS' => 'Letzte Bekanntmachung',
'GLOBAL_ANNOUNCEMENT' => 'Globale Bekanntmachung',
'GLOBAL_ANNOUNCEMENTS' => 'Globale Bekanntmachungen',
'VIEW_LATEST_ANNOUNCEMENT' => '1 Bekanntmachung',
'VIEW_LATEST_ANNOUNCEMENTS' => '%d Bekanntmachungen',
'READ_FULL' => 'alles lesen',
'NO_ANNOUNCEMENTS' => 'Keine Bekanntmachung',
'POSTED_BY' => 'Autor',
'COMMENTS' => 'Kommentare',
'VIEW_COMMENTS' => 'Kommentare anzeigen',
'PORTAL_POST_REPLY' => 'Kommentar schreiben',
'TOPIC_VIEWS' => 'Zugriffe',
'JUMP_NEWEST' => 'Zum letzten Beitrag springen',
'JUMP_FIRST' => 'Zum ersten Beitrag springen',
'JUMP_TO_POST' => 'Rufe den Beitrag auf',
// ACP
'ACP_PORTAL_ANNOUNCE_SETTINGS' => 'Einstellungen für Bekanntmachungen',
'ACP_PORTAL_ANNOUNCE_SETTINGS_EXP' => 'Hier können Sie die Einstellungen für die Bekanntmachungen ändern.',
'PORTAL_ANNOUNCEMENTS' => 'Bekanntmachungen anzeigen',
'PORTAL_ANNOUNCEMENTS_EXP' => 'Diesen Block auf dem Portal anzeigen.',
'PORTAL_ANNOUNCEMENTS_STYLE' => 'Kompakter Bekanntmachungen-Block-Stil',
'PORTAL_ANNOUNCEMENTS_STYLE_EXP' => 'Wenn "ja" ausgewählt ist, wird die kompakte Ansicht für die Bekanntmachungen angezeigt, bei "nein" die große Ansicht.',
'PORTAL_NUMBER_OF_ANNOUNCEMENTS' => 'Anzahl der Bekanntmachungen auf dem Portal',
'PORTAL_NUMBER_OF_ANNOUNCEMENTS_EXP' => '0 bedeutet unbegrenzt',
'PORTAL_ANNOUNCEMENTS_DAY' => 'Die Anzahl der Tage, während der die Bekanntmachung angezeigt werden soll',
'PORTAL_ANNOUNCEMENTS_DAY_EXP' => '0 bedeutet unbegrenzt',
'PORTAL_ANNOUNCEMENTS_LENGTH' => 'Maximale Länge der Bekanntmachungen',
'PORTAL_ANNOUNCEMENTS_LENGTH_EXP' => '0 bedeutet unbegrenzt',
'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 ausschließen" auf "Ja" steht, wählen Sie die Foren die Sie ausschließen möchten.<br />Falls "Foren ausschließen" auf "Nein" steht, wählen Sie die Foren die Sie sehen möchten.<br />Wählen Sie mehrere Foren aus/ab, indem Sie beim Klicken die <samp>Strg</samp>-Taste drückst.',
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE_EXP' => 'Wählen Sie "Ja" wenn Sie die ausgewählten Foren vom Bekanntmachungen-Block ausschließen möchten, und "Nein" wenn Sie nur die Bekanntmachungen aus den ausgewählten Foren im Bekanntmachungen-Block sehen möchten.',
'PORTAL_ANNOUNCEMENTS_PERMISSIONS' => 'Berechtigungen prüfen anschalten?',
'PORTAL_ANNOUNCEMENTS_PERMISSIONS_EXP' => 'Berücksichtigt Berechtigungen beim Anzeigen der Bekanntmachungen',
'PORTAL_ANNOUNCEMENTS_ARCHIVE' => 'Das Archivsystem für die Bekanntmachungen aktivieren',
'PORTAL_ANNOUNCEMENTS_ARCHIVE_EXP' => 'Wenn aktiviert, wird das Archivsystem und ggf. Seitenzahlen angezeigt.',
'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.',
]);

View File

@@ -0,0 +1,54 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Attachments
* @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, [
'DOWNLOADS' => 'Downloads',
'NO_ATTACHMENTS' => 'Keine Dateianhänge',
'PORTAL_ATTACHMENTS' => 'Dateianhänge-Block',
// ACP
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS' => 'Einstellungen für Dateianhänge',
'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS_EXP' => 'Hier können Sie die Einstellungen für Dateianhänge ändern.',
'PORTAL_ATTACHMENTS_NUMBER' => 'Anzahl der anzuzeigenden Dateianhänge',
'PORTAL_ATTACHMENTS_NUMBER_EXP' => '0 bedeutet unbegrenzt',
'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 ausschließen" auf "Ja" steht, wählen Sie die Foren die Sie ausschließen möchten.<br />Falls "Foren ausschließen" auf "Nein" steht, wählen Sie die Foren aus, aus denen Sie die Dateianhänge sehen möchten.<br />Wählen Sie mehrere Foren aus/ab, indem Sie beim Klicken die <samp>Strg</samp>-Taste gedrückt halten.',
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE' => 'Foren ausschließen',
'PORTAL_ATTACHMENTS_FORUM_EXCLUDE_EXP' => 'Wählen Sie "Ja" wenn Sie die ausgewählten Foren vom Dateianhänge-Block ausschließen möchten, und "Nein" wenn Sie nur die Dateianhänge der ausgewählten Foren im Dateianhänge-Block sehen möchten.',
'PORTAL_ATTACHMENTS_MAX_LENGTH' => 'Maximal angezeigte Länge der Dateianhänge',
'PORTAL_ATTACHMENTS_MAX_LENGTH_EXP' => '0 bedeutet unbegrenzt',
'PORTAL_ATTACHMENTS_FILETYPE' => 'Dateitypen',
'PORTAL_ATTACHMENTS_FILETYPE_EXP' => 'Falls "Dateitypen ausschließen" auf "Ja" steht, wählen Sie die Dateitypen die Sie ausschließen möchten.<br />Falls "Dateitypen ausschließen" auf "Nein" steht, wählen Sie die Dateitypen die Sie sehen möchten.<br />Wählen Sie mehrere Foren aus/ab, indem Sie beim Klicken die <samp>Strg</samp>-Taste gedrückt halten.',
'PORTAL_ATTACHMENTS_EXCLUDE' => 'Dateitypen ausschließen',
'PORTAL_ATTACHMENTS_EXCLUDE_EXP' => 'Wählen Sie "Ja" wenn Sie die ausgewählten Dateitypen vom Dateianhänge-Block ausschließen möchten, und "Nein" wenn Sie nur die ausgewählten Dateitypen im Dateianhänge-Block sehen möchten.',
]);

View File

@@ -0,0 +1,44 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Birthday List
* @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, [
'BIRTHDAYS_AHEAD' => 'In den nächsten %s Tagen',
'NO_BIRTHDAYS_AHEAD' => 'In diesem Zeitraum hat kein Mitglied Geburtstag',
// ACP
'ACP_PORTAL_BIRTHDAYS_SETTINGS' => 'Einstellungen für den Geburtstage-Block',
'ACP_PORTAL_BIRTHDAYS_SETTINGS_EXP' => 'Hier können Sie die Einstellungen für den Geburtstage-Block ändern.',
'PORTAL_BIRTHDAYS' => 'Geburtstage',
'PORTAL_BIRTHDAYS_AHEAD' => 'Anstehende Geburtstage',
'PORTAL_BIRTHDAYS_AHEAD_EXP' => 'Zeitraum für die Geburtstagsvorschau (Tage).<br />"0" deaktiviert die Anzeige der bevorstehenden Geburtstage.',
]);

View File

@@ -0,0 +1,131 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Calendar
* @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, [
'PORTAL_CALENDAR' => 'Kalender',
'VIEW_NEXT_MONTH' => 'nächster Monat',
'VIEW_PREVIOUS_MONTH' => 'voriger Monat',
'EVENT_START' => 'Von',
'EVENT_END' => 'Bis',
'EVENT_TIME' => 'Zeit',
'EVENT_ALL_DAY' => 'Ganztägig',
'CURRENT_EVENTS' => 'Aktuelle Veranstaltungen',
'NO_CUR_EVENTS' => 'Keine aktuellen Veranstaltungen',
'UPCOMING_EVENTS' => 'Bevorstehende Veranstaltungen',
'NO_UPCOMING_EVENTS' => 'Keine bevorstehenden Veranstaltungen',
'mini_cal' => [
'day' => [
'1' => 'So',
'2' => 'Mo',
'3' => 'Di',
'4' => 'Mi',
'5' => 'Do',
'6' => 'Fr',
'7' => 'Sa',
],
'month' => [
'1' => 'Jan.',
'2' => 'Feb.',
'3' => 'Mär.',
'4' => 'Apr.',
'5' => 'Mai',
'6' => 'Jun.',
'7' => 'Jul.',
'8' => 'Aug.',
'9' => 'Sep.',
'10'=> 'Okt.',
'11'=> 'Nov.',
'12'=> 'Dez.',
],
'long_month'=> [
'1' => 'Januar',
'2' => 'Februar',
'3' => 'März',
'4' => 'April',
'5' => 'Mai',
'6' => 'Juni',
'7' => 'Juli',
'8' => 'August',
'9' => 'September',
'10'=> 'Oktober',
'11'=> 'November',
'12'=> 'Dezember',
],
],
// ACP
'ACP_PORTAL_CALENDAR' => 'Kalender Einstellungen',
'ACP_PORTAL_CALENDAR_EXP' => 'Hier können Sie die Einstellungen für den Kalender ändern.',
'ACP_PORTAL_EVENTS' => 'Kalender Veranstaltungen',
'PORTAL_CALENDAR_TODAY_COLOR' => 'Farbe für den aktuellen Tag',
'PORTAL_CALENDAR_TODAY_COLOR_EXP' => 'HEX oder Farbennamen sind erlaubt (Englisch!) wie z.B. #FFFFFF für Weiß oder (englische!) Farbennamen wie z.B. violet.',
'PORTAL_CALENDAR_SUNDAY_COLOR' => 'Farbe für Sonntage',
'PORTAL_CALENDAR_SUNDAY_COLOR_EXP' => 'HEX oder Farbennamen sind erlaubt (Englisch!) wie z.B. #FFFFFF für Weiß oder (englische!) Farbennamen wie z.B. violet.',
'PORTAL_LONG_MONTH' => 'Langen Monatsname anzeigen',
'PORTAL_LONG_MONTH_EXP' => 'Wenn deaktiviert, wird der Monat gekürzt z.B. Aug. statt August.',
'PORTAL_SUNDAY_FIRST' => 'Erster Tag der Woche',
'PORTAL_SUNDAY_FIRST_EXP' => 'Wenn deaktiviert, wird von Mo. --> So. angezeigt, ansonsten So. --> Sa.',
'PORTAL_DISPLAY_EVENTS' => 'Veranstaltungen anzeigen',
'PORTAL_DISPLAY_EVENTS_EXP' => 'Zeige Veranstaltungen an, die im Kalender Block erstellt wurden.',
'PORTAL_EVENTS_MANAGE' => 'Veranstaltungen verwalten',
'NO_EVENT_TITLE' => 'Sie haben keinen Titel für die Veranstaltung angegeben.',
'NO_EVENT_START' => 'Sie haben keine Start-Zeit für die Veranstaltung angegeben.',
'ADD_EVENT' => 'Veranstaltung hinzufügen',
'EVENT_UPDATED' => 'Veranstaltung erfolgreich aktualisiert.',
'EVENT_ADDED' => 'Veranstaltung erfolgreich hinzugefügt.',
'NO_EVENT' => 'Keine Veranstaltung.',
'EVENT_TITLE' => 'Titel der Veranstaltung',
'EVENT_DESC' => 'Beschreibung',
'EVENT_LINK' => 'Link zur Veranstaltung',
'EVENT_LINK_EXP' => 'Geben Sie hier den Link zu einem Thema oder einer Website mit der Ankündigung oder dem Diskussionsthema der Veranstaltung ein.',
'NO_EVENTS' => 'Keine Veranstaltungen',
'ACP_PORTAL_CALENDAR_START_INCORRECT' => 'Die eingegebene Start-Zeit ist nicht korrekt. Bitte folgen Sie genau den Anweisungen.',
'ACP_PORTAL_CALENDAR_END_INCORRECT' => 'Die eingegebene End-Zeit ist nicht korrekt. Bitte folgen Sie genau den Anweisungen.',
'ACP_PORTAL_CALENDAR_EVENT_PAST' => 'Die Start-zeit der Veranstaltung muss in der Zukunft liegen.',
'ACP_PORTAL_EVENT_START_DATE' => 'Start-Datum der Veranstaltung',
'ACP_PORTAL_EVENT_START_DATE_EXP' => 'Geben Sie 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_END_DATE' => 'End-Datum der Veranstaltung',
'ACP_PORTAL_EVENT_END_DATE_EXP' => 'Geben Sie das Datum und Uhrzeit ein, zu der die Veranstaltung endet. Datum und Uhrzeit sollten in einem ähnlichen Format sein: TT.MM.JJJJ',
'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_EXP' => 'Wählen Sie die Gruppen aus, denen es erlaubt sein soll die Veranstaltung zu sehen. Falls alle Benutzer die Veranstaltung sehen sollen, dann wählen Sie nichts aus.<br />Wählen Sie mehrere Gruppen aus/ab, indem Sie beim Klicken die <samp>Strg</samp>-Taste gedrückt halten.',
'PORTAL_EVENTS_URL_NEW_WINDOW' => 'Öffne externe Veranstaltungsverknüpfungen in einem neuen Fenster',
// Logs
'LOG_PORTAL_EVENT_UPDATED' => '<strong>Veranstaltung aktualisiert</strong><br />&raquo; %s',
'LOG_PORTAL_EVENT_ADDED' => '<strong>Veranstaltung hinzugefügt</strong><br />&raquo; %s',
'LOG_PORTAL_EVENT_REMOVED' => '<strong>Veranstaltung entfernt</strong><br />&raquo; %s',
]);

View File

@@ -0,0 +1,42 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Clock
* @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, [
'CLOCK' => 'Uhr',
// ACP
'ACP_PORTAL_CLOCK_SETTINGS' => 'Uhr Einstellungen',
'ACP_PORTAL_CLOCK_SETTINGS_EXP' => 'Hier können Sie die Einstellungen für die Uhr ändern',
'ACP_PORTAL_CLOCK_SRC' => 'Uhr',
'ACP_PORTAL_CLOCK_SRC_EXP' => 'Geben Sie den Dateinamen der Uhr ein. Die Uhr muss unter folgendem Pfad gespeichert sein: styles/*yourstyle*/theme/images/portal/.',
]);

View File

@@ -0,0 +1,48 @@
<?php
/**
*
* @package Board3 Portal v2.3 - Custom
* @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, [
'PORTAL_CUSTOM' => 'Eigener Block',
// ACP
'ACP_PORTAL_CUSTOM_SETTINGS' => 'Custom Block Settings',
'ACP_PORTAL_CUSTOM_SETTINGS_EXP' => 'Einstellungen für den eigenen Block',
'TOO_FEW_CHARS' => 'Der eingegebene Code ist nicht lang genug.',
'ACP_PORTAL_CUSTOM_PREVIEW' => 'Vorschau',
'ACP_PORTAL_CUSTOM_CODE' => 'Code für den eigenen Block',
'ACP_PORTAL_CUSTOM_CODE_EXP' => 'Änderen Sie den Code für Ihre eigenen Block (HTML oder BBCode).',
'ACP_PORTAL_CUSTOM_PERMISSION' => 'Berechtigungen für den eigenen Block',
'ACP_PORTAL_CUSTOM_PERMISSION_EXP' => 'Wählen Sie die Gruppen aus, die den eigenen Block sehen dürfen. <br />Wählen Sie mehrere Gruppen aus/ab, indem Sie beim Klicken die <samp>Strg</samp>-Taste gedrückt halten.',
'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.',
]);

Some files were not shown because too many files have changed in this diff Show More