diff options
117 files changed, 2123 insertions, 1037 deletions
diff --git a/.travis.yml b/.travis.yml index ae61235c72..4f9734a19a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,10 @@ language: php matrix: include: - - php: 5.3 - env: DB=mysqli # MyISAM - php: 5.4 - env: DB=mysqli + env: DB=none;NOTESTS=1 + - php: 5.4 + env: DB=mysqli # MyISAM - php: 5.4 env: DB=mysql - php: 5.4 @@ -33,19 +33,18 @@ services: - redis-server install: - - travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION + - travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION $NOTESTS before_script: - - travis/setup-database.sh $DB $TRAVIS_PHP_VERSION + - travis/setup-database.sh $DB $TRAVIS_PHP_VERSION $NOTESTS - phantomjs --webdriver=8910 > /dev/null & script: - - travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION - - travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION - - travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION - - travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION ./ + - travis/phing-sniff.sh $DB $TRAVIS_PHP_VERSION $NOTESTS + - travis/check-sami-parse-errors.sh $DB $TRAVIS_PHP_VERSION $NOTESTS + - travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION $NOTESTS + - travis/check-executable-files.sh $DB $TRAVIS_PHP_VERSION $NOTESTS ./ - sh -c "if [ '$SLOWTESTS' != '1' -a '$DB' = 'mysqli' ]; then phpBB/vendor/bin/phpunit tests/lint_test.php; fi" - - sh -c "if [ '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi" + - sh -c "if [ '$NOTESTS' != '1' -a '$SLOWTESTS' != '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi" - sh -c "if [ '$SLOWTESTS' = '1' ]; then phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml --group slow; fi" - - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.3' -a '$DB' = 'mysqli' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi" - + - sh -c "set -x;if [ '$NOTESTS' = '1' -a '$TRAVIS_PULL_REQUEST' != 'false' ]; then git-tools/commit-msg-hook-range.sh origin/$TRAVIS_BRANCH..FETCH_HEAD; fi" diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index fa261ed289..8feb12a423 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -47,7 +47,7 @@ <td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong></td> </tr> <!-- BEGIN enabled --> - <tr class="ext_enabled"> + <tr class="ext_enabled row-highlight"> <td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong></td> <td style="text-align: center;"> <!-- IF enabled.S_VERSIONCHECK --> @@ -72,7 +72,7 @@ <td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong></td> </tr> <!-- BEGIN disabled --> - <tr class="ext_disabled"> + <tr class="ext_disabled row-highlight"> <td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong></td> <td style="text-align: center;"> <!-- IF disabled.S_VERSIONCHECK --> diff --git a/phpBB/adm/style/acp_icons.html b/phpBB/adm/style/acp_icons.html index f18dad0ef6..e723129e37 100644 --- a/phpBB/adm/style/acp_icons.html +++ b/phpBB/adm/style/acp_icons.html @@ -89,6 +89,9 @@ <!-- ENDIF --> <td>{L_WIDTH}</td> <td>{L_HEIGHT}</td> + <!-- IF not S_SMILIES --> + <td>{L_ALT_TEXT}</td> + <!-- ENDIF --> <td>{L_DISPLAY_ON_POSTING}</td> <!-- IF ID or S_ADD --> <td>{L_ORDER}</td> @@ -102,7 +105,7 @@ <!-- BEGIN items --> <tr> - <td style="text-align: center;"><img src="{items.IMG_SRC}" alt="" title="" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td> + <td style="text-align: center;"><img src="{items.IMG_SRC}" alt="{items.TEXT_ALT}" title="{items.TEXT_ALT}" /><input type="hidden" name="image[{items.IMG}]" value="1" /></td> <td style="vertical-align: top;">[{items.IMG}]</td> <!-- IF S_SMILIES --> <td><input class="text post" type="text" name="code[{items.IMG}]" value="{items.CODE}" size="10" maxlength="50" /></td> @@ -110,6 +113,9 @@ <!-- ENDIF --> <td><input class="text post" type="number" size="3" name="width[{items.IMG}]" value="{items.WIDTH}" /></td> <td><input class="text post" type="number" size="3" name="height[{items.IMG}]" value="{items.HEIGHT}" /></td> + <!-- IF not S_SMILIES --> + <td><input class="text post" type="text" name="alt[{items.IMG}]" value="{items.ALT}" size="10" maxlength="50" /></td> + <!-- ENDIF --> <td> <input type="checkbox" class="radio" name="display_on_posting[{items.IMG}]"{items.POSTING_CHECKED} onclick="toggle_select('{items.A_IMG}', this.checked, '{items.S_ROW_COUNT}');"/> <!-- IF items.S_ID --> diff --git a/phpBB/adm/style/acp_inactive.html b/phpBB/adm/style/acp_inactive.html index 409ea46de5..2aa3051f53 100644 --- a/phpBB/adm/style/acp_inactive.html +++ b/phpBB/adm/style/acp_inactive.html @@ -18,6 +18,7 @@ <thead> <tr> <th>{L_USERNAME}</th> + <th>{L_EMAIL}</th> <th>{L_JOINED}</th> <th>{L_INACTIVE_DATE}</th> <th>{L_LAST_VISIT}</th> @@ -32,6 +33,7 @@ {inactive.USERNAME_FULL} <!-- IF inactive.POSTS --><br />{L_POSTS}{L_COLON} <strong>{inactive.POSTS}</strong> [<a href="{inactive.U_SEARCH_USER}">{L_SEARCH_USER_POSTS}</a>]<!-- ENDIF --> </td> + <td style="vertical-align: top;">{inactive.USER_EMAIL}</td> <td style="vertical-align: top;">{inactive.JOINED}</td> <td style="vertical-align: top;">{inactive.INACTIVE_DATE}</td> <td style="vertical-align: top;">{inactive.LAST_VISIT}</td> diff --git a/phpBB/adm/style/acp_profile.html b/phpBB/adm/style/acp_profile.html index 3ce2d9471d..07718846cc 100644 --- a/phpBB/adm/style/acp_profile.html +++ b/phpBB/adm/style/acp_profile.html @@ -17,7 +17,7 @@ </div> <!-- ENDIF --> - <form id="add_profile_field" method="post" action="{U_ACTION}"> + <form id="add_profile_field" method="post" action="{U_ACTION}"{S_FORM_ENCTYPE}> <!-- IF S_STEP_ONE --> diff --git a/phpBB/adm/style/acp_styles.html b/phpBB/adm/style/acp_styles.html index 92ceaebc08..572486e877 100644 --- a/phpBB/adm/style/acp_styles.html +++ b/phpBB/adm/style/acp_styles.html @@ -99,7 +99,7 @@ </thead> <!-- BEGIN styles_list --> <tbody id="styles-list-{styles_list.S_ROW_COUNT}"> - <tr<!-- IF styles_list.STYLE_ID and not styles_list.STYLE_ACTIVE --> class="row-inactive"<!-- ENDIF -->> + <tr class="row-highlight<!-- IF styles_list.STYLE_ID and not styles_list.STYLE_ACTIVE --> row-inactive<!-- ENDIF -->"> <!-- IF styles_list.LEVEL is odd --> <!-- IF $ROW_CLASS == 'row1a' --><!-- DEFINE $ROW_CLASS = 'row1b' --><!-- ELSE --><!-- DEFINE $ROW_CLASS = 'row1a' --><!-- ENDIF --> <!-- ELSE --> diff --git a/phpBB/adm/style/acp_users_profile.html b/phpBB/adm/style/acp_users_profile.html index 573534fc95..9296638ff6 100644 --- a/phpBB/adm/style/acp_users_profile.html +++ b/phpBB/adm/style/acp_users_profile.html @@ -1,4 +1,4 @@ - <form id="user_profile" method="post" action="{U_ACTION}"> + <form id="user_profile" method="post" action="{U_ACTION}"{S_FORM_ENCTYPE}> <fieldset> <legend>{L_USER_PROFILE}</legend> diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 23bd563ba0..cf009562b3 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -859,6 +859,8 @@ table.zebra-table tbody tr:nth-child(even) { .row2a { background-color: #E7EEF4; } .row2b { background-color: #E3EBF2; } +tr.row-highlight:hover td { background-color: #DBDFE2; } + .spacer { background-color: #DBDFE2; height: 1px; diff --git a/phpBB/bin/phpbbcli.php b/phpBB/bin/phpbbcli.php index e5992f7536..e1f81662d2 100755 --- a/phpBB/bin/phpbbcli.php +++ b/phpBB/bin/phpbbcli.php @@ -77,5 +77,6 @@ $user->add_lang('cli'); $lang = $phpbb_container->get('language'); $application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $lang); +$application->setDispatcher($phpbb_container->get('dispatcher')); $application->register_container_commands($phpbb_container->get('console.command_collection')); $application->run($input); diff --git a/phpBB/composer.json b/phpBB/composer.json index bcf359a53b..b96e6cacf6 100644 --- a/phpBB/composer.json +++ b/phpBB/composer.json @@ -29,7 +29,7 @@ "lusitanian/oauth": "0.2.*", "marc1706/fast-image-size": "1.1.*", "patchwork/utf8": "1.1.*", - "php": ">=5.3.9", + "php": ">=5.4", "s9e/text-formatter": "dev-release/php5.3", "symfony/config": "2.8.*@dev", "symfony/console": "2.8.*@dev", diff --git a/phpBB/composer.lock b/phpBB/composer.lock index accd4a55f6..bd08a36fdc 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "983770c26a0dcd7399ebd488846ade9a", + "hash": "3a1fb55478d50b5b7b5888f3a07e0b43", "packages": [ { "name": "bantu/ini-get-wrapper", @@ -254,7 +254,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/fb39bdd38f6706b96422a7583b89c9283a58960f", + "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/c065d0e81e7e4666cd13ba4414f4dc7fe8d33dd9", "reference": "beee0e5693f7ca8ed16a94294acf53b6e6207e7c", "shasum": "" }, @@ -313,7 +313,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/a3aa17e2dcec2dc1c764bedd21e69fdf888b8b55", + "url": "https://api.github.com/repos/symfony/Config/zipball/546b5c41f8e0c3b18e55e4450ec51444adf3e61e", "reference": "a3aa17e2dcec2dc1c764bedd21e69fdf888b8b55", "shasum": "" }, @@ -363,7 +363,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/d31246d93cd99dc57858adb5da63841d56969928", + "url": "https://api.github.com/repos/symfony/Console/zipball/a0d4aa01cfe2e3646e50c13c721c04d044534535", "reference": "d31246d93cd99dc57858adb5da63841d56969928", "shasum": "" }, @@ -420,7 +420,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/3c14966b099b4ba807f146df4c6a7acffba2f793", + "url": "https://api.github.com/repos/symfony/Debug/zipball/7eac742c453af47ae561d6c41743dc7faefc9464", "reference": "3c14966b099b4ba807f146df4c6a7acffba2f793", "shasum": "" }, @@ -475,7 +475,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/99c05679526e9293783ce3a9059890b47da1d97e", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/0558c49dc0abbf4702b432fb9813bcd849d46ff9", "reference": "99c05679526e9293783ce3a9059890b47da1d97e", "shasum": "" }, @@ -535,7 +535,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/d7246885b7fe4cb5a2786bda34362d2f0e40b730", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e79162fa079bb559ddad17c58cf8b7ecbaffd9b6", "reference": "d7246885b7fe4cb5a2786bda34362d2f0e40b730", "shasum": "" }, @@ -593,7 +593,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/b9fa06f1822de287e660130955b546777994597b", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/287fc0b1dcb11ff729eeefc20441c08eaf628f29", "reference": "b9fa06f1822de287e660130955b546777994597b", "shasum": "" }, @@ -744,7 +744,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/330079921340f2d273dd24df16fc129948614e77", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/39aa7db7997031951ad4a4019153199287e1cc88", "reference": "330079921340f2d273dd24df16fc129948614e77", "shasum": "" }, @@ -824,7 +824,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/e9554bafc78c93b15ef56ce72c5aa2f3a511e683", + "url": "https://api.github.com/repos/symfony/Routing/zipball/7ee642267d616c9855c28387d30050e093f26c6b", "reference": "e9554bafc78c93b15ef56ce72c5aa2f3a511e683", "shasum": "" }, @@ -971,7 +971,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/TwigBridge/zipball/f85dc88ede5943c63c8681c02d8ef6b4252be54c", + "url": "https://api.github.com/repos/symfony/TwigBridge/zipball/2d1b0ac84ff35256d14c7dd5d949e50d138fa7f3", "reference": "f85dc88ede5943c63c8681c02d8ef6b4252be54c", "shasum": "" }, @@ -2443,7 +2443,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/4f297d7e00c375b6ab03732e076f65799a73937d", + "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/4dbd336331f5e7ba7a6f9e4f9f608b89093f49b3", "reference": "4f297d7e00c375b6ab03732e076f65799a73937d", "shasum": "" }, @@ -2551,7 +2551,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/be577b3a5d4a06d8ce03db57222bd06b5a6509de", + "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/1b459587235fb74b213269ec5ad8ac2f6e22f5f4", "reference": "be577b3a5d4a06d8ce03db57222bd06b5a6509de", "shasum": "" }, @@ -2670,7 +2670,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.3.9" + "php": ">=5.4" }, "platform-dev": [] } diff --git a/phpBB/config/default/container/services.yml b/phpBB/config/default/container/services.yml index 288785201c..9bbcdcbd57 100644 --- a/phpBB/config/default/container/services.yml +++ b/phpBB/config/default/container/services.yml @@ -110,6 +110,12 @@ services: file_downloader: class: phpbb\file_downloader + file_locator: + class: phpbb\routing\file_locator + arguments: + - @filesystem + - %core.root_path% + group_helper: class: phpbb\group\helper arguments: diff --git a/phpBB/config/default/container/services_console.yml b/phpBB/config/default/container/services_console.yml index aee3cbdee6..6b46375c7d 100644 --- a/phpBB/config/default/container/services_console.yml +++ b/phpBB/config/default/container/services_console.yml @@ -1,4 +1,12 @@ services: + console.exception_subscriber: + class: phpbb\console\exception_subscriber + arguments: + - @language + - %debug.exceptions% + tags: + - { name: kernel.event_subscriber } + console.command_collection: class: phpbb\di\service_collection arguments: @@ -75,6 +83,17 @@ services: tags: - { name: console.command } + console.command.db.list: + class: phpbb\console\command\db\list_command + arguments: + - @user + - @migrator + - @ext.manager + - @config + - @cache + tags: + - { name: console.command } + console.command.db.migrate: class: phpbb\console\command\db\migrate arguments: @@ -89,6 +108,19 @@ services: tags: - { name: console.command } + console.command.db.revert: + class: phpbb\console\command\db\revert + arguments: + - @user + - @migrator + - @ext.manager + - @config + - @cache + - @filesystem + - %core.root_path% + tags: + - { name: console.command } + console.command.dev.migration_tips: class: phpbb\console\command\dev\migration_tips arguments: diff --git a/phpBB/config/default/container/services_routing.yml b/phpBB/config/default/container/services_routing.yml index ec5ccd3b89..12fc98ce74 100644 --- a/phpBB/config/default/container/services_routing.yml +++ b/phpBB/config/default/container/services_routing.yml @@ -3,11 +3,11 @@ services: class: phpbb\routing\router arguments: - @service_container - - @filesystem + - @routing.chained_resources_locator + - @routing.delegated_loader - %core.root_path% - %core.php_ext% - %core.environment% - - @ext.manager router.listener: class: Symfony\Component\HttpKernel\EventListener\RouterListener @@ -29,3 +29,52 @@ services: - @filesystem - %core.root_path% - %core.php_ext% + +# ---- Route loaders ---- + + routing.delegated_loader: + class: Symfony\Component\Config\Loader\DelegatingLoader + arguments: + - @routing.resolver + + routing.resolver: + class: phpbb\routing\loader_resolver + arguments: + - @routing.loader.collection + + routing.loader.collection: + class: phpbb\di\service_collection + arguments: + - @service_container + tags: + - { name: service_collection, tag: routing.loader } + + routing.loader.yaml: + class: Symfony\Component\Routing\Loader\YamlFileLoader + arguments: + - @file_locator + tags: + - { name: routing.loader } + +# ---- Resources Locators ---- + + routing.chained_resources_locator: + class: phpbb\routing\resources_locator\chained_resources_locator + arguments: + - @routing.resources_locator.collection + + routing.resources_locator.collection: + class: phpbb\di\service_collection + arguments: + - @service_container + tags: + - { name: service_collection, tag: routing.resources_locator } + + routing.resources_locator.default: + class: phpbb\routing\resources_locator\default_resources_locator + arguments: + - %core.root_path% + - %core.environment% + - @ext.manager + tags: + - { name: routing.resources_locator } diff --git a/phpBB/config/development/config.yml b/phpBB/config/development/config.yml index 93ae07fb3f..f39eb52e73 100644 --- a/phpBB/config/development/config.yml +++ b/phpBB/config/development/config.yml @@ -4,6 +4,9 @@ imports: core: require_dev_dependencies: true + debug: + exceptions: true + twig: debug: true auto_reload: true diff --git a/phpBB/config/installer/container/services.yml b/phpBB/config/installer/container/services.yml index 8296bcc079..5cd30f9222 100644 --- a/phpBB/config/installer/container/services.yml +++ b/phpBB/config/installer/container/services.yml @@ -68,3 +68,11 @@ services: - null - @template.twig.loader - [] + + console.exception_subscriber: + class: phpbb\console\exception_subscriber + arguments: + - @language + - %debug.exceptions% + tags: + - { name: kernel.event_subscriber } diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html index a0e63092f0..c6a88def7f 100644 --- a/phpBB/docs/INSTALL.html +++ b/phpBB/docs/INSTALL.html @@ -147,7 +147,7 @@ <li>Oracle</li> </ul> </li> - <li><strong>PHP 5.3.9+</strong> with support for the database you intend to use.</li> + <li><strong>PHP 5.4.0+</strong> with support for the database you intend to use.</li> <li>The following PHP modules are required: <ul> <li>json</li> diff --git a/phpBB/docs/README.html b/phpBB/docs/README.html index 1d6530b4da..da3e2fa066 100644 --- a/phpBB/docs/README.html +++ b/phpBB/docs/README.html @@ -265,7 +265,7 @@ <ul> <li>Your server type/version, e.g. Apache 2.2.3, IIS 7, Sambar, etc.</li> - <li>PHP version and mode of operation, e.g. PHP 5.3.9 as a module, PHP 5.4.0 running as CGI, etc.</li> + <li>PHP version and mode of operation, e.g. PHP 5.4.0 as a module, PHP 5.4.0 running as CGI, etc.</li> <li>DB type/version, e.g. MySQL 5.0.77, PostgreSQL 9.0.6, MSSQL Server 2000 SP1, etc.</li> </ul> @@ -323,11 +323,11 @@ <div class="content"> - <p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.9.</p> + <p>phpBB 3.2.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.4.0.</p> <p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p> - <p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p> + <p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.4.x to 5.6.x without problem.</p> <a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3> diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 0db07ffab6..a763f279d1 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -1601,6 +1601,34 @@ ucp_friend_list_after * Since: 3.1.0-a4 * Purpose: Add optional elements after list of friends in UCP +viewforum_body_topic_row_after +=== +* Locations: + + styles/prosilver/template/viewforum_body.html +* Since: 3.1.7-RC1 +* Purpose: Add content after the topic list item. + +viewforum_body_topic_row_append +=== +* Locations: + + styles/prosilver/template/viewforum_body.html +* Since: 3.1.7-RC1 +* Purpose: Add content at the start of the topic list item. + +viewforum_body_topic_row_before +=== +* Locations: + + styles/prosilver/template/viewforum_body.html +* Since: 3.1.7-RC1 +* Purpose: Add content before the topic list item. + +viewforum_body_topic_row_prepend +=== +* Locations: + + styles/prosilver/template/viewforum_body.html +* Since: 3.1.7-RC1 +* Purpose: Add content at the end of the topic list item. + viewforum_buttons_bottom_before === * Locations: diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index 6e636d2f7d..5a0ede1de3 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -448,6 +448,7 @@ class acp_board 'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true), 'board_email_sig' => array('lang' => 'EMAIL_SIG', 'validate' => 'string', 'type' => 'textarea:5:30', 'explain' => true), 'board_hide_emails' => array('lang' => 'BOARD_HIDE_EMAILS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), + 'send_test_email' => array('lang' => 'SEND_TEST_EMAIL', 'validate' => 'bool', 'type' => 'custom', 'method' => 'send_test_email', 'explain' => true), 'legend2' => 'SMTP_SETTINGS', 'smtp_delivery' => array('lang' => 'USE_SMTP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -631,6 +632,27 @@ class acp_board } } + if ($mode == 'email' && $request->is_set_post('send_test_email')) + { + if ($config['email_enable']) + { + include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); + + $messenger = new messenger(false); + $messenger->template('test'); + $messenger->set_addresses($user->data); + $messenger->anti_abuse_headers($config, $user); + $messenger->send(NOTIFY_EMAIL); + + trigger_error($user->lang('TEST_EMAIL_SENT') . adm_back_link($this->u_action)); + } + else + { + $user->add_lang('memberlist'); + trigger_error($user->lang('EMAIL_DISABLED') . adm_back_link($this->u_action), E_USER_WARNING); + } + } + if ($submit) { $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_' . strtoupper($mode)); @@ -1139,4 +1161,11 @@ class acp_board return h_radio($field_name, array(1 => 'YES', 0 => 'NO'), $value) . ($message !== false ? '<br /><span>' . $user->lang($message) . '</span>' : ''); } + + function send_test_email($value, $key) + { + global $user; + + return '<input class="button2" type="submit" id="' . $key . '" name="' . $key . '" value="' . $user->lang['SEND_TEST_EMAIL'] . '" />'; + } } diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php index 5d1756de45..57a36bb9f3 100644 --- a/phpBB/includes/acp/acp_icons.php +++ b/phpBB/includes/acp/acp_icons.php @@ -248,7 +248,7 @@ class acp_icons $data = $_images; } - $colspan = (($mode == 'smilies') ? 7 : 5); + $colspan = (($mode == 'smilies') ? 7 : 6); $colspan += ($icon_id) ? 1 : 0; $colspan += ($action == 'add') ? 2 : 0; @@ -292,6 +292,8 @@ class acp_icons 'ID' => (isset($img_row[$fields . '_id'])) ? $img_row[$fields . '_id'] : 0, 'WIDTH' => (!empty($img_row[$fields .'_width'])) ? $img_row[$fields .'_width'] : $img_row['width'], 'HEIGHT' => (!empty($img_row[$fields .'_height'])) ? $img_row[$fields .'_height'] : $img_row['height'], + 'TEXT_ALT' => ($mode == 'icons' && !empty($img_row['icons_alt'])) ? $img_row['icons_alt'] : $img, + 'ALT' => ($mode == 'icons' && !empty($img_row['icons_alt'])) ? $img_row['icons_alt'] : '', 'POSTING_CHECKED' => (!empty($img_row['display_on_posting']) || $action == 'add') ? ' checked="checked"' : '', )); } @@ -336,6 +338,7 @@ class acp_icons $image_add = (isset($_POST['add_img'])) ? $request->variable('add_img', array('' => 0)) : array(); $image_emotion = $request->variable('emotion', array('' => ''), true); $image_code = $request->variable('code', array('' => ''), true); + $image_alt = ($request->is_set_post('alt')) ? $request->variable('alt', array('' => ''), true) : array(); $image_display_on_posting = (isset($_POST['display_on_posting'])) ? $request->variable('display_on_posting', array('' => 0)) : array(); // Ok, add the relevant bits if we are adding new codes to existing emoticons... @@ -438,6 +441,13 @@ class acp_icons ); } + if ($mode == 'icons') + { + $img_sql = array_merge($img_sql, array( + 'icons_alt' => $image_alt[$image]) + ); + } + // Image_order holds the 'new' order value if (!empty($image_order[$image])) { @@ -921,7 +931,7 @@ class acp_icons while ($row = $db->sql_fetchrow($result)) { - $alt_text = ($mode == 'smilies') ? $row['code'] : ''; + $alt_text = ($mode == 'smilies') ? $row['code'] : (($mode == 'icons' && !empty($row['icons_alt'])) ? $row['icons_alt'] : $row['icons_url']); $template->assign_block_vars('items', array( 'S_SPACER' => (!$spacer && !$row['display_on_posting']) ? true : false, diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 3a72cf1fe6..df445394db 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -275,9 +275,10 @@ class acp_inactive 'REMINDED_EXPLAIN' => $user->lang('USER_LAST_REMINDED', (int) $row['user_reminded'], $user->format_date($row['user_reminded_time'])), - 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview')), + 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], false, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=overview&redirect=acp_inactive')), 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), 'USER_COLOR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), + 'USER_EMAIL' => $row['user_email'], 'U_USER_ADMIN' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&mode=overview&u={$row['user_id']}"), 'U_SEARCH_USER' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id={$row['user_id']}&sr=posts") : '', diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 8a53edb8ee..47e2660770 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -426,7 +426,7 @@ class acp_main // Version check $user->add_lang('install'); - if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.3.3', '<')) + if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.4', '<')) { $template->assign_vars(array( 'S_PHP_VERSION_OLD' => true, diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 9b4fdaf993..c60e203040 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -543,13 +543,14 @@ class acp_profile } } - $step = (isset($_REQUEST['next'])) ? $step + 1 : ((isset($_REQUEST['prev'])) ? $step - 1 : $step); - if (sizeof($error)) { - $step--; $submit = false; } + else + { + $step = (isset($_REQUEST['next'])) ? $step + 1 : ((isset($_REQUEST['prev'])) ? $step - 1 : $step); + } // Build up the specific hidden fields foreach ($exclude as $num => $key_ary) @@ -567,7 +568,7 @@ class acp_profile $var = $profile_field->prepare_hidden_fields($step, $key, $action, $field_data); if ($var !== null) { - $_new_key_ary[$key] = $profile_field->prepare_hidden_fields($step, $key, $action, $field_data); + $_new_key_ary[$key] = $var; } } $cp->vars = $field_data; @@ -577,11 +578,7 @@ class acp_profile if (!sizeof($error)) { - if ($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) - { - $this->save_profile_field($cp, $field_type, $action); - } - else if ($action == 'edit' && $save) + if (($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save)) { $this->save_profile_field($cp, $field_type, $action); } diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index bbc8e73cb8..857c625867 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -44,6 +44,11 @@ class acp_users $user_id = $request->variable('u', 0); $action = $request->variable('action', ''); + // Get referer to redirect user to the appropriate page after delete action + $redirect = $request->variable('redirect', ''); + $redirect_tag = "redirect=$redirect"; + $redirect_url = append_sid("{$phpbb_admin_path}index.$phpEx", "i=$redirect"); + $submit = (isset($_POST['update']) && !isset($_POST['cancel'])) ? true : false; $form_name = 'acp_users'; @@ -146,9 +151,9 @@ class acp_users } $template->assign_vars(array( - 'U_BACK' => $this->u_action, + 'U_BACK' => (empty($redirect)) ? $this->u_action : $redirect_url, 'U_MODE_SELECT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&u=$user_id"), - 'U_ACTION' => $this->u_action . '&u=' . $user_id, + 'U_ACTION' => $this->u_action . '&u=' . $user_id . ((empty($redirect)) ? '' : '&' . $redirect_tag), 'S_FORM_OPTIONS' => $s_form_options, 'MANAGED_USERNAME' => $user_row['username']) ); @@ -221,19 +226,30 @@ class acp_users user_delete($delete_type, $user_id, $user_row['username']); $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_DELETED', false, array($user_row['username'])); - trigger_error($user->lang['USER_DELETED'] . adm_back_link($this->u_action)); + trigger_error($user->lang['USER_DELETED'] . adm_back_link( + (empty($redirect)) ? $this->u_action : $redirect_url + ) + ); } else { - confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( + $delete_confirm_hidden_fields = array( 'u' => $user_id, 'i' => $id, 'mode' => $mode, 'action' => $action, 'update' => true, 'delete' => 1, - 'delete_type' => $delete_type)) + 'delete_type' => $delete_type, ); + + // Checks if the redirection page is specified + if (!empty($redirect)) + { + $delete_confirm_hidden_fields['redirect'] = $redirect; + } + + confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($delete_confirm_hidden_fields)); } } else diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index cd8dcc2734..3515150f93 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -579,7 +579,7 @@ function move_topics($topic_ids, $forum_id, $auto_sync = true) */ function move_posts($post_ids, $topic_id, $auto_sync = true) { - global $db; + global $db, $phpbb_dispatcher; if (!is_array($post_ids)) { @@ -613,6 +613,28 @@ function move_posts($post_ids, $topic_id, $auto_sync = true) trigger_error('NO_TOPIC'); } + /** + * Perform additional actions before moving posts + * + * @event core.move_posts_before + * @var array post_ids Array of post ids to move + * @var string topic_id The topic id the posts are moved to + * @var bool auto_sync Whether or not to perform auto sync + * @var array forum_ids Array of the forum ids the posts are moved from + * @var array topic_ids Array of the topic ids the posts are moved from + * @var array forum_row Array with the forum id of the topic the posts are moved to + * @since 3.1.7-RC1 + */ + $vars = array( + 'post_ids', + 'topic_id', + 'auto_sync', + 'forum_ids', + 'topic_ids', + 'forum_row', + ); + extract($phpbb_dispatcher->trigger_event('core.move_posts_before', compact($vars))); + $sql = 'UPDATE ' . POSTS_TABLE . ' SET forum_id = ' . (int) $forum_row['forum_id'] . ", topic_id = $topic_id WHERE " . $db->sql_in_set('post_id', $post_ids); @@ -623,6 +645,28 @@ function move_posts($post_ids, $topic_id, $auto_sync = true) WHERE " . $db->sql_in_set('post_msg_id', $post_ids); $db->sql_query($sql); + /** + * Perform additional actions after moving posts + * + * @event core.move_posts_after + * @var array post_ids Array of the moved post ids + * @var string topic_id The topic id the posts are moved to + * @var bool auto_sync Whether or not to perform auto sync + * @var array forum_ids Array of the forum ids the posts are moved from + * @var array topic_ids Array of the topic ids the posts are moved from + * @var array forum_row Array with the forum id of the topic the posts are moved to + * @since 3.1.7-RC1 + */ + $vars = array( + 'post_ids', + 'topic_id', + 'auto_sync', + 'forum_ids', + 'topic_ids', + 'forum_row', + ); + extract($phpbb_dispatcher->trigger_event('core.move_posts_after', compact($vars))); + if ($auto_sync) { $forum_ids[] = (int) $forum_row['forum_id']; @@ -890,6 +934,32 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync = $table_ary = array(POSTS_TABLE, REPORTS_TABLE); + /** + * Perform additional actions during post(s) deletion before running the queries + * + * @event core.delete_posts_in_transaction_before + * @var array post_ids Array with deleted posts' ids + * @var array poster_ids Array with deleted posts' author ids + * @var array topic_ids Array with deleted posts' topic ids + * @var array forum_ids Array with deleted posts' forum ids + * @var string where_type Variable containing posts deletion mode + * @var mixed where_ids Array or comma separated list of post ids to delete + * @var array delete_notifications_types Array with notifications types to delete + * @var array table_ary Array with table names to delete data from + * @since 3.1.7-RC1 + */ + $vars = array( + 'post_ids', + 'poster_ids', + 'topic_ids', + 'forum_ids', + 'where_type', + 'where_ids', + 'delete_notifications_types', + 'table_ary', + ); + extract($phpbb_dispatcher->trigger_event('core.delete_posts_in_transaction_before', compact($vars))); + foreach ($table_ary as $table) { $sql = "DELETE FROM $table @@ -1047,7 +1117,7 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync = */ function delete_attachments($mode, $ids, $resync = true) { - global $db, $config; + global $db, $config, $phpbb_dispatcher; // 0 is as bad as an empty array if (empty($ids)) @@ -1092,6 +1162,24 @@ function delete_attachments($mode, $ids, $resync = true) $post_ids = $message_ids = $topic_ids = $physical = array(); + /** + * Perform additional actions before collecting data for attachment(s) deletion + * + * @event core.delete_attachments_collect_data_before + * @var string mode Variable containing attachments deletion mode, can be: post|message|topic|attach|user + * @var mixed ids Array or comma separated list of ids corresponding to the mode + * @var bool resync Flag indicating if posts/messages/topics should be synchronized + * @var string sql_id The field name to collect/delete data for depending on the mode + * @since 3.1.7-RC1 + */ + $vars = array( + 'mode', + 'ids', + 'resync', + 'sql_id', + ); + extract($phpbb_dispatcher->trigger_event('core.delete_attachments_collect_data_before', compact($vars))); + // Collect post and topic ids for later use if we need to touch remaining entries (if resync is enabled) $sql = 'SELECT post_msg_id, topic_id, in_message, physical_filename, thumbnail, filesize, is_orphan FROM ' . ATTACHMENTS_TABLE . ' @@ -1121,6 +1209,32 @@ function delete_attachments($mode, $ids, $resync = true) } $db->sql_freeresult($result); + /** + * Perform additional actions before attachment(s) deletion + * + * @event core.delete_attachments_before + * @var string mode Variable containing attachments deletion mode, can be: post|message|topic|attach|user + * @var mixed ids Array or comma separated list of ids corresponding to the mode + * @var bool resync Flag indicating if posts/messages/topics should be synchronized + * @var string sql_id The field name to collect/delete data for depending on the mode + * @var array post_ids Array with post ids for deleted attachment(s) + * @var array topic_ids Array with topic ids for deleted attachment(s) + * @var array message_ids Array with private message ids for deleted attachment(s) + * @var array physical Array with deleted attachment(s) physical file(s) data + * @since 3.1.7-RC1 + */ + $vars = array( + 'mode', + 'ids', + 'resync', + 'sql_id', + 'post_ids', + 'topic_ids', + 'message_ids', + 'physical', + ); + extract($phpbb_dispatcher->trigger_event('core.delete_attachments_before', compact($vars))); + // Delete attachments $sql = 'DELETE FROM ' . ATTACHMENTS_TABLE . ' WHERE ' . $db->sql_in_set($sql_id, $ids); @@ -1130,6 +1244,34 @@ function delete_attachments($mode, $ids, $resync = true) $db->sql_query($sql); $num_deleted = $db->sql_affectedrows(); + /** + * Perform additional actions after attachment(s) deletion from the database + * + * @event core.delete_attachments_from_database_after + * @var string mode Variable containing attachments deletion mode, can be: post|message|topic|attach|user + * @var mixed ids Array or comma separated list of ids corresponding to the mode + * @var bool resync Flag indicating if posts/messages/topics should be synchronized + * @var string sql_id The field name to collect/delete data for depending on the mode + * @var array post_ids Array with post ids for deleted attachment(s) + * @var array topic_ids Array with topic ids for deleted attachment(s) + * @var array message_ids Array with private message ids for deleted attachment(s) + * @var array physical Array with deleted attachment(s) physical file(s) data + * @var int num_deleted The number of deleted attachment(s) from the database + * @since 3.1.7-RC1 + */ + $vars = array( + 'mode', + 'ids', + 'resync', + 'sql_id', + 'post_ids', + 'topic_ids', + 'message_ids', + 'physical', + 'num_deleted', + ); + extract($phpbb_dispatcher->trigger_event('core.delete_attachments_from_database_after', compact($vars))); + if (!$num_deleted) { return 0; @@ -1152,6 +1294,38 @@ function delete_attachments($mode, $ids, $resync = true) } } + /** + * Perform additional actions after attachment(s) deletion from the filesystem + * + * @event core.delete_attachments_from_filesystem_after + * @var string mode Variable containing attachments deletion mode, can be: post|message|topic|attach|user + * @var mixed ids Array or comma separated list of ids corresponding to the mode + * @var bool resync Flag indicating if posts/messages/topics should be synchronized + * @var string sql_id The field name to collect/delete data for depending on the mode + * @var array post_ids Array with post ids for deleted attachment(s) + * @var array topic_ids Array with topic ids for deleted attachment(s) + * @var array message_ids Array with private message ids for deleted attachment(s) + * @var array physical Array with deleted attachment(s) physical file(s) data + * @var int num_deleted The number of deleted attachment(s) from the database + * @var int space_removed The size of deleted files(s) from the filesystem + * @var int files_removed The number of deleted file(s) from the filesystem + * @since 3.1.7-RC1 + */ + $vars = array( + 'mode', + 'ids', + 'resync', + 'sql_id', + 'post_ids', + 'topic_ids', + 'message_ids', + 'physical', + 'num_deleted', + 'space_removed', + 'files_removed', + ); + extract($phpbb_dispatcher->trigger_event('core.delete_attachments_from_filesystem_after', compact($vars))); + if ($space_removed || $files_removed) { $config->increment('upload_dir_size', $space_removed * (-1), false); diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 8b17dba534..19756d97b4 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -311,10 +311,10 @@ function posting_gen_topic_icons($mode, $icon_id) { $template->assign_block_vars('topic_icon', array( 'ICON_ID' => $id, - 'ICON_NAME' => $data['img'], 'ICON_IMG' => $root_path . $config['icons_path'] . '/' . $data['img'], 'ICON_WIDTH' => $data['width'], 'ICON_HEIGHT' => $data['height'], + 'ICON_ALT' => $data['alt'], 'S_CHECKED' => ($id == $icon_id) ? true : false, 'S_ICON_CHECKED' => ($id == $icon_id) ? ' checked="checked"' : '') diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index ac82c9f2ad..132786818b 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -284,6 +284,7 @@ class mcp_queue $template->assign_vars(array( 'S_MCP_QUEUE' => true, 'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"), + 'S_CAN_DELETE_POST' => $auth->acl_get('m_delete', $post_info['forum_id']), 'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']), 'S_POST_REPORTED' => $post_info['post_reported'], 'S_POST_UNAPPROVED' => $post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE, @@ -1269,7 +1270,7 @@ class mcp_queue continue; } - $post_data['disapprove_reason'] = ''; + $post_data['disapprove_reason'] = $disapprove_reason; if (isset($disapprove_reason_lang)) { // Okay we need to get the reason from the posters language diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 3559a10971..6320b14947 100644 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -22,9 +22,9 @@ define('PHPBB_ENVIRONMENT', 'production'); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); -if (version_compare(PHP_VERSION, '5.3.9') < 0) +if (version_compare(PHP_VERSION, '5.4') < 0) { - die('You are running an unsupported PHP version. Please upgrade to PHP 5.3.9 or higher before trying to install phpBB 3.1'); + die('You are running an unsupported PHP version. Please upgrade to PHP 5.4 or higher before trying to install phpBB 3.2'); } function phpbb_require_updated($path, $optional = false) diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 0e223866b1..da6dcb085e 100644 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -163,7 +163,7 @@ class install_install extends module // Test the minimum PHP version $php_version = PHP_VERSION; - if (version_compare($php_version, '5.3.9') < 0) + if (version_compare($php_version, '5.4') < 0) { $result = '<strong style="color:red">' . $lang['NO'] . '</strong>'; } diff --git a/phpBB/install_new/phpbbcli.php b/phpBB/install_new/phpbbcli.php index 508d051945..c1e9a9eaef 100644 --- a/phpBB/install_new/phpbbcli.php +++ b/phpBB/install_new/phpbbcli.php @@ -62,5 +62,6 @@ $language = $phpbb_installer_container->get('language'); $language->add_lang(array('common', 'acp/common', 'acp/board', 'install_new', 'posting', 'cli')); $application = new \phpbb\console\application('phpBB Installer', PHPBB_VERSION, $language); +$application->setDispatcher($phpbb_installer_container->get('dispatcher')); $application->register_container_commands($phpbb_installer_container->get('console.installer.command_collection')); $application->run($input); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 001775349a..ba51595dc3 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -559,6 +559,8 @@ $lang = array_merge($lang, array( 'EMAIL_SIG_EXPLAIN' => 'This text will be attached to all emails the board sends.', 'ENABLE_EMAIL' => 'Enable board-wide emails', 'ENABLE_EMAIL_EXPLAIN' => 'If this is set to disabled no emails will be sent by the board at all. <em>Note the user and admin account activation settings require this setting to be enabled. If currently using “user” or “admin” activation in the activation settings, disabling this setting will disable registration.</em>', + 'SEND_TEST_EMAIL' => 'Send a test email', + 'SEND_TEST_EMAIL_EXPLAIN' => 'This will send a test email to the address defined in your account.', 'SMTP_AUTH_METHOD' => 'Authentication method for SMTP', 'SMTP_AUTH_METHOD_EXPLAIN' => 'Only used if a username/password is set, ask your provider if you are unsure which method to use.', 'SMTP_CRAM_MD5' => 'CRAM-MD5', @@ -574,6 +576,7 @@ $lang = array_merge($lang, array( 'SMTP_SETTINGS' => 'SMTP settings', 'SMTP_USERNAME' => 'SMTP username', 'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.', + 'TEST_EMAIL_SENT' => 'The test email has been sent.<br />If you don’t receive it, please check your emails configuration.<br /><br />If you require assistance, please visit the <a href="https://www.phpbb.com/community/">phpBB support forums</a>.', 'USE_SMTP' => 'Use SMTP server for email', 'USE_SMTP_EXPLAIN' => 'Select “Yes” if you want or have to send email via a named server instead of the local mail function.', )); diff --git a/phpBB/language/en/cli.php b/phpBB/language/en/cli.php index 9aa8b7fcc2..1c549e5f9f 100644 --- a/phpBB/language/en/cli.php +++ b/phpBB/language/en/cli.php @@ -50,7 +50,9 @@ $lang = array_merge($lang, array( 'CLI_DESCRIPTION_CRON_LIST' => 'Prints a list of ready and unready cron jobs.', 'CLI_DESCRIPTION_CRON_RUN' => 'Runs all ready cron tasks.', 'CLI_DESCRIPTION_CRON_RUN_ARGUMENT_1' => 'Name of the task to be run', + 'CLI_DESCRIPTION_DB_LIST' => 'List all installed and available migrations.', 'CLI_DESCRIPTION_DB_MIGRATE' => 'Updates the database by applying migrations.', + 'CLI_DESCRIPTION_DB_REVERT' => 'Revert a migration.', 'CLI_DESCRIPTION_DELETE_CONFIG' => 'Deletes a configuration option', 'CLI_DESCRIPTION_DISABLE_EXTENSION' => 'Disables the specified extension.', 'CLI_DESCRIPTION_ENABLE_EXTENSION' => 'Enables the specified extension.', @@ -94,6 +96,12 @@ $lang = array_merge($lang, array( 'CLI_FIXUP_RECALCULATE_EMAIL_HASH_SUCCESS' => 'Successfully recalculated all email hashes.', + 'CLI_MIGRATION_NAME' => 'Migration name, including the namespace (use forward slashes instead of backslashes to avoid problems).', + 'CLI_MIGRATIONS_AVAILABLE' => 'Available migrations', + 'CLI_MIGRATIONS_INSTALLED' => 'Installed migrations', + 'CLI_MIGRATIONS_ONLY_AVAILABLE' => 'Show only available migrations', + 'CLI_MIGRATIONS_EMPTY' => 'No migrations.', + 'CLI_REPARSER_REPARSE_REPARSING' => 'Reparsing %1$s (range %2$d..%3$d)', 'CLI_REPARSER_REPARSE_REPARSING_START' => 'Reparsing %s...', 'CLI_REPARSER_REPARSE_SUCCESS' => 'Reparsing ended with success', diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 964e94686f..a0dda19df9 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -83,6 +83,7 @@ $lang = array_merge($lang, array( 'ALL_POSTS' => 'All posts', 'ALL_TIMES' => 'All times are <span title="%2$s">%1$s</span>', 'ALL_TOPICS' => 'All Topics', + 'ALT_TEXT' => 'Alternative text', 'AND' => 'And', 'ARE_WATCHING_FORUM' => 'You have subscribed to be notified of new posts in this forum.', 'ARE_WATCHING_TOPIC' => 'You have subscribed to be notified of new posts in this topic.', diff --git a/phpBB/language/en/email/test.txt b/phpBB/language/en/email/test.txt new file mode 100644 index 0000000000..91a737248b --- /dev/null +++ b/phpBB/language/en/email/test.txt @@ -0,0 +1,9 @@ +Subject: phpBB is correctly configured to send emails + +Hello {USERNAME}, + +Congratulations. If you received this email, phpBB is correctly configured to send emails. + +In case you require assistance, please visit the phpBB support forums - https://www.phpbb.com/community/ + +{EMAIL_SIG} diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index a776a539ed..5d26e22423 100644 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -301,10 +301,10 @@ $lang = array_merge($lang, array( 'PHP_REGISTER_GLOBALS_EXPLAIN' => 'phpBB will still run if this setting is enabled, but if possible, it is recommended that register_globals is disabled on your PHP install for security reasons.', 'PHP_SAFE_MODE' => 'Safe mode', 'PHP_SETTINGS' => 'PHP version and settings', - 'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.3.9 of PHP in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.', + 'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.4.0 of PHP in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.', 'PHP_URL_FOPEN_SUPPORT' => 'PHP setting <var>allow_url_fopen</var> is enabled', 'PHP_URL_FOPEN_SUPPORT_EXPLAIN' => '<strong>Optional</strong> - This setting is optional, however certain phpBB functions like off-site avatars will not work properly without it.', - 'PHP_VERSION_REQD' => 'PHP version >= 5.3.9', + 'PHP_VERSION_REQD' => 'PHP version >= 5.4.0', 'POST_ID' => 'Post ID', 'PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using <strong>%s</strong> as table prefix.', 'PREPROCESS_STEP' => 'Executing pre-processing functions/queries', diff --git a/phpBB/language/en/install_new.php b/phpBB/language/en/install_new.php index 35153973de..5b3942c125 100644 --- a/phpBB/language/en/install_new.php +++ b/phpBB/language/en/install_new.php @@ -99,7 +99,7 @@ $lang = array_merge($lang, array( // Server requirements 'PHP_VERSION_REQD' => 'PHP version', - 'PHP_VERSION_REQD_EXPLAIN' => 'phpBB requires PHP version 5.3.9 or higher.', + 'PHP_VERSION_REQD_EXPLAIN' => 'phpBB requires PHP version 5.4.0 or higher.', 'PHP_GETIMAGESIZE_SUPPORT' => 'PHP getimagesize() function is required', 'PHP_GETIMAGESIZE_SUPPORT_EXPLAIN' => 'In order for phpBB to function correctly, the getimagesize function needs to be available.', 'PCRE_UTF_SUPPORT' => 'PCRE UTF-8 support', diff --git a/phpBB/language/en/migrator.php b/phpBB/language/en/migrator.php index 244a5faadf..fcf1c4063b 100644 --- a/phpBB/language/en/migrator.php +++ b/phpBB/language/en/migrator.php @@ -48,10 +48,17 @@ $lang = array_merge($lang, array( 'MIGRATION_EFFECTIVELY_INSTALLED' => 'Migration already effectively installed (skipped): %s', 'MIGRATION_EXCEPTION_ERROR' => 'Something went wrong during the request and an exception was thrown. The changes made before the error occurred were reversed to the best of our abilities, but you should check the board for errors.', 'MIGRATION_NOT_FULFILLABLE' => 'The migration "%1$s" is not fulfillable, missing migration "%2$s".', + 'MIGRATION_NOT_INSTALLED' => 'The migration "%s" is not installed.', 'MIGRATION_NOT_VALID' => '%s is not a valid migration.', 'MIGRATION_SCHEMA_DONE' => 'Installed Schema: %1$s; Time: %2$.2f seconds', 'MIGRATION_SCHEMA_RUNNING' => 'Installing Schema: %s.', + 'MIGRATION_REVERT_DATA_DONE' => 'Reverted Data: %1$s; Time: %2$.2f seconds', + 'MIGRATION_REVERT_DATA_IN_PROGRESS' => 'Reverting Data: %1$s; Time: %2$.2f seconds', + 'MIGRATION_REVERT_DATA_RUNNING' => 'Reverting Data: %s.', + 'MIGRATION_REVERT_SCHEMA_DONE' => 'Reverted Schema: %1$s; Time: %2$.2f seconds', + 'MIGRATION_REVERT_SCHEMA_RUNNING' => 'Reverting Schema: %s.', + 'MIGRATION_INVALID_DATA_MISSING_CONDITION' => 'A migration is invalid. An if statement helper is missing a condition.', 'MIGRATION_INVALID_DATA_MISSING_STEP' => 'A migration is invalid. An if statement helper is missing a valid call to a migration step.', 'MIGRATION_INVALID_DATA_CUSTOM_NOT_CALLABLE' => 'A migration is invalid. A custom callable function could not be called.', diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index eaaae4aaab..b167e0e7dc 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1027,6 +1027,23 @@ switch ($mode) FROM ' . POSTS_TABLE . ' WHERE poster_ip ' . ((strpos($ips, '%') !== false) ? 'LIKE' : 'IN') . " ($ips) AND " . $db->sql_in_set('forum_id', $ip_forums); + + /** + * Modify sql query for members search by ip address / hostname + * + * @event core.memberlist_modify_ip_search_sql_query + * @var string ipdomain The host name + * @var string ips IP address list for the given host name + * @var string sql The SQL query for searching members by IP address + * @since 3.1.7-RC1 + */ + $vars = array( + 'ipdomain', + 'ips', + 'sql', + ); + extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_ip_search_sql_query', compact($vars))); + $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) @@ -1167,6 +1184,32 @@ switch ($mode) $order_by .= ', u.user_posts DESC'; } + /** + * Modify sql query data for members search + * + * @event core.memberlist_modify_sql_query_data + * @var string order_by SQL ORDER BY clause condition + * @var string sort_dir The sorting direction + * @var string sort_key The sorting key + * @var array sort_key_sql Arraty with the sorting conditions data + * @var string sql_from SQL FROM clause condition + * @var string sql_select SQL SELECT fields list + * @var string sql_where SQL WHERE clause condition + * @var string sql_where_data SQL WHERE clause additional conditions data + * @since 3.1.7-RC1 + */ + $vars = array( + 'order_by', + 'sort_dir', + 'sort_key', + 'sort_key_sql', + 'sql_from', + 'sql_select', + 'sql_where', + 'sql_where_data', + ); + extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_sql_query_data', compact($vars))); + // Count the users ... if ($sql_where) { diff --git a/phpBB/phpbb/cache/service.php b/phpBB/phpbb/cache/service.php index 56727c2ad5..a022c00bc6 100644 --- a/phpBB/phpbb/cache/service.php +++ b/phpBB/phpbb/cache/service.php @@ -141,6 +141,7 @@ class service $icons[$row['icons_id']]['img'] = $row['icons_url']; $icons[$row['icons_id']]['width'] = (int) $row['icons_width']; $icons[$row['icons_id']]['height'] = (int) $row['icons_height']; + $icons[$row['icons_id']]['alt'] = ($row['icons_alt']) ? $row['icons_alt'] : ''; $icons[$row['icons_id']]['display'] = (bool) $row['display_on_posting']; } $this->db->sql_freeresult($result); diff --git a/phpBB/phpbb/composer.json b/phpBB/phpbb/composer.json index 175be4b0ab..8241091dc1 100644 --- a/phpBB/phpbb/composer.json +++ b/phpBB/phpbb/composer.json @@ -22,6 +22,6 @@ "classmap": [""] }, "require": { - "php": ">=5.3.9" + "php": ">=5.4" } } diff --git a/phpBB/phpbb/console/command/cron/run.php b/phpBB/phpbb/console/command/cron/run.php index a9648fcd41..dea6493007 100644 --- a/phpBB/phpbb/console/command/cron/run.php +++ b/phpBB/phpbb/console/command/cron/run.php @@ -13,6 +13,7 @@ namespace phpbb\console\command\cron; +use phpbb\exception\runtime_exception; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; @@ -93,8 +94,7 @@ class run extends \phpbb\console\command\command } else { - $output->writeln('<error>' . $this->user->lang('CRON_LOCK_ERROR') . '</error>'); - return 1; + throw new runtime_exception('CRON_LOCK_ERROR', array(), null, 1); } } @@ -165,8 +165,7 @@ class run extends \phpbb\console\command\command } else { - $output->writeln('<error>' . $this->user->lang('CRON_NO_SUCH_TASK', $task_name) . '</error>'); - return 2; + throw new runtime_exception('CRON_NO_SUCH_TASK', array( $task_name), null, 2); } } } diff --git a/phpBB/phpbb/console/command/db/list_command.php b/phpBB/phpbb/console/command/db/list_command.php new file mode 100644 index 0000000000..708107b592 --- /dev/null +++ b/phpBB/phpbb/console/command/db/list_command.php @@ -0,0 +1,73 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\db; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class list_command extends \phpbb\console\command\db\migration_command +{ + protected function configure() + { + $this + ->setName('db:list') + ->setDescription($this->user->lang('CLI_DESCRIPTION_DB_LIST')) + ->addOption( + 'available', + 'u', + InputOption::VALUE_NONE, + $this->user->lang('CLI_MIGRATIONS_ONLY_AVAILABLE') + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $show_installed = !$input->getOption('available'); + $installed = $available = array(); + + foreach ($this->load_migrations() as $name) + { + if ($this->migrator->migration_state($name) !== false) + { + $installed[] = $name; + } + else + { + $available[] = $name; + } + } + + if ($show_installed) + { + $output->writeln('<info>' . $this->user->lang('CLI_MIGRATIONS_INSTALLED') . $this->user->lang('COLON') . '</info>'); + $output->writeln($installed); + + if (empty($installed)) + { + $output->writeln($this->user->lang('CLI_MIGRATIONS_EMPTY')); + } + + $output->writeln(''); + } + + $output->writeln('<info>' . $this->user->lang('CLI_MIGRATIONS_AVAILABLE') . $this->user->lang('COLON') . '</info>'); + $output->writeln($available); + + if (empty($available)) + { + $output->writeln($this->user->lang('CLI_MIGRATIONS_EMPTY')); + } + } +} diff --git a/phpBB/phpbb/console/command/db/migrate.php b/phpBB/phpbb/console/command/db/migrate.php index 2490bf1310..43029b7458 100644 --- a/phpBB/phpbb/console/command/db/migrate.php +++ b/phpBB/phpbb/console/command/db/migrate.php @@ -15,20 +15,8 @@ namespace phpbb\console\command\db; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -class migrate extends \phpbb\console\command\command +class migrate extends \phpbb\console\command\db\migration_command { - /** @var \phpbb\db\migrator */ - protected $migrator; - - /** @var \phpbb\extension\manager */ - protected $extension_manager; - - /** @var \phpbb\config\config */ - protected $config; - - /** @var \phpbb\cache\service */ - protected $cache; - /** @var \phpbb\log\log */ protected $log; @@ -40,14 +28,10 @@ class migrate extends \phpbb\console\command\command function __construct(\phpbb\user $user, \phpbb\db\migrator $migrator, \phpbb\extension\manager $extension_manager, \phpbb\config\config $config, \phpbb\cache\service $cache, \phpbb\log\log $log, \phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path) { - $this->migrator = $migrator; - $this->extension_manager = $extension_manager; - $this->config = $config; - $this->cache = $cache; $this->log = $log; $this->filesystem = $filesystem; $this->phpbb_root_path = $phpbb_root_path; - parent::__construct($user); + parent::__construct($user, $migrator, $extension_manager, $config, $cache); $this->user->add_lang(array('common', 'install', 'migrator')); } @@ -91,21 +75,4 @@ class migrate extends \phpbb\console\command\command $this->finalise_update(); $output->writeln($this->user->lang['DATABASE_UPDATE_COMPLETE']); } - - protected function load_migrations() - { - $migrations = $this->extension_manager - ->get_finder() - ->core_path('phpbb/db/migration/data/') - ->extension_directory('/migrations') - ->get_classes(); - - $this->migrator->set_migrations($migrations); - } - - protected function finalise_update() - { - $this->cache->purge(); - $this->config->increment('assets_version', 1); - } } diff --git a/phpBB/phpbb/console/command/db/migration_command.php b/phpBB/phpbb/console/command/db/migration_command.php new file mode 100644 index 0000000000..d44ef8c5cb --- /dev/null +++ b/phpBB/phpbb/console/command/db/migration_command.php @@ -0,0 +1,56 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\db; + +abstract class migration_command extends \phpbb\console\command\command +{ + /** @var \phpbb\db\migrator */ + protected $migrator; + + /** @var \phpbb\extension\manager */ + protected $extension_manager; + + /** @var \phpbb\config\config */ + protected $config; + + /** @var \phpbb\cache\service */ + protected $cache; + + function __construct(\phpbb\user $user, \phpbb\db\migrator $migrator, \phpbb\extension\manager $extension_manager, \phpbb\config\config $config, \phpbb\cache\service $cache) + { + $this->migrator = $migrator; + $this->extension_manager = $extension_manager; + $this->config = $config; + $this->cache = $cache; + parent::__construct($user); + } + + protected function load_migrations() + { + $migrations = $this->extension_manager + ->get_finder() + ->core_path('phpbb/db/migration/data/') + ->extension_directory('/migrations') + ->get_classes(); + + $this->migrator->set_migrations($migrations); + + return $migrations; + } + + protected function finalise_update() + { + $this->cache->purge(); + $this->config->increment('assets_version', 1); + } +} diff --git a/phpBB/phpbb/console/command/db/revert.php b/phpBB/phpbb/console/command/db/revert.php new file mode 100644 index 0000000000..838640968e --- /dev/null +++ b/phpBB/phpbb/console/command/db/revert.php @@ -0,0 +1,83 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\db; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class revert extends \phpbb\console\command\db\migration_command +{ + /** @var string phpBB root path */ + protected $phpbb_root_path; + + /** @var \phpbb\filesystem\filesystem_interface */ + protected $filesystem; + + function __construct(\phpbb\user $user, \phpbb\db\migrator $migrator, \phpbb\extension\manager $extension_manager, \phpbb\config\config $config, \phpbb\cache\service $cache, \phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path) + { + $this->filesystem = $filesystem; + $this->phpbb_root_path = $phpbb_root_path; + parent::__construct($user, $migrator, $extension_manager, $config, $cache); + $this->user->add_lang(array('common', 'migrator')); + } + + protected function configure() + { + $this + ->setName('db:revert') + ->setDescription($this->user->lang('CLI_DESCRIPTION_DB_REVERT')) + ->addArgument( + 'name', + InputArgument::REQUIRED, + $this->user->lang('CLI_MIGRATION_NAME') + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $name = str_replace('/', '\\', $input->getArgument('name')); + + $this->migrator->set_output_handler(new \phpbb\db\log_wrapper_migrator_output_handler($this->user, new console_migrator_output_handler($this->user, $output), $this->phpbb_root_path . 'store/migrations_' . time() . '.log', $this->filesystem)); + + $this->cache->purge(); + + if (!in_array($name, $this->load_migrations())) + { + $output->writeln('<error>' . $this->user->lang('MIGRATION_NOT_VALID', $name) . '</error>'); + return 1; + } + else if ($this->migrator->migration_state($name) === false) + { + $output->writeln('<error>' . $this->user->lang('MIGRATION_NOT_INSTALLED', $name) . '</error>'); + return 1; + } + + try + { + while ($this->migrator->migration_state($name) !== false) + { + $this->migrator->revert($name); + } + } + catch (\phpbb\db\migration\exception $e) + { + $output->writeln('<error>' . $e->getLocalisedMessage($this->user) . '</error>'); + $this->finalise_update(); + return 1; + } + + $this->finalise_update(); + } +} diff --git a/phpBB/phpbb/console/exception_subscriber.php b/phpBB/phpbb/console/exception_subscriber.php new file mode 100644 index 0000000000..b920d4abae --- /dev/null +++ b/phpBB/phpbb/console/exception_subscriber.php @@ -0,0 +1,74 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\console; + +use phpbb\exception\exception_interface; +use Symfony\Component\Console\ConsoleEvents; +use Symfony\Component\Console\Event\ConsoleExceptionEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class exception_subscriber implements EventSubscriberInterface +{ + /** + * @var \phpbb\language\language + */ + protected $language; + + /** + * Construct method + * + * @param \phpbb\language\language $language Language object + * @param bool $debug Debug mode + */ + public function __construct(\phpbb\language\language $language, $debug = false) + { + $this->language = $language; + $this->debug = $debug; + } + + /** + * This listener is run when the ConsoleEvents::EXCEPTION event is triggered. + * It translate the exception message. If din debug mode the original exception is embedded. + * + * @param ConsoleExceptionEvent $event + */ + public function on_exception(ConsoleExceptionEvent $event) + { + $original_exception = $event->getException(); + + if ($original_exception instanceof exception_interface) + { + $parameters = array_merge(array($original_exception->getMessage()), $original_exception->get_parameters()); + $message = call_user_func_array(array($this->language, 'lang'), $parameters); + + if ($this->debug) + { + $exception = new \RuntimeException($message , $original_exception->getCode(), $original_exception); + } + else + { + $exception = new \RuntimeException($message , $original_exception->getCode()); + } + + $event->setException($exception); + } + } + + static public function getSubscribedEvents() + { + return array( + ConsoleEvents::EXCEPTION => 'on_exception', + ); + } +} diff --git a/phpBB/phpbb/db/migration/data/v320/icons_alt.php b/phpBB/phpbb/db/migration/data/v320/icons_alt.php new file mode 100644 index 0000000000..7071ae78db --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v320/icons_alt.php @@ -0,0 +1,44 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v320; + +class icons_alt extends \phpbb\db\migration\migration +{ + static public function depends_on() + { + return array('\phpbb\db\migration\data\v310\dev'); + } + + public function update_schema() + { + return array( + 'add_columns' => array( + $this->table_prefix . 'icons' => array( + 'icons_alt' => array('VCHAR', '', 'after' => 'icons_height'), + ), + ), + ); + } + + public function revert_schema() + { + return array( + 'drop_columns' => array( + $this->table_prefix . 'icons' => array( + 'icons_alt', + ), + ), + ); + } +} diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php index 6902913c64..18c6403c07 100644 --- a/phpBB/phpbb/db/migrator.php +++ b/phpBB/phpbb/db/migrator.php @@ -416,6 +416,9 @@ class migrator if ($state['migration_data_done']) { + $this->output_handler->write(array('MIGRATION_REVERT_DATA_RUNNING', $name), migrator_output_handler_interface::VERBOSITY_VERBOSE); + $elapsed_time = microtime(true); + if ($state['migration_data_state'] !== 'revert_data') { $result = $this->process_data_step($migration->update_data(), $state['migration_data_state'], true); @@ -431,9 +434,22 @@ class migrator } $this->set_migration_state($name, $state); + + $elapsed_time = microtime(true) - $elapsed_time; + if ($state['migration_data_done']) + { + $this->output_handler->write(array('MIGRATION_REVERT_DATA_DONE', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_NORMAL); + } + else + { + $this->output_handler->write(array('MIGRATION_REVERT_DATA_IN_PROGRESS', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_VERY_VERBOSE); + } } else if ($state['migration_schema_done']) { + $this->output_handler->write(array('MIGRATION_REVERT_SCHEMA_RUNNING', $name), migrator_output_handler_interface::VERBOSITY_VERBOSE); + $elapsed_time = microtime(true); + $steps = $this->helper->get_schema_steps($migration->revert_schema()); $result = $this->process_data_step($steps, $state['migration_data_state']); @@ -448,6 +464,9 @@ class migrator unset($this->migration_state[$name]); } + + $elapsed_time = microtime(true) - $elapsed_time; + $this->output_handler->write(array('MIGRATION_REVERT_SCHEMA_DONE', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_NORMAL); } return true; diff --git a/phpBB/phpbb/di/extension/container_configuration.php b/phpBB/phpbb/di/extension/container_configuration.php index 4cc7c7c0d1..4585d6509e 100644 --- a/phpBB/phpbb/di/extension/container_configuration.php +++ b/phpBB/phpbb/di/extension/container_configuration.php @@ -31,6 +31,12 @@ class container_configuration implements ConfigurationInterface $rootNode ->children() ->booleanNode('require_dev_dependencies')->defaultValue(false)->end() + ->arrayNode('debug') + ->addDefaultsIfNotSet() + ->children() + ->booleanNode('exceptions')->defaultValue(false)->end() + ->end() + ->end() ->arrayNode('twig') ->addDefaultsIfNotSet() ->children() diff --git a/phpBB/phpbb/di/extension/core.php b/phpBB/phpbb/di/extension/core.php index 91b321a684..c48a80a558 100644 --- a/phpBB/phpbb/di/extension/core.php +++ b/phpBB/phpbb/di/extension/core.php @@ -80,6 +80,7 @@ class core extends Extension { $twig_environment_options['auto_reload'] = true; } + // Replace the 8th argument, the options passed to the environment $definition->replaceArgument(7, $twig_environment_options); @@ -88,6 +89,12 @@ class core extends Extension $definition = $container->getDefinition('template.twig.extensions.debug'); $definition->addTag('twig.extension'); } + + // Set the debug options + foreach ($config['debug'] as $name => $value) + { + $container->setParameter('debug.' . $name, $value); + } } /** diff --git a/phpBB/phpbb/install/module/requirements/task/check_server_environment.php b/phpBB/phpbb/install/module/requirements/task/check_server_environment.php index 50efdc55a2..62485a2097 100644 --- a/phpBB/phpbb/install/module/requirements/task/check_server_environment.php +++ b/phpBB/phpbb/install/module/requirements/task/check_server_environment.php @@ -95,7 +95,7 @@ class check_server_environment extends \phpbb\install\task_base { $php_version = PHP_VERSION; - if (version_compare($php_version, '5.3.9') < 0) + if (version_compare($php_version, '5.4') < 0) { $this->response_helper->add_error_message('PHP_VERSION_REQD', 'PHP_VERSION_REQD_EXPLAIN'); diff --git a/phpBB/phpbb/routing/file_locator.php b/phpBB/phpbb/routing/file_locator.php new file mode 100644 index 0000000000..64efcc6c76 --- /dev/null +++ b/phpBB/phpbb/routing/file_locator.php @@ -0,0 +1,33 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\routing; + +use phpbb\filesystem\filesystem_interface; +use Symfony\Component\Config\FileLocator; + +class file_locator extends FileLocator +{ + public function __construct(filesystem_interface $filesystem, $paths = []) + { + $paths = (array) $paths; + $absolute_paths = []; + + foreach ($paths as $path) + { + $absolute_paths[] = $filesystem->realpath($path); + } + + parent::__construct($absolute_paths); + } +} diff --git a/phpBB/phpbb/routing/loader_resolver.php b/phpBB/phpbb/routing/loader_resolver.php new file mode 100644 index 0000000000..13fbc6405c --- /dev/null +++ b/phpBB/phpbb/routing/loader_resolver.php @@ -0,0 +1,50 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\routing; + +use Symfony\Component\Config\Loader\LoaderResolverInterface; + +/** + * @see Symfony\Component\Config\Loader\LoaderResolver + */ +class loader_resolver implements LoaderResolverInterface +{ + /** + * @var \Symfony\Component\Config\Loader\LoaderInterface[] An array of LoaderInterface objects + */ + protected $loaders = []; + + public function __construct($loaders = []) + { + $this->loaders = $loaders; + } + + /** + * {@inheritdoc} + */ + public function resolve($resource, $type = null) + { + /** @var \Symfony\Component\Config\Loader\LoaderInterface $loader */ + foreach ($this->loaders as $loader) + { + if ($loader->supports($resource, $type)) + { + $loader->setResolver($this); + return $loader; + } + } + + return false; + } +} diff --git a/phpBB/phpbb/routing/resources_locator/chained_resources_locator.php b/phpBB/phpbb/routing/resources_locator/chained_resources_locator.php new file mode 100644 index 0000000000..db9abf2095 --- /dev/null +++ b/phpBB/phpbb/routing/resources_locator/chained_resources_locator.php @@ -0,0 +1,47 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\routing\resources_locator; + +class chained_resources_locator implements resources_locator_interface +{ + /** + * @var resources_locator_interface[] + */ + protected $locators; + + /** + * Construct method + * + * @param resources_locator_interface[] $locators Locators + */ + public function __construct($locators) + { + $this->locators = $locators; + } + + /** + * {@inheritdoc} + */ + public function locate_resources() + { + $resources = []; + + foreach ($this->locators as $locator) + { + $resources = array_merge($resources, $locator->locate_resources()); + } + + return $resources; + } +} diff --git a/phpBB/phpbb/routing/resources_locator/default_resources_locator.php b/phpBB/phpbb/routing/resources_locator/default_resources_locator.php new file mode 100644 index 0000000000..90c3877007 --- /dev/null +++ b/phpBB/phpbb/routing/resources_locator/default_resources_locator.php @@ -0,0 +1,105 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\routing\resources_locator; + +use phpbb\extension\manager; + +/** + * Locates the yaml routing resources located in the default locations + */ +class default_resources_locator implements resources_locator_interface +{ + /** + * phpBB root path + * + * @var string + */ + protected $phpbb_root_path; + + /** + * Name of the current environment + * + * @var string + */ + protected $environment; + + /** + * Extension manager + * + * @var manager + */ + protected $extension_manager; + + /** + * Construct method + * + * @param string $phpbb_root_path phpBB root path + * @param string $environment Name of the current environment + * @param manager $extension_manager Extension manager + */ + public function __construct($phpbb_root_path, $environment, manager $extension_manager = null) + { + $this->phpbb_root_path = $phpbb_root_path; + $this->environment = $environment; + $this->extension_manager = $extension_manager; + } + + /** + * {@inheritdoc} + */ + public function locate_resources() + { + $resources = [['config/' . $this->environment . '/routing/environment.yml', 'yaml']]; + + $resources = $this->append_ext_resources($resources); + + return $resources; + } + + /** + * Append extension resources to an array of resouces + * + * @see resources_locator_interface::locate_resources() + * + * @param mixed[] $resources List of resources + * + * @return mixed[] List of resources + */ + protected function append_ext_resources(array $resources) + { + if ($this->extension_manager !== null) + { + foreach ($this->extension_manager->all_enabled(false) as $path) + { + if (file_exists($this->phpbb_root_path . $path . 'config/' . $this->environment . '/routing/environment.yml')) + { + $resources[] = [$path . 'config/' . $this->environment . '/routing/environment.yml', 'yaml']; + } + else if (!is_dir($this->phpbb_root_path . $path . 'config/' . $this->environment)) + { + if (file_exists($this->phpbb_root_path . $path . 'config/default/routing/environment.yml')) + { + $resources[] = [$path . 'config/default/routing/environment.yml', 'yaml']; + } + else if (!is_dir($this->phpbb_root_path . $path . 'config/default/routing') && file_exists($this->phpbb_root_path . $path . 'config/routing.yml')) + { + $resources[] = [$path . 'config/routing.yml', 'yaml']; + } + } + } + } + + return $resources; + } +} diff --git a/phpBB/phpbb/routing/resources_locator/resources_locator_interface.php b/phpBB/phpbb/routing/resources_locator/resources_locator_interface.php new file mode 100644 index 0000000000..46335cb288 --- /dev/null +++ b/phpBB/phpbb/routing/resources_locator/resources_locator_interface.php @@ -0,0 +1,27 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\routing\resources_locator; + +interface resources_locator_interface +{ + /** + * Locates a list of resources used to load the routes + * + * Each entry of the list can be either the resource or an array composed of 2 elements: + * the resource and its type. + * + * @return mixed[] List of resources + */ + public function locate_resources(); +} diff --git a/phpBB/phpbb/routing/router.php b/phpBB/phpbb/routing/router.php index 5af005769f..5d237b6433 100644 --- a/phpBB/phpbb/routing/router.php +++ b/phpBB/phpbb/routing/router.php @@ -13,21 +13,20 @@ namespace phpbb\routing; +use phpbb\routing\resources_locator\resources_locator_interface; use Symfony\Component\Config\ConfigCache; -use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; -use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper; +use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper; -use Symfony\Component\Routing\Matcher\UrlMatcher; use Symfony\Component\Routing\Generator\UrlGenerator; +use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper; +use Symfony\Component\Routing\Matcher\UrlMatcher; use Symfony\Component\Routing\RequestContext; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouterInterface; -use Symfony\Component\Routing\Loader\YamlFileLoader; -use Symfony\Component\Config\FileLocator; -use phpbb\extension\manager; /** * Integration of all pieces of the routing system for easier use. @@ -35,11 +34,19 @@ use phpbb\extension\manager; class router implements RouterInterface { /** - * Extension manager - * - * @var manager + * @var ContainerInterface */ - protected $extension_manager; + protected $container; + + /** + * @var resources_locator_interface + */ + protected $resources_locator; + + /** + * @var LoaderInterface + */ + protected $loader; /** * phpBB root path @@ -63,13 +70,6 @@ class router implements RouterInterface protected $environment; /** - * YAML file(s) containing route information - * - * @var array - */ - protected $routing_files; - - /** * @var \Symfony\Component\Routing\Matcher\UrlMatcherInterface|null */ protected $matcher; @@ -85,37 +85,25 @@ class router implements RouterInterface protected $context; /** - * @var RouteCollection|null + * @var RouteCollection */ protected $route_collection; /** - * @var \phpbb\filesystem\filesystem_interface - */ - protected $filesystem; - - /** - * @var ContainerInterface - */ - protected $container; - - /** * Construct method * - * @param ContainerInterface $container DI container - * @param \phpbb\filesystem\filesystem_interface $filesystem Filesystem helper - * @param string $phpbb_root_path phpBB root path - * @param string $php_ext PHP file extension - * @param string $environment Name of the current environment - * @param manager $extension_manager Extension manager - * @param array $routing_files Array of strings containing paths to YAML files holding route information + * @param ContainerInterface $container DI container + * @param resources_locator_interface $resources_locator Resources locator + * @param LoaderInterface $loader Resources loader + * @param string $phpbb_root_path phpBB root path + * @param string $php_ext PHP file extension + * @param string $environment Name of the current environment */ - public function __construct(ContainerInterface $container, \phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path, $php_ext, $environment, manager $extension_manager = null, $routing_files = array()) + public function __construct(ContainerInterface $container, resources_locator_interface $resources_locator, LoaderInterface $loader, $phpbb_root_path, $php_ext, $environment) { $this->container = $container; - $this->filesystem = $filesystem; - $this->extension_manager = $extension_manager; - $this->routing_files = $routing_files; + $this->resources_locator = $resources_locator; + $this->loader = $loader; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; $this->environment = $environment; @@ -123,178 +111,28 @@ class router implements RouterInterface } /** - * Find the list of routing files + * Get the list of routes * - * @param array $paths Array of paths where to look for routing files (they must be relative to the phpBB root path). - * @return router + * @return RouteCollection Get the route collection */ - public function find_routing_files(array $paths) + public function get_routes() { - $this->routing_files = array('config/' . $this->environment . '/routing/environment.yml'); - foreach ($paths as $path) + if ($this->route_collection === null /*|| $this->route_collection->count() === 0*/) { - if (file_exists($this->phpbb_root_path . $path . 'config/' . $this->environment . '/routing/environment.yml')) - { - $this->routing_files[] = $path . 'config/' . $this->environment . '/routing/environment.yml'; - } - else if (!is_dir($this->phpbb_root_path . $path . 'config/' . $this->environment)) + $this->route_collection = new RouteCollection; + foreach ($this->resources_locator->locate_resources() as $resource) { - if (file_exists($this->phpbb_root_path . $path . 'config/default/routing/environment.yml')) + if (is_array($resource)) { - $this->routing_files[] = $path . 'config/default/routing/environment.yml'; + $this->route_collection->addCollection($this->loader->load($resource[0], $resource[1])); } - else if (!is_dir($this->phpbb_root_path . $path . 'config/default/routing') && file_exists($this->phpbb_root_path . $path . 'config/routing.yml')) + else { - $this->routing_files[] = $path . 'config/routing.yml'; + $this->route_collection->addCollection($this->loader->load($resource)); } } - } - return $this; - } - - /** - * Find a list of controllers - * - * @param string $base_path Base path to prepend to file paths - * @return router - */ - public function find($base_path = '') - { - if ($this->route_collection === null || $this->route_collection->count() === 0) - { - $this->route_collection = new RouteCollection; - foreach ($this->routing_files as $file_path) - { - $loader = new YamlFileLoader(new FileLocator($this->filesystem->realpath($base_path))); - $this->route_collection->addCollection($loader->load($file_path)); - } - } - - $this->resolveParameters($this->route_collection); - - return $this; - } - - /** - * Replaces placeholders with service container parameter values in: - * - the route defaults, - * - the route requirements, - * - the route path, - * - the route host, - * - the route schemes, - * - the route methods. - * - * @param RouteCollection $collection - */ - private function resolveParameters(RouteCollection $collection) - { - foreach ($collection as $route) - { - foreach ($route->getDefaults() as $name => $value) - { - $route->setDefault($name, $this->resolve($value)); - } - - $requirements = $route->getRequirements(); - unset($requirements['_scheme']); - unset($requirements['_method']); - - foreach ($requirements as $name => $value) - { - $route->setRequirement($name, $this->resolve($value)); - } - - $route->setPath($this->resolve($route->getPath())); - $route->setHost($this->resolve($route->getHost())); - - $schemes = array(); - foreach ($route->getSchemes() as $scheme) - { - $schemes = array_merge($schemes, explode('|', $this->resolve($scheme))); - } - - $route->setSchemes($schemes); - $methods = array(); - foreach ($route->getMethods() as $method) - { - $methods = array_merge($methods, explode('|', $this->resolve($method))); - } - - $route->setMethods($methods); - $route->setCondition($this->resolve($route->getCondition())); - } - } - - /** - * Recursively replaces placeholders with the service container parameters. - * - * @param mixed $value The source which might contain "%placeholders%" - * - * @return mixed The source with the placeholders replaced by the container - * parameters. Arrays are resolved recursively. - * - * @throws ParameterNotFoundException When a placeholder does not exist as a container parameter - * @throws RuntimeException When a container value is not a string or a numeric value - */ - private function resolve($value) - { - if (is_array($value)) - { - foreach ($value as $key => $val) - { - $value[$key] = $this->resolve($val); - } - - return $value; - } - - if (!is_string($value)) - { - return $value; - } - - $container = $this->container; - $escapedValue = preg_replace_callback('/%%|%([^%\s]++)%/', function ($match) use ($container, $value) - { - // skip %% - if (!isset($match[1])) - { - return '%%'; - } - - $resolved = $container->getParameter($match[1]); - if (is_string($resolved) || is_numeric($resolved)) - { - return (string) $resolved; - } - - throw new RuntimeException(sprintf( - 'The container parameter "%s", used in the route configuration value "%s", '. - 'must be a string or numeric, but it is of type %s.', - $match[1], - $value, - gettype($resolved) - ) - ); - }, $value); - - return str_replace('%%', '%', $escapedValue); - } - - /** - * Get the list of routes - * - * @return RouteCollection Get the route collection - */ - public function get_routes() - { - if ($this->route_collection == null || empty($this->routing_files)) - { - $this->find_routing_files( - ($this->extension_manager !== null) ? $this->extension_manager->all_enabled(false) : array() - ) - ->find($this->phpbb_root_path); + $this->resolveParameters($this->route_collection); } return $this->route_collection; @@ -365,6 +203,7 @@ class router implements RouterInterface return $this->matcher; } + /** * Creates a new dumped URL Matcher (dump it if necessary) */ @@ -457,4 +296,111 @@ class router implements RouterInterface { $this->generator = new UrlGenerator($this->get_routes(), $this->context); } + + /** + * Replaces placeholders with service container parameter values in: + * - the route defaults, + * - the route requirements, + * - the route path, + * - the route host, + * - the route schemes, + * - the route methods. + * + * @param RouteCollection $collection + */ + protected function resolveParameters(RouteCollection $collection) + { + /** @var \Symfony\Component\Routing\Route $route */ + foreach ($collection as $route) + { + foreach ($route->getDefaults() as $name => $value) + { + $route->setDefault($name, $this->resolve($value)); + } + + $requirements = $route->getRequirements(); + unset($requirements['_scheme']); + unset($requirements['_method']); + + foreach ($requirements as $name => $value) + { + $route->setRequirement($name, $this->resolve($value)); + } + + $route->setPath($this->resolve($route->getPath())); + $route->setHost($this->resolve($route->getHost())); + + $schemes = array(); + foreach ($route->getSchemes() as $scheme) + { + $schemes = array_merge($schemes, explode('|', $this->resolve($scheme))); + } + + $route->setSchemes($schemes); + $methods = array(); + foreach ($route->getMethods() as $method) + { + $methods = array_merge($methods, explode('|', $this->resolve($method))); + } + + $route->setMethods($methods); + $route->setCondition($this->resolve($route->getCondition())); + } + } + + /** + * Recursively replaces placeholders with the service container parameters. + * + * @param mixed $value The source which might contain "%placeholders%" + * + * @return mixed The source with the placeholders replaced by the container + * parameters. Arrays are resolved recursively. + * + * @throws ParameterNotFoundException When a placeholder does not exist as a container parameter + * @throws RuntimeException When a container value is not a string or a numeric value + */ + private function resolve($value) + { + if (is_array($value)) + { + foreach ($value as $key => $val) + { + $value[$key] = $this->resolve($val); + } + + return $value; + } + + if (!is_string($value)) + { + return $value; + } + + $container = $this->container; + $escapedValue = preg_replace_callback('/%%|%([^%\s]++)%/', function ($match) use ($container, $value) + { + // skip %% + if (!isset($match[1])) + { + return '%%'; + } + + $resolved = $container->getParameter($match[1]); + if (is_string($resolved) || is_numeric($resolved)) + { + return (string) $resolved; + } + + throw new RuntimeException(sprintf( + 'The container parameter "%s", used in the route configuration value "%s", '. + 'must be a string or numeric, but it is of type %s.', + $match[1], + $value, + gettype($resolved) + ) + ); + }, $value); + + return str_replace('%%', '%', $escapedValue); + } } diff --git a/phpBB/search.php b/phpBB/search.php index a211b113c0..13e842c7f8 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -430,6 +430,8 @@ if ($keywords || $author || $author_id || $search_id || $submit) gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param); $s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = ''; + + $template->assign_var('U_MARK_ALL_READ', ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums&mark_time=' . time()) : ''); break; case 'newposts': @@ -486,6 +488,24 @@ if ($keywords || $author || $author_id || $search_id || $submit) } } + /** + * Event to modify data after pre-made searches + * + * @event core.search_modify_param_after + * @var string l_search_title The title of the search page + * @var string search_id Predefined search type name + * @var string show_results Display topics or posts + * @var string sql SQL query corresponding to the pre-made search id + * @since 3.1.7-RC1 + */ + $vars = array( + 'l_search_title', + 'search_id', + 'show_results', + 'sql', + ); + extract($phpbb_dispatcher->trigger_event('core.search_modify_param_after', compact($vars))); + // show_results should not change after this $per_page = ($show_results == 'posts') ? $config['posts_per_page'] : $config['topics_per_page']; $total_match_count = 0; @@ -597,6 +617,20 @@ if ($keywords || $author || $author_id || $search_id || $submit) $u_search .= ($search_fields != 'all') ? '&sf=' . $search_fields : ''; $u_search .= ($return_chars != 300) ? '&ch=' . $return_chars : ''; + /** + * Event to add or modify search URL parameters + * + * @event core.search_modify_url_parameters + * @var string u_search Search URL parameters string + * @var string search_id Predefined search type name + * @since 3.1.7-RC1 + */ + $vars = array( + 'u_search', + 'search_id', + ); + extract($phpbb_dispatcher->trigger_event('core.search_modify_url_parameters', compact($vars))); + if ($sql_where) { if ($show_results == 'posts') @@ -707,6 +741,8 @@ if ($keywords || $author || $author_id || $search_id || $submit) $tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array(); } + $sql_order_by = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); + /** * Event to modify the SQL query before the topic data is retrieved * @@ -715,16 +751,30 @@ if ($keywords || $author || $author_id || $search_id || $submit) * @var string sql_from The SQL FROM string used by search to get topic data * @var string sql_where The SQL WHERE string used by search to get topic data * @var int total_match_count The total number of search matches + * @var array sort_by_sql Array of SQL sorting instructions + * @var string sort_dir The sorting direction + * @var string sort_key The sorting key + * @var string sql_order_by The SQL ORDER BY string used by search to get topic data * @since 3.1.0-a1 * @changed 3.1.0-RC5 Added total_match_count + * @changed 3.1.7-RC1 Added sort_by_sql, sort_dir, sort_key, sql_order_by */ - $vars = array('sql_select', 'sql_from', 'sql_where', 'total_match_count'); + $vars = array( + 'sql_select', + 'sql_from', + 'sql_where', + 'total_match_count', + 'sort_by_sql', + 'sort_dir', + 'sort_key', + 'sql_order_by', + ); extract($phpbb_dispatcher->trigger_event('core.search_get_topic_data', compact($vars))); $sql = "SELECT $sql_select FROM $sql_from - WHERE $sql_where"; - $sql .= ' ORDER BY ' . $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC'); + WHERE $sql_where + ORDER BY $sql_order_by"; } $result = $db->sql_query($sql); $result_topic_id = 0; diff --git a/phpBB/styles/prosilver/template/ajax.js b/phpBB/styles/prosilver/template/ajax.js index 76c605dd19..e3780f024a 100644 --- a/phpBB/styles/prosilver/template/ajax.js +++ b/phpBB/styles/prosilver/template/ajax.js @@ -242,7 +242,14 @@ phpbb.addAjaxCallback('vote_poll', function(res) { var mostVoted = (res.vote_counts[optionId] === mostVotes); var percent = (!res.total_votes) ? 0 : Math.round((res.vote_counts[optionId] / res.total_votes) * 100); var percentRel = (mostVotes === 0) ? 0 : Math.round((res.vote_counts[optionId] / mostVotes) * 100); - + var altText; + + altText = $this.attr('data-alt-text'); + if (voted) { + $this.attr('title', $.trim(altText)); + } else { + $this.attr('title', ''); + }; $this.toggleClass('voted', voted); $this.toggleClass('most-votes', mostVoted); diff --git a/phpBB/styles/prosilver/template/faq_body.html b/phpBB/styles/prosilver/template/faq_body.html index 34e594cd3e..e55c12ac48 100644 --- a/phpBB/styles/prosilver/template/faq_body.html +++ b/phpBB/styles/prosilver/template/faq_body.html @@ -36,7 +36,7 @@ <dd>{faq_block.faq_row.FAQ_ANSWER}</dd> </dl> <a href="#faqlinks" class="top"> - <i class="icon fa-chevron-circle-up fa-fw icon-gray"></i><span>{L_BACK_TO_TOP}</span> + <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i><span>{L_BACK_TO_TOP}</span> </a> <!-- IF not faq_block.faq_row.S_LAST_ROW --><hr class="dashed" /><!-- ENDIF --> <!-- END faq_row --> diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index 13a10c8cc0..c6f13df5c2 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -489,7 +489,7 @@ function parseDocument($container) { $linksFirst = $linksNotSkip.not(filterLast), // The items that will be hidden first $linksLast = $linksNotSkip.filter(filterLast), // The items that will be hidden last persistent = $this.attr('id') === 'nav-main', // Does this list already have a menu (such as quick-links)? - html = '<li class="responsive-menu hidden"><a href="javascript:void(0);" class="js-responsive-menu-link responsive-menu-link"><i class="icon fa-bars fa-fw"></i></a><div class="dropdown"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>', + html = '<li class="responsive-menu hidden"><a href="javascript:void(0);" class="js-responsive-menu-link responsive-menu-link"><i class="icon fa-bars fa-fw" aria-hidden="true"></i></a><div class="dropdown"><div class="pointer"><div class="pointer-inner" /></div><ul class="dropdown-contents" /></div></li>', slack = 3; // Vertical slack space (in pixels). Determines how sensitive the script is in determining whether a line-break has occured. // Add a hidden drop-down menu to each links list (except those that already have one) @@ -579,7 +579,8 @@ function parseDocument($container) { if ($this.hasClass('post-buttons')) { $('.button', $menuContents).removeClass('button'); - $('.js-responsive-menu-link').addClass('button'); + $('.sr-only', $menuContents).removeClass('sr-only'); + $('.js-responsive-menu-link').addClass('button').addClass('button-icon-only'); $('.js-responsive-menu-link .icon').removeClass('fa-bars').addClass('fa-ellipsis-h'); } copied1 = true; diff --git a/phpBB/styles/prosilver/template/forumlist_body.html b/phpBB/styles/prosilver/template/forumlist_body.html index 876f8d883a..0bbaa9beb3 100644 --- a/phpBB/styles/prosilver/template/forumlist_body.html +++ b/phpBB/styles/prosilver/template/forumlist_body.html @@ -38,7 +38,7 @@ <!-- IF S_ENABLE_FEEDS and forumrow.S_FEED_ENABLED --> <!-- <a class="feed-icon-forum" title="{L_FEED} - {forumrow.FORUM_NAME}" href="{U_FEED}?f={forumrow.FORUM_ID}"> - <i class="icon fa-rss-square fa-fw icon-orange"></i><span class="sr-only">{L_FEED} - {forumrow.FORUM_NAME}</span> + <i class="icon fa-rss-square fa-fw icon-orange" aria-hidden="true"></i><span class="sr-only">{L_FEED} - {forumrow.FORUM_NAME}</span> </a> --> <!-- ENDIF --> @@ -53,7 +53,7 @@ <br /><strong>{forumrow.L_SUBFORUM_STR}{L_COLON}</strong> <!-- BEGIN subforum --> <a href="{forumrow.subforum.U_SUBFORUM}" class="subforum<!-- IF forumrow.subforum.S_UNREAD --> unread<!-- ELSE --> read<!-- ENDIF -->" title="<!-- IF forumrow.subforum.S_UNREAD -->{L_UNREAD_POSTS}<!-- ELSE -->{L_NO_UNREAD_POSTS}<!-- ENDIF -->"> - <i class="icon fa-file-o fa-fw <!-- IF forumrow.subforum.S_UNREAD --> icon-red<!-- ELSE --> icon-blue<!-- ENDIF --> icon-md"></i>{forumrow.subforum.SUBFORUM_NAME} + <i class="icon fa-file-o fa-fw <!-- IF forumrow.subforum.S_UNREAD --> icon-red<!-- ELSE --> icon-blue<!-- ENDIF --> icon-md" aria-hidden="true"></i>{forumrow.subforum.SUBFORUM_NAME} </a> <!-- IF not forumrow.subforum.S_LAST_ROW -->{L_COMMA_SEPARATOR}<!-- ENDIF --> <!-- END subforum --> @@ -80,11 +80,11 @@ <span> <!-- IF forumrow.U_UNAPPROVED_TOPICS --> <a href="{forumrow.U_UNAPPROVED_TOPICS}" title="{TOPICS_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPICS_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPICS_UNAPPROVED}</span> </a> <!-- ELSEIF forumrow.U_UNAPPROVED_POSTS --> <a href="{forumrow.U_UNAPPROVED_POSTS}" title="{POSTS_UNAPPROVED_FORUM}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{POSTS_UNAPPROVED_FORUM}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{POSTS_UNAPPROVED_FORUM}</span> </a> <!-- ENDIF --> <!-- IF forumrow.LAST_POST_TIME --> @@ -96,7 +96,7 @@ {L_POST_BY_AUTHOR} {forumrow.LAST_POSTER_FULL} <!-- IF not S_IS_BOT --> <a href="{forumrow.U_LAST_POST}" title="{VIEW_LATEST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <!-- ENDIF --> <br />{forumrow.LAST_POST_TIME} diff --git a/phpBB/styles/prosilver/template/jumpbox.html b/phpBB/styles/prosilver/template/jumpbox.html index f76c8e82f5..0c40e85783 100644 --- a/phpBB/styles/prosilver/template/jumpbox.html +++ b/phpBB/styles/prosilver/template/jumpbox.html @@ -2,25 +2,25 @@ <!-- IF S_VIEWTOPIC --> <p class="jumpbox-return"> <a href="{U_VIEW_FORUM}" class="left-box arrow-{S_CONTENT_FLOW_BEGIN}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_TO_FORUM}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_TO_FORUM}</span> </a> </p> <!-- ELSEIF S_VIEWFORUM --> <p class="jumpbox-return"> <a href="{U_INDEX}" class="left-box arrow-{S_CONTENT_FLOW_BEGIN}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_TO_INDEX}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_TO_INDEX}</span> </a> </p> <!-- ELSEIF SEARCH_TOPIC --> <p class="jumpbox-return"> <a class="left-box arrow-{S_CONTENT_FLOW_BEGIN}" href="{U_SEARCH_TOPIC}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_TO_TOPIC}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_TO_TOPIC}</span> </a> </p> <!-- ELSEIF S_SEARCH_ACTION --> <p class="jumpbox-return"> <a class="left-box arrow-{S_CONTENT_FLOW_BEGIN}" href="{U_SEARCH}" title="{L_SEARCH_ADV}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_GO_TO_SEARCH_ADV}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_GO_TO_SEARCH_ADV}</span> </a> </p> <!-- ENDIF --> @@ -28,9 +28,9 @@ <!-- IF S_DISPLAY_JUMPBOX --> <div class="jumpbox dropdown-container dropdown-container-right<!-- IF not S_IN_MCP --> dropdown-up<!-- ENDIF --> dropdown-{S_CONTENT_FLOW_BEGIN} dropdown-button-control" id="jumpbox"> - <span title="<!-- IF S_IN_MCP and S_MERGE_SELECT -->{L_SELECT_TOPICS_FROM}<!-- ELSEIF S_IN_MCP -->{L_MODERATE_FORUM}<!-- ELSE -->{L_JUMP_TO}<!-- ENDIF -->" class="button dropdown-trigger dropdown-select"> + <span title="<!-- IF S_IN_MCP and S_MERGE_SELECT -->{L_SELECT_TOPICS_FROM}<!-- ELSEIF S_IN_MCP -->{L_MODERATE_FORUM}<!-- ELSE -->{L_JUMP_TO}<!-- ENDIF -->" class="button button-secondary dropdown-trigger dropdown-select"> <span><!-- IF S_IN_MCP and S_MERGE_SELECT -->{L_SELECT_TOPICS_FROM}<!-- ELSEIF S_IN_MCP -->{L_MODERATE_FORUM}<!-- ELSE -->{L_JUMP_TO}<!-- ENDIF --></span> - <span class="caret"><i class="icon fa-sort-down fa-fw"></i></span> + <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> diff --git a/phpBB/styles/prosilver/template/mcp_forum.html b/phpBB/styles/prosilver/template/mcp_forum.html index c1e3cc3497..1f48b19c18 100644 --- a/phpBB/styles/prosilver/template/mcp_forum.html +++ b/phpBB/styles/prosilver/template/mcp_forum.html @@ -47,24 +47,24 @@ <!-- EVENT mcp_forum_topic_title_after --> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_DELETED or topicrow.S_POSTS_DELETED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_DELETED"> - <i class="icon fa-recycle fa-fw icon-green"></i><span class="sr-only">{TOPIC_DELETED}</span> + <i class="icon fa-recycle fa-fw icon-green" aria-hidden="true"></i><span class="sr-only">{TOPIC_DELETED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_REPORTED --> <a href="{topicrow.U_MCP_REPORT}" title="{TOPIC_REPORTED}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_MOVED_TOPIC and S_CAN_DELETE --> <a href="{topicrow.U_DELETE_TOPIC}" class="topictitle">[ {L_DELETE_SHADOW_TOPIC} ]</a><!-- ENDIF --> <br /> <div class="responsive-show" style="display: none;"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} « {topicrow.LAST_POST_TIME}<br /> </div> <span class="responsive-show left-box" style="display: none;">{L_REPLIES}{L_COLON} <strong>{topicrow.REPLIES}</strong></span> @@ -85,7 +85,7 @@ <!-- ENDIF --> <div class="responsive-hide"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} </div> <!-- EVENT topiclist_row_append --> diff --git a/phpBB/styles/prosilver/template/mcp_front.html b/phpBB/styles/prosilver/template/mcp_front.html index 1a6e478287..97775814db 100644 --- a/phpBB/styles/prosilver/template/mcp_front.html +++ b/phpBB/styles/prosilver/template/mcp_front.html @@ -30,7 +30,7 @@ <dl> <dt> <div class="list-inner"> - <a href="{unapproved.U_POST_DETAILS}" class="topictitle">{unapproved.SUBJECT}</a> <i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{unapproved.U_POST_DETAILS}" class="topictitle">{unapproved.SUBJECT}</a> <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> {L_POSTED} {L_POST_BY_AUTHOR} {unapproved.AUTHOR_FULL} » {unapproved.POST_TIME} </div> </dt> @@ -86,12 +86,12 @@ <dl> <dt> <div class="list-inner"> - <a href="{report.U_POST_DETAILS}#reports" class="topictitle">{report.SUBJECT}</a> <i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{report.U_POST_DETAILS}#reports" class="topictitle">{report.SUBJECT}</a> <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> <span>{L_POSTED} {L_POST_BY_AUTHOR} {report.AUTHOR_FULL} » {report.POST_TIME}</span> </div> </dt> <dd class="moderation"> - <span>{L_REPORTED} {L_POST_BY_AUTHOR} {report.REPORTER_FULL} {L_REPORTED_ON_DATE} <i class="icon fa-paperclip fa-fw"></i> <br /> + <span>{L_REPORTED} {L_POST_BY_AUTHOR} {report.REPORTER_FULL} {L_REPORTED_ON_DATE} <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> {L_FORUM}{L_COLON} <a href="{report.U_FORUM}">{report.FORUM_NAME}</a></span> </dd> </dl> @@ -129,7 +129,7 @@ <dl> <dt> <div class="list-inner"> - <a href="{pm_report.U_PM_DETAILS}" class="topictitle">{pm_report.PM_SUBJECT}</a> <i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{pm_report.U_PM_DETAILS}" class="topictitle">{pm_report.PM_SUBJECT}</a> <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> <span>{L_MESSAGE_BY_AUTHOR} {pm_report.PM_AUTHOR_FULL} » {pm_report.PM_TIME}</span><br /> <span>{L_MESSAGE_TO} {pm_report.RECIPIENTS}</span> </div> diff --git a/phpBB/styles/prosilver/template/mcp_post.html b/phpBB/styles/prosilver/template/mcp_post.html index e1e4ff4732..a0b470cbca 100644 --- a/phpBB/styles/prosilver/template/mcp_post.html +++ b/phpBB/styles/prosilver/template/mcp_post.html @@ -59,7 +59,7 @@ <!-- IF U_EDIT --> <li> <a href="{U_EDIT}" title="{L_EDIT_POST}" class="button"> - <i class="icon fa-pencil fa-fw"></i><span>{L_EDIT_POST}</span> + <i class="icon fa-pencil fa-fw" aria-hidden="true"></i><span class="sr-only">{L_EDIT_POST}</span> </a> </li> <!-- ENDIF --> @@ -73,7 +73,7 @@ <!-- IF S_BCC_RECIPIENT --><br /><strong>{L_BCC}{L_COLON}</strong> <!-- BEGIN bcc_recipient --><!-- IF bcc_recipient.NAME_FULL -->{bcc_recipient.NAME_FULL}<!-- ELSE --><a href="{bcc_recipient.U_VIEW}" style="color:<!-- IF bcc_recipient.COLOUR -->{bcc_recipient.COLOUR}<!-- ELSEIF bcc_recipient.IS_GROUP -->#0000FF<!-- ENDIF -->;">{bcc_recipient.NAME}</a><!-- ENDIF --> <!-- END bcc_recipient --><!-- ENDIF --> </p> <!-- ELSE --> - <p class="author"><span><i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{MINI_POST_IMG}</span></span> {L_POSTED} {L_POST_BY_AUTHOR} {POST_AUTHOR_FULL} » {POST_DATE}</p> + <p class="author"><span><i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{MINI_POST_IMG}</span></span> {L_POSTED} {L_POST_BY_AUTHOR} {POST_AUTHOR_FULL} » {POST_DATE}</p> <!-- ENDIF --> <!-- IF S_POST_UNAPPROVED --> @@ -91,9 +91,9 @@ <form method="post" id="mcp_approve" action="{U_APPROVE_ACTION}"> <p class="post-notice deleted"> - <input class="button2" type="submit" value="{L_DELETE}" name="action[disapprove]" /> + <!-- IF S_CAN_DELETE_POST --><input class="button2" type="submit" value="{L_DELETE}" name="action[delete]" /> <!-- ENDIF --> <input class="button1" type="submit" value="{L_RESTORE}" name="action[restore]" /> - <!-- IF not S_FIRST_POST --><input type="hidden" name="mode" value="unapproved_posts" /><!-- ENDIF --> + <!-- IF not S_FIRST_POST --><input type="hidden" name="mode" value="deleted_posts" /><!-- ENDIF --> <input type="hidden" name="post_id_list[]" value="{POST_ID}" /> {S_FORM_TOKEN} </p> @@ -102,7 +102,7 @@ <!-- IF S_MESSAGE_REPORTED --> <p class="post-notice reported"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> <a href="{U_MCP_REPORT}"><strong>{L_MESSAGE_REPORTED}</strong></a> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> <a href="{U_MCP_REPORT}"><strong>{L_MESSAGE_REPORTED}</strong></a> </p> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/mcp_queue.html b/phpBB/styles/prosilver/template/mcp_queue.html index e6ce134794..169d201b16 100644 --- a/phpBB/styles/prosilver/template/mcp_queue.html +++ b/phpBB/styles/prosilver/template/mcp_queue.html @@ -48,7 +48,7 @@ <dl> <dt> <div class="list-inner"> - <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.POST_SUBJECT}</a> <i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.POST_SUBJECT}</a> <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> <span>{L_POSTED} {L_POST_BY_AUTHOR} {postrow.POST_AUTHOR_FULL} » {postrow.POST_TIME}</span> </div> </dt> diff --git a/phpBB/styles/prosilver/template/mcp_reports.html b/phpBB/styles/prosilver/template/mcp_reports.html index 10023f395b..fbdd63ae9c 100644 --- a/phpBB/styles/prosilver/template/mcp_reports.html +++ b/phpBB/styles/prosilver/template/mcp_reports.html @@ -46,7 +46,7 @@ <!-- IF S_PM --> <dt> <div class="list-inner"> - <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.PM_SUBJECT}</a> <i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.PM_SUBJECT}</a> <i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> <span>{L_MESSAGE_BY_AUTHOR} {postrow.PM_AUTHOR_FULL} » {postrow.PM_TIME}</span><br /> <span>{L_MESSAGE_TO} {postrow.RECIPIENTS}</span> <div class="responsive-show" style="display: none;"> @@ -60,7 +60,7 @@ <!-- ELSE --> <dt> <div class="list-inner"> - <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.POST_SUBJECT}</a><i class="icon fa-paperclip fa-fw"></i> <br /> + <a href="{postrow.U_VIEW_DETAILS}" class="topictitle">{postrow.POST_SUBJECT}</a><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <br /> <span>{L_POSTED} {L_POST_BY_AUTHOR} {postrow.POST_AUTHOR_FULL} » {postrow.POST_TIME}</span> <div class="responsive-show" style="display: none;"> {L_REPORTER}{L_COLON} {postrow.REPORTER_FULL} « {postrow.REPORT_TIME}<br /> diff --git a/phpBB/styles/prosilver/template/mcp_topic.html b/phpBB/styles/prosilver/template/mcp_topic.html index 0398b773c7..9ab0b8e4cc 100644 --- a/phpBB/styles/prosilver/template/mcp_topic.html +++ b/phpBB/styles/prosilver/template/mcp_topic.html @@ -100,8 +100,8 @@ <div class="postbody" id="pr{postrow.POST_ID}"> <ul class="post-buttons"> <li> - <a href="{postrow.U_POST_DETAILS}" title="{L_POST_DETAILS}" class="button"> - <i class="icon fa-info fa-fw"></i><span>{L_POST_DETAILS}</span> + <a href="{postrow.U_POST_DETAILS}" title="{L_POST_DETAILS}" class="button button-icon-only"> + <i class="icon fa-info fa-fw" aria-hidden="true"></i><span class="sr-only">{L_POST_DETAILS}</span> </a> </li> <li> @@ -114,7 +114,7 @@ <h3><a href="{postrow.U_POST_DETAILS}">{postrow.POST_SUBJECT}</a></h3> <p class="author"> <a href="#pr{postrow.POST_ID}" title="{postrow.MINI_POST}"> - <i class="icon fa-file fa-fw icon-lightgray icon-tiny"></i><span class="sr-only">{postrow.MINI_POST}</span> + <i class="icon fa-file fa-fw icon-lightgray icon-tiny" aria-hidden="true"></i><span class="sr-only">{postrow.MINI_POST}</span> </a> {L_POSTED} {postrow.POST_DATE} {L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong><!-- IF postrow.U_MCP_DETAILS --> [ <a href="{postrow.U_MCP_DETAILS}">{L_POST_DETAILS}</a> ]<!-- ENDIF --> </p> <!-- IF postrow.S_POST_UNAPPROVED --> diff --git a/phpBB/styles/prosilver/template/mcp_whois.html b/phpBB/styles/prosilver/template/mcp_whois.html index bb11e86b2d..1d08a4627e 100644 --- a/phpBB/styles/prosilver/template/mcp_whois.html +++ b/phpBB/styles/prosilver/template/mcp_whois.html @@ -5,7 +5,7 @@ <div class="inner"> <p> <a href="{U_RETURN_POST}" class="arrow-{S_CONTENT_FLOW_BEGIN}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_POST}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_POST}</span> </a> </p> <div class="postbody"><div class="content"> @@ -13,7 +13,7 @@ </div></div> <p> <a href="{U_RETURN_POST}" class="arrow-{S_CONTENT_FLOW_BEGIN}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_POST}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_POST}</span> </a> </p> </div> diff --git a/phpBB/styles/prosilver/template/message_body.html b/phpBB/styles/prosilver/template/message_body.html index d05d07ec40..330203e19e 100644 --- a/phpBB/styles/prosilver/template/message_body.html +++ b/phpBB/styles/prosilver/template/message_body.html @@ -11,7 +11,7 @@ <!-- IF SCRIPT_NAME == "search" and not S_BOARD_DISABLED and not S_NO_SEARCH and L_RETURN_TO_SEARCH_ADV --> <p> <a href="{U_SEARCH}" class="arrow-{S_CONTENT_FLOW_BEGIN}" accesskey="r"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_GO_TO_SEARCH_ADV}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_GO_TO_SEARCH_ADV}</span> </a> </p> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/navbar_footer.html b/phpBB/styles/prosilver/template/navbar_footer.html index 5ea8fd80c8..a6729cac7c 100644 --- a/phpBB/styles/prosilver/template/navbar_footer.html +++ b/phpBB/styles/prosilver/template/navbar_footer.html @@ -6,14 +6,14 @@ <!-- IF U_SITE_HOME --> <span class="crumb"> <a href="{U_SITE_HOME}" data-navbar-reference="home"> - <i class="icon fa-home fa-fw"></i><span>{L_SITE_HOME}</span> + <i class="icon fa-home fa-fw" aria-hidden="true"></i><span>{L_SITE_HOME}</span> </a> </span> <!-- ENDIF --> <!-- EVENT overall_footer_breadcrumb_prepend --> <span class="crumb"> <a href="{U_INDEX}" data-navbar-reference="index"> - <i class="icon fa-home fa-fw"></i><span>{L_INDEX}</span> + <i class="icon fa-home fa-fw" aria-hidden="true"></i><span>{L_INDEX}</span> </a> </span> <!-- EVENT overall_footer_breadcrumb_append --> @@ -21,7 +21,7 @@ <!-- IF U_WATCH_FORUM_LINK and not S_IS_BOT --> <li data-last-responsive="true"> <a href="{U_WATCH_FORUM_LINK}" title="{S_WATCH_FORUM_TITLE}" data-ajax="toggle_link" data-toggle-class="icon <!-- IF S_WATCHING_FORUM -->fa-check-square-o<!-- ELSE -->fa-square-o<!-- ENDIF --> fa-fw" data-toggle-text="{S_WATCH_FORUM_TOGGLE}" data-toggle-url="{U_WATCH_FORUM_TOGGLE}"> - <i class="icon <!-- IF S_WATCHING_FORUM -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw"></i><span>{S_WATCH_FORUM_TITLE}</span> + <i class="icon <!-- IF S_WATCHING_FORUM -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw" aria-hidden="true"></i><span>{S_WATCH_FORUM_TITLE}</span> </a> </li> <!-- ENDIF --> @@ -32,13 +32,13 @@ <!-- IF not S_IS_BOT --> <li class="rightside"> <a href="{U_DELETE_COOKIES}" data-ajax="true" data-refresh="true" role="menuitem"> - <i class="icon fa-trash fa-fw"></i><span>{L_DELETE_COOKIES}</span> + <i class="icon fa-trash fa-fw" aria-hidden="true"></i><span>{L_DELETE_COOKIES}</span> </a> </li> <!-- IF S_DISPLAY_MEMBERLIST --> <li class="rightside" data-last-responsive="true"> <a href="{U_MEMBERLIST}" title="{L_MEMBERLIST_EXPLAIN}" role="menuitem"> - <i class="icon fa-group fa-fw"></i><span>{L_MEMBERLIST}</span> + <i class="icon fa-group fa-fw" aria-hidden="true"></i><span>{L_MEMBERLIST}</span> </a> </li> <!-- ENDIF --> @@ -47,7 +47,7 @@ <!-- IF U_TEAM --> <li class="rightside" data-last-responsive="true"> <a href="{U_TEAM}" role="menuitem"> - <i class="icon fa-shield fa-fw"></i><span>{L_THE_TEAM}</span> + <i class="icon fa-shield fa-fw" aria-hidden="true"></i><span>{L_THE_TEAM}</span> </a> </li> <!-- ENDIF --> @@ -55,7 +55,7 @@ <!-- IF U_CONTACT_US --> <li class="rightside" data-last-responsive="true"> <a href="{U_CONTACT_US}" role="menuitem"> - <i class="icon fa-envelope fa-fw"></i><span>{L_CONTACT_US}</span> + <i class="icon fa-envelope fa-fw" aria-hidden="true"></i><span>{L_CONTACT_US}</span> </a> </li> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/navbar_header.html b/phpBB/styles/prosilver/template/navbar_header.html index ab3dbc80aa..acd71daaaa 100644 --- a/phpBB/styles/prosilver/template/navbar_header.html +++ b/phpBB/styles/prosilver/template/navbar_header.html @@ -5,7 +5,7 @@ <li id="quick-links" class="quick-links dropdown-container<!-- IF not S_DISPLAY_QUICK_LINKS and not S_DISPLAY_SEARCH --> hidden<!-- ENDIF -->" data-skip-responsive="true"> <a href="#" class="dropdown-trigger"> - <i class="icon fa-bars fa-fw"></i><span>{L_QUICK_LINKS}</span> + <i class="icon fa-bars fa-fw" aria-hidden="true"></i><span>{L_QUICK_LINKS}</span> </a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> @@ -17,38 +17,38 @@ <!-- IF S_REGISTERED_USER --> <li> <a href="{U_SEARCH_SELF}" role="menuitem"> - <i class="icon fa-file-o fa-fw icon-gray"></i><span>{L_SEARCH_SELF}</span> + <i class="icon fa-file-o fa-fw icon-gray" aria-hidden="true"></i><span>{L_SEARCH_SELF}</span> </a> </li> <!-- ENDIF --> <!-- IF S_USER_LOGGED_IN --> <li> <a href="{U_SEARCH_NEW}" role="menuitem"> - <i class="icon fa-file-o fa-fw icon-red"></i><span>{L_SEARCH_NEW}</span> + <i class="icon fa-file-o fa-fw icon-red" aria-hidden="true"></i><span>{L_SEARCH_NEW}</span> </a> </li> <!-- ENDIF --> <!-- IF S_LOAD_UNREADS --> <li> <a href="{U_SEARCH_UNREAD}" role="menuitem"> - <i class="icon fa-file-o fa-fw icon-red"></i><span>{L_SEARCH_UNREAD}</span> + <i class="icon fa-file-o fa-fw icon-red" aria-hidden="true"></i><span>{L_SEARCH_UNREAD}</span> </a> </li> <!-- ENDIF --> <li> <a href="{U_SEARCH_UNANSWERED}" role="menuitem"> - <i class="icon fa-file-o fa-fw icon-gray"></i><span>{L_SEARCH_UNANSWERED}</span> + <i class="icon fa-file-o fa-fw icon-gray" aria-hidden="true"></i><span>{L_SEARCH_UNANSWERED}</span> </a> </li> <li> <a href="{U_SEARCH_ACTIVE_TOPICS}" role="menuitem"> - <i class="icon fa-file-o fa-fw icon-blue"></i><span>{L_SEARCH_ACTIVE_TOPICS}</span> + <i class="icon fa-file-o fa-fw icon-blue" aria-hidden="true"></i><span>{L_SEARCH_ACTIVE_TOPICS}</span> </a> </li> <li class="separator"></li> <li> <a href="{U_SEARCH}" role="menuitem"> - <i class="icon fa-search fa-fw"></i><span>{L_SEARCH}</span> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span>{L_SEARCH}</span> </a> </li> <!-- ENDIF --> @@ -58,14 +58,14 @@ <!-- IF S_DISPLAY_MEMBERLIST --> <li> <a href="{U_MEMBERLIST}" role="menuitem"> - <i class="icon fa-group fa-fw"></i><span>{L_MEMBERLIST}</span> + <i class="icon fa-group fa-fw" aria-hidden="true"></i><span>{L_MEMBERLIST}</span> </a> </li> <!-- ENDIF --> <!-- IF U_TEAM --> <li> <a href="{U_TEAM}" role="menuitem"> - <i class="icon fa-shield fa-fw"></i><span>{L_THE_TEAM}</span> + <i class="icon fa-shield fa-fw" aria-hidden="true"></i><span>{L_THE_TEAM}</span> </a> </li> <!-- ENDIF --> @@ -80,21 +80,21 @@ <!-- EVENT overall_header_navigation_prepend --> <li <!-- IF not S_USER_LOGGED_IN -->data-skip-responsive="true"<!-- ELSE -->data-last-responsive="true"<!-- ENDIF -->> <a href="{U_FAQ}" rel="help" title="{L_FAQ_EXPLAIN}" role="menuitem"> - <i class="icon fa-question-circle fa-fw"></i><span>{L_FAQ}</span> + <i class="icon fa-question-circle fa-fw" aria-hidden="true"></i><span>{L_FAQ}</span> </a> </li> <!-- EVENT overall_header_navigation_append --> <!-- IF U_ACP --> <li data-last-responsive="true"> <a href="{U_ACP}" title="{L_ACP}" role="menuitem"> - <i class="icon fa-cogs fa-fw"></i><span>{L_ACP_SHORT}</span> + <i class="icon fa-cogs fa-fw" aria-hidden="true"></i><span>{L_ACP_SHORT}</span> </a> </li> <!-- ENDIF --> <!-- IF U_MCP --> <li data-last-responsive="true"> <a href="{U_MCP}" title="{L_MCP}" role="menuitem"> - <i class="icon fa-gavel fa-fw"></i><span>{L_MCP_SHORT}</span> + <i class="icon fa-gavel fa-fw" aria-hidden="true"></i><span>{L_MCP_SHORT}</span> </a> </li> <!-- ENDIF --> @@ -110,7 +110,7 @@ <!-- IF U_RESTORE_PERMISSIONS --> <li> <a href="{U_RESTORE_PERMISSIONS}"> - <i class="icon fa-refresh fa-fw"></i><span>{L_RESTORE_PERMISSIONS}</span> + <i class="icon fa-refresh fa-fw" aria-hidden="true"></i><span>{L_RESTORE_PERMISSIONS}</span> </a> </li> <!-- ENDIF --> @@ -119,12 +119,12 @@ <li> <a href="{U_PROFILE}" title="{L_PROFILE}" role="menuitem"> - <i class="icon fa-sliders fa-fw"></i><span>{L_PROFILE}</span> + <i class="icon fa-sliders fa-fw" aria-hidden="true"></i><span>{L_PROFILE}</span> </a> </li> <li> <a href="{U_USER_PROFILE}" title="{L_READ_PROFILE}" role="menuitem"> - <i class="icon fa-user fa-fw"></i><span>{L_READ_PROFILE}</span> + <i class="icon fa-user fa-fw" aria-hidden="true"></i><span>{L_READ_PROFILE}</span> </a> </li> @@ -133,7 +133,7 @@ <li class="separator"></li> <li> <a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="x" role="menuitem"> - <i class="icon fa-power-off fa-fw"></i><span>{L_LOGIN_LOGOUT}</span> + <i class="icon fa-power-off fa-fw" aria-hidden="true"></i><span>{L_LOGIN_LOGOUT}</span> </a> </li> </ul> @@ -144,14 +144,14 @@ <!-- IF S_DISPLAY_PM --> <li class="rightside" data-skip-responsive="true"> <a href="{U_PRIVATEMSGS}" role="menuitem"> - <i class="icon fa-inbox fa-fw"></i><span><span>{L_PRIVATE_MESSAGES} [</span><strong>{PRIVATE_MESSAGE_COUNT}</strong><span>]</span></span> + <i class="icon fa-inbox fa-fw" aria-hidden="true"></i><span><span>{L_PRIVATE_MESSAGES} [</span><strong>{PRIVATE_MESSAGE_COUNT}</strong><span>]</span></span> </a> </li> <!-- ENDIF --> <!-- IF S_NOTIFICATIONS_DISPLAY --> <li class="dropdown-container dropdown-{S_CONTENT_FLOW_END} rightside" data-skip-responsive="true"> <a href="{U_VIEW_ALL_NOTIFICATIONS}" id="notification_list_button" class="dropdown-trigger"> - <i class="icon fa-bell fa-fw"></i><span><span>{L_NOTIFICATIONS} [</span><strong>{NOTIFICATIONS_COUNT}</strong><span>]</span></span> + <i class="icon fa-bell fa-fw" aria-hidden="true"></i><span><span>{L_NOTIFICATIONS} [</span><strong>{NOTIFICATIONS_COUNT}</strong><span>]</span></span> </a> <!-- INCLUDE notification_dropdown.html --> </li> @@ -159,13 +159,13 @@ <!-- ELSE --> <li class="rightside" data-skip-responsive="true"> <a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="x" role="menuitem"> - <i class="icon fa-power-off fa-fw"></i><span>{L_LOGIN_LOGOUT}</span> + <i class="icon fa-power-off fa-fw" aria-hidden="true"></i><span>{L_LOGIN_LOGOUT}</span> </a> </li> <!-- IF S_REGISTER_ENABLED and not (S_SHOW_COPPA or S_REGISTRATION) --> <li class="rightside" data-skip-responsive="true"> <a href="{U_REGISTER}" role="menuitem"> - <i class="icon fa-pencil-square-o fa-fw"></i><span>{L_REGISTER}</span> + <i class="icon fa-pencil-square-o fa-fw" aria-hidden="true"></i><span>{L_REGISTER}</span> </a> </li> <!-- ENDIF --> @@ -178,10 +178,10 @@ <!-- EVENT overall_header_breadcrumbs_before --> <li class="breadcrumbs"> <!-- IF U_SITE_HOME --> - <span class="crumb" {$MICRODATA}><a href="{U_SITE_HOME}" data-navbar-reference="home"><i class="icon fa-home fa-fw"></i><span>{L_SITE_HOME}</span></a></span> + <span class="crumb" {$MICRODATA}><a href="{U_SITE_HOME}" data-navbar-reference="home"><i class="icon fa-home fa-fw" aria-hidden="true"></i><span>{L_SITE_HOME}</span></a></span> <!-- ENDIF --> <!-- EVENT overall_header_breadcrumb_prepend --> - <span class="crumb" {$MICRODATA}><a href="{U_INDEX}" accesskey="h" data-navbar-reference="index"><i class="icon fa-home fa-fw"></i><span>{L_INDEX}</span></a></span> + <span class="crumb" {$MICRODATA}><a href="{U_INDEX}" accesskey="h" data-navbar-reference="index"><i class="icon fa-home fa-fw" aria-hidden="true"></i><span>{L_INDEX}</span></a></span> <!-- BEGIN navlinks --> <!-- EVENT overall_header_navlink_prepend --> <span class="crumb" {$MICRODATA}<!-- IF navlinks.MICRODATA --> {navlinks.MICRODATA}<!-- ENDIF -->><a href="{navlinks.U_VIEW_FORUM}" itemprop="url"><span itemprop="title">{navlinks.FORUM_NAME}</span></a></span> @@ -194,7 +194,7 @@ <!-- IF S_DISPLAY_SEARCH and not S_IN_SEARCH --> <li class="rightside responsive-search"> <a href="{U_SEARCH}" title="{L_SEARCH_ADV_EXPLAIN}" role="menuitem"> - <i class="icon fa-search fa-fw"></i><span class="sr-only">{L_SEARCH}</span> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH}</span> </a> </li> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/notification_dropdown.html b/phpBB/styles/prosilver/template/notification_dropdown.html index 68cbcc4ccb..e444d8fb90 100644 --- a/phpBB/styles/prosilver/template/notification_dropdown.html +++ b/phpBB/styles/prosilver/template/notification_dropdown.html @@ -33,7 +33,7 @@ <!-- IF notifications.URL --></a><!-- ENDIF --> <!-- IF notifications.UNREAD --> <a href="{notifications.U_MARK_READ}" class="mark_read icon-mark" data-ajax="notification.mark_read" title="{L_MARK_READ}"> - <i class="icon fa-check-circle icon-xl fa-fw"></i><span class="sr-only">{L_MARK_READ}</span> + <i class="icon fa-check-circle icon-xl fa-fw" aria-hidden="true"></i><span class="sr-only">{L_MARK_READ}</span> </a> <!-- ENDIF --> </li> diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 270be898c8..61a370dbae 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -21,13 +21,13 @@ <div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}"> <a href="#" class="alert_close"> - <i class="icon fa-times-circle fa-fw"></i> + <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <h3 class="alert_title"> </h3><p class="alert_text"></p> </div> <div id="phpbb_confirm" class="phpbb_alert"> <a href="#" class="alert_close"> - <i class="icon fa-times-circle fa-fw"></i> + <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <div class="alert_text"></div> </div> diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html index deb8daf83a..823d5e1c12 100644 --- a/phpBB/styles/prosilver/template/overall_header.html +++ b/phpBB/styles/prosilver/template/overall_header.html @@ -47,7 +47,6 @@ <link href="{T_FONT_AWESOME_LINK}" rel="stylesheet"> <link href="{T_STYLESHEET_LINK}" rel="stylesheet"> <link href="{T_STYLESHEET_LANG_LINK}" rel="stylesheet"> -<link href="{T_THEME_PATH}/responsive.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" media="all and (max-width: 700px)" /> <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> <link href="{T_THEME_PATH}/bidi.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet"> @@ -91,11 +90,11 @@ <form action="{U_SEARCH}" method="get" id="search"> <fieldset> <input name="keywords" id="keywords" type="search" maxlength="128" title="{L_SEARCH_KEYWORDS}" class="inputbox search tiny" size="20" value="{SEARCH_WORDS}" placeholder="{L_SEARCH_MINI}" /> - <button class="button" type="submit" title="{L_SEARCH}"> - <i class="icon fa-search fa-fw"></i><span>{L_SEARCH}</span> + <button class="button button-search" type="submit" title="{L_SEARCH}"> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH}</span> </button> - <a href="{U_SEARCH}" class="button" title="{L_SEARCH_ADV}"> - <i class="icon fa-cog fa-fw"></i><span>{L_SEARCH_ADV}</span> + <a href="{U_SEARCH}" class="button button-search-end" title="{L_SEARCH_ADV}"> + <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH_ADV}</span> </a> {S_SEARCH_HIDDEN_FIELDS} </fieldset> diff --git a/phpBB/styles/prosilver/template/pagination.html b/phpBB/styles/prosilver/template/pagination.html index 4351b1bdd7..e8483331f4 100644 --- a/phpBB/styles/prosilver/template/pagination.html +++ b/phpBB/styles/prosilver/template/pagination.html @@ -1,7 +1,7 @@ <ul> <!-- IF BASE_URL and TOTAL_PAGES > 6 --> <li class="dropdown-container dropdown-button-control dropdown-page-jump page-jump"> - <a class="button" href="#" class="dropdown-trigger" title="{L_JUMP_TO_PAGE_CLICK}" role="button"><i class="icon fa-level-down fa-rotate-270"></i><span class="sr-only">{PAGE_NUMBER}</span></a> + <a class="button button-icon-only dropdown-trigger" href="#" title="{L_JUMP_TO_PAGE_CLICK}" role="button"><i class="icon fa-level-down fa-rotate-270" aria-hidden="true"></i><span class="sr-only">{PAGE_NUMBER}</span></a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <ul class="dropdown-contents"> @@ -16,13 +16,13 @@ <!-- ENDIF --> <!-- BEGIN pagination --> <!-- IF pagination.S_IS_PREV --> - <li class="arrow previous"><a class="button" href="{pagination.PAGE_URL}" rel="prev" role="button"><i class="icon fa-chevron-left fa-fw"></i><span class="sr-only">{L_PREVIOUS}</span></a></li> + <li class="arrow previous"><a class="button button-icon-only" href="{pagination.PAGE_URL}" rel="prev" role="button"><i class="icon fa-chevron-left fa-fw" aria-hidden="true"></i><span class="sr-only">{L_PREVIOUS}</span></a></li> <!-- ELSEIF pagination.S_IS_CURRENT --> <li class="active"><span>{pagination.PAGE_NUMBER}</span></li> <!-- ELSEIF pagination.S_IS_ELLIPSIS --> <li class="ellipsis" role="separator"><span>{L_ELLIPSIS}</span></li> <!-- ELSEIF pagination.S_IS_NEXT --> - <li class="arrow next"><a class="button" href="{pagination.PAGE_URL}" rel="next" role="button"><i class="icon fa-chevron-right fa-fw"></i><span class="sr-only">{L_NEXT}</span></a></li> + <li class="arrow next"><a class="button button-icon-only" href="{pagination.PAGE_URL}" rel="next" role="button"><i class="icon fa-chevron-right fa-fw" aria-hidden="true"></i><span class="sr-only">{L_NEXT}</span></a></li> <!-- ELSE --> <li><a class="button" href="{pagination.PAGE_URL}" role="button">{pagination.PAGE_NUMBER}</a></li> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/posting_buttons.html b/phpBB/styles/prosilver/template/posting_buttons.html index 9e78005c63..45290251a6 100644 --- a/phpBB/styles/prosilver/template/posting_buttons.html +++ b/phpBB/styles/prosilver/template/posting_buttons.html @@ -61,49 +61,49 @@ <!-- EVENT posting_editor_buttons_before --> <div id="format-buttons" class="format-buttons"> - <button type="button" class="button bbcode-b" accesskey="b" name="addbbcode0" value=" B " onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}"> - <i class="icon fa-bold fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-b" accesskey="b" name="addbbcode0" value=" B " onclick="bbstyle(0)" title="{L_BBCODE_B_HELP}"> + <i class="icon fa-bold fa-fw" aria-hidden="true"></i> </button> - <button type="button" class="button bbcode-i" accesskey="i" name="addbbcode2" value=" i " onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}"> - <i class="icon fa-italic fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-i" accesskey="i" name="addbbcode2" value=" i " onclick="bbstyle(2)" title="{L_BBCODE_I_HELP}"> + <i class="icon fa-italic fa-fw" aria-hidden="true"></i> </button> - <button type="button" class="button bbcode-u" accesskey="u" name="addbbcode4" value=" u " onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}"> - <i class="icon fa-underline fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-u" accesskey="u" name="addbbcode4" value=" u " onclick="bbstyle(4)" title="{L_BBCODE_U_HELP}"> + <i class="icon fa-underline fa-fw" aria-hidden="true"></i> </button> <!-- IF S_BBCODE_QUOTE --> - <button type="button" class="button bbcode-quote" accesskey="q" name="addbbcode6" value="Quote" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}"> - <i class="icon fa-quote-left fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-quote" accesskey="q" name="addbbcode6" value="Quote" onclick="bbstyle(6)" title="{L_BBCODE_Q_HELP}"> + <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i> </button> <!-- ENDIF --> - <button type="button" class="button bbcode-code" accesskey="c" name="addbbcode8" value="Code" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}"> - <i class="icon fa-code fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-code" accesskey="c" name="addbbcode8" value="Code" onclick="bbstyle(8)" title="{L_BBCODE_C_HELP}"> + <i class="icon fa-code fa-fw" aria-hidden="true"></i> </button> - <button type="button" class="button bbcode-list" accesskey="l" name="addbbcode10" value="List" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}"> - <i class="icon fa-list fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-list" accesskey="l" name="addbbcode10" value="List" onclick="bbstyle(10)" title="{L_BBCODE_L_HELP}"> + <i class="icon fa-list fa-fw" aria-hidden="true"></i> </button> - <button type="button" class="button bbcode-list-" accesskey="o" name="addbbcode12" value="List=" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}"> - <i class="icon fa-list-ol fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-list-" accesskey="o" name="addbbcode12" value="List=" onclick="bbstyle(12)" title="{L_BBCODE_O_HELP}"> + <i class="icon fa-list-ol fa-fw" aria-hidden="true"></i> </button> - <button type="button" class="button bbcode-asterisk" accesskey="y" name="addlistitem" value="[*]" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}"> - <i class="icon fa-asterisk fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-asterisk" accesskey="y" name="addlistitem" value="[*]" onclick="bbstyle(-1)" title="{L_BBCODE_LISTITEM_HELP}"> + <i class="icon fa-asterisk fa-fw" aria-hidden="true"></i> </button> <!-- IF S_BBCODE_IMG --> - <button type="button" class="button bbcode-img" accesskey="p" name="addbbcode14" value="Img" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}"> - <i class="icon fa-image fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-img" accesskey="p" name="addbbcode14" value="Img" onclick="bbstyle(14)" title="{L_BBCODE_P_HELP}"> + <i class="icon fa-image fa-fw" aria-hidden="true"></i> </button> <!-- ENDIF --> <!-- IF S_LINKS_ALLOWED --> - <button type="button" class="button bbcode-url" accesskey="w" name="addbbcode16" value="URL" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}"> - <i class="icon fa-link fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-url" accesskey="w" name="addbbcode16" value="URL" onclick="bbstyle(16)" title="{L_BBCODE_W_HELP}"> + <i class="icon fa-link fa-fw" aria-hidden="true"></i> </button> <!-- ENDIF --> <!-- IF S_BBCODE_FLASH --> - <button type="button" class="button bbcode-flash" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}"> - <i class="icon fa-flash fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-flash" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" title="{L_BBCODE_D_HELP}"> + <i class="icon fa-flash fa-fw" aria-hidden="true"></i> </button> <!-- ENDIF --> - <button type="button" class="button bbcode-color" name="bbpalette" id="bbpalette" value="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}"> - <i class="icon fa-tint fa-fw"></i> + <button type="button" class="button button-icon-only bbcode-color" name="bbpalette" id="bbpalette" value="{L_FONT_COLOR}" onclick="change_palette();" title="{L_BBCODE_S_HELP}"> + <i class="icon fa-tint fa-fw" aria-hidden="true"></i> </button> <select name="addbbcode20" class="bbcode-size" 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> @@ -120,7 +120,9 @@ <!-- EVENT posting_editor_buttons_custom_tags_before --> <!-- BEGIN custom_tags --> - <button type="button" class="button bbcode-{custom_tags.BBCODE_TAG_CLEAN}" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}"></button> + <button type="button" class="button button-secondary bbcode-{custom_tags.BBCODE_TAG_CLEAN}" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}"> + {custom_tags.BBCODE_TAG} + </button> <!-- END custom_tags --> </div> <!-- EVENT posting_editor_buttons_after --> diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index 60d7b6c428..9376ae8be7 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -6,7 +6,7 @@ <dt><label for="icon">{L_ICON}{L_COLON}</label></dt> <dd> <label for="icon"><input type="radio" name="icon" id="icon" value="0" checked="checked" tabindex="1" /> <!-- IF S_SHOW_TOPIC_ICONS -->{L_NO_TOPIC_ICON}<!-- ELSE -->{L_NO_PM_ICON}<!-- ENDIF --></label> - <!-- BEGIN topic_icon --><label for="icon-{topic_icon.ICON_ID}"><input type="radio" name="icon" id="icon-{topic_icon.ICON_ID}" value="{topic_icon.ICON_ID}" {topic_icon.S_ICON_CHECKED} tabindex="1" /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="{topic_icon.ICON_NAME}" title="" /></label> <!-- END topic_icon --> + <!-- BEGIN topic_icon --><label for="icon-{topic_icon.ICON_ID}"><input type="radio" name="icon" id="icon-{topic_icon.ICON_ID}" value="{topic_icon.ICON_ID}" {topic_icon.S_ICON_CHECKED} tabindex="1" /><img src="{topic_icon.ICON_IMG}" width="{topic_icon.ICON_WIDTH}" height="{topic_icon.ICON_HEIGHT}" alt="{topic_icon.ICON_ALT}" title="{topic_icon.ICON_ALT}" /></label> <!-- END topic_icon --> </dd> </dl> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/posting_review.html b/phpBB/styles/prosilver/template/posting_review.html index 3093630461..1304046b23 100644 --- a/phpBB/styles/prosilver/template/posting_review.html +++ b/phpBB/styles/prosilver/template/posting_review.html @@ -16,10 +16,10 @@ <h3><a href="#ppr{post_review_row.POST_ID}">{post_review_row.POST_SUBJECT}</a></h3> <p class="author"> <!-- IF S_IS_BOT --> - <span><i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{post_review_row.MINI_POST}</span></span> + <span><i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{post_review_row.MINI_POST}</span></span> <!-- ELSE --> <a href="{post_review_row.U_MINI_POST}" title="{post_review_row.MINI_POST}"> - <i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{post_review_row.MINI_POST}</span> + <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{post_review_row.MINI_POST}</span> </a> <!-- ENDIF --> {L_POST_BY_AUTHOR}<strong> {post_review_row.POST_AUTHOR_FULL}</strong> » {post_review_row.POST_DATE} diff --git a/phpBB/styles/prosilver/template/posting_topic_review.html b/phpBB/styles/prosilver/template/posting_topic_review.html index 803de267ac..dae0095105 100644 --- a/phpBB/styles/prosilver/template/posting_topic_review.html +++ b/phpBB/styles/prosilver/template/posting_topic_review.html @@ -28,15 +28,15 @@ <ul class="post-buttons"> <!-- IF topic_review_row.U_MCP_DETAILS --> <li> - <a href="{topic_review_row.U_MCP_DETAILS}" title="{L_POST_DETAILS}" class="button"> - <i class="icon fa-info fa-fw"></i><span>{L_POST_DETAILS}</span> + <a href="{topic_review_row.U_MCP_DETAILS}" title="{L_POST_DETAILS}" class="button button-icon-only"> + <i class="icon fa-info fa-fw" aria-hidden="true"></i><span class="sr-only">{L_POST_DETAILS}</span> </a> <li> <!-- ENDIF --> <!-- IF topic_review_row.POSTER_QUOTE and topic_review_row.DECODED_MESSAGE --> <li> - <a href="#postingbox" onclick="addquote({topic_review_row.POST_ID}, '{topic_review_row.POSTER_QUOTE}', '{LA_WROTE}', {post_id:{topic_review_row.POST_ID},time:{topic_review_row.POST_TIME},user_id:{topic_review_row.USER_ID}});" title="{L_QUOTE} {topic_review_row.POST_AUTHOR}" class="button"> - <i class="icon fa-quote-left fa-fw"></i><span>{L_QUOTE} {topic_review_row.POST_AUTHOR}</span> + <a href="#postingbox" onclick="addquote({topic_review_row.POST_ID}, '{topic_review_row.POSTER_QUOTE}', '{LA_WROTE}', {post_id:{topic_review_row.POST_ID},time:{topic_review_row.POST_TIME},user_id:{topic_review_row.USER_ID}});" title="{L_QUOTE} {topic_review_row.POST_AUTHOR}" class="button button-icon-only"> + <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">{L_QUOTE} {topic_review_row.POST_AUTHOR}</span> </a> </li> <!-- ENDIF --> @@ -45,10 +45,10 @@ <p class="author"> <!-- IF S_IS_BOT --> - <span><i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{topic_review_row.MINI_POST}</span></span> + <span><i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{topic_review_row.MINI_POST}</span></span> <!-- ELSE --> <a href="{topic_review_row.U_MINI_POST}" title="{topic_review_row.MINI_POST}"> - <i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{topic_review_row.MINI_POST}</span> + <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{topic_review_row.MINI_POST}</span> </a> <!-- ENDIF --> {L_POST_BY_AUTHOR} <strong>{topic_review_row.POST_AUTHOR_FULL}</strong> » {topic_review_row.POST_DATE} @@ -77,6 +77,6 @@ <p> <a href="<!-- IF S_MCP_REPORT -->#report<!-- ELSE -->#postingbox<!-- ENDIF -->" class="top"> - <i class="icon fa-chevron-circle-up fa-fw icon-gray"></i><span>{L_BACK_TO_TOP}</span> + <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i><span>{L_BACK_TO_TOP}</span> </a> </p> diff --git a/phpBB/styles/prosilver/template/search_results.html b/phpBB/styles/prosilver/template/search_results.html index 47ce0de4dd..c63415915b 100644 --- a/phpBB/styles/prosilver/template/search_results.html +++ b/phpBB/styles/prosilver/template/search_results.html @@ -10,13 +10,13 @@ <!-- IF SEARCH_TOPIC --> <p class="return-link"> <a class="arrow-{S_CONTENT_FLOW_BEGIN}" href="{U_SEARCH_TOPIC}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_TO_TOPIC}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_TO_TOPIC}</span> </a> </p> <!-- ELSE --> <p class="advanced-search-link"> <a class="arrow-{S_CONTENT_FLOW_BEGIN}" href="{U_SEARCH}" title="{L_SEARCH_ADV}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_GO_TO_SEARCH_ADV}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_GO_TO_SEARCH_ADV}</span> </a> </p> <!-- ENDIF --> @@ -31,11 +31,11 @@ <form method="post" action="{S_SEARCH_ACTION}"> <fieldset> <input class="inputbox search tiny" type="search" name="add_keywords" id="add_keywords" value="" placeholder="{L_SEARCH_IN_RESULTS}" /> - <button class="button" type="submit" title="{L_SEARCH}"> - <i class="icon fa-search fa-fw"></i><span>{L_SEARCH}</span> + <button class="button button-search" type="submit" title="{L_SEARCH}"> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH}</span> </button> - <a href="{U_SEARCH}" class="button" title="{L_SEARCH_ADV}"> - <i class="icon fa-cog fa-fw"></i><span>{L_SEARCH_ADV}</span> + <a href="{U_SEARCH}" class="button button-search-end" title="{L_SEARCH_ADV}"> + <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH_ADV}</span> </a> </fieldset> </form> @@ -45,6 +45,7 @@ <!-- EVENT search_results_searchbox_after --> <div class="pagination"> + <!-- IF U_MARK_ALL_READ --><a href="{U_MARK_ALL_READ}" class="mark-read" accesskey="m">{L_MARK_ALL_READ}</a> •<!-- ENDIF --> {SEARCH_MATCHES} <!-- IF .pagination --> <!-- INCLUDE pagination.html --> @@ -84,24 +85,24 @@ <!-- EVENT topiclist_row_prepend --> <!-- IF searchresults.S_UNREAD_TOPIC and not S_IS_BOT --> <a href="{searchresults.U_NEWEST_POST}"> - <i class="icon fa-file fa-fw icon-red icon-md"></i><span class="sr-only">{NEW_POST}</span> + <i class="icon fa-file fa-fw icon-red icon-md" aria-hidden="true"></i><span class="sr-only">{NEW_POST}</span> </a> <!-- ENDIF --> <a href="{searchresults.U_VIEW_TOPIC}" class="topictitle">{searchresults.TOPIC_TITLE}</a> <!-- IF searchresults.S_TOPIC_UNAPPROVED or searchresults.S_POSTS_UNAPPROVED --> <a href="{searchresults.U_MCP_QUEUE}" title="{TOPIC_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> </a> <!-- ENDIF --> <!-- IF searchresults.S_TOPIC_DELETED --> <a href="{searchresults.U_MCP_QUEUE}" title="{TOPIC_DELETED}"> - <i class="icon fa-recycle fa-fw icon-green"></i><span class="sr-only">{TOPIC_DELETED}</span> + <i class="icon fa-recycle fa-fw icon-green" aria-hidden="true"></i><span class="sr-only">{TOPIC_DELETED}</span> </a> <!-- ENDIF --> <!-- IF searchresults.S_TOPIC_REPORTED --> <a href="{searchresults.U_MCP_REPORT}" title="{TOPIC_REPORTED}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> </a> <!-- ENDIF --> <br /> @@ -119,8 +120,8 @@ </ul> </div> <!-- ENDIF --> - <!-- IF searchresults.S_HAS_POLL --><i class="icon fa-bar-chart fa-fw"></i> <!-- ENDIF --> - <!-- IF searchresults.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i><!-- ENDIF --> + <!-- IF searchresults.S_HAS_POLL --><i class="icon fa-bar-chart fa-fw" aria-hidden="true"></i> <!-- ENDIF --> + <!-- IF searchresults.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i><!-- ENDIF --> {L_POST_BY_AUTHOR} {searchresults.TOPIC_AUTHOR_FULL} » {searchresults.FIRST_POST_TIME} » {L_IN} <a href="{searchresults.U_VIEW_FORUM}">{searchresults.FORUM_TITLE}</a> <!-- EVENT topiclist_row_append --> @@ -133,7 +134,7 @@ {L_POST_BY_AUTHOR} {searchresults.LAST_POST_AUTHOR_FULL} <!-- IF not S_IS_BOT --> <a href="{searchresults.U_LAST_POST}" title="{L_GOTO_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <!-- ENDIF --> <br /> @@ -190,7 +191,7 @@ <ul class="searchresults"> <li> <a href="{searchresults.U_VIEW_POST}" class="arrow-{S_CONTENT_FLOW_END}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_END} fa-fw icon-black"></i><span>{L_JUMP_TO_POST}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_END} fa-fw icon-black" aria-hidden="true"></i><span>{L_JUMP_TO_POST}</span> </a> </li> </ul> diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index defe2c9456..76a58ed218 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -12,13 +12,13 @@ <div id="phpbb_alert" class="phpbb_alert" data-l-err="{L_ERROR}" data-l-timeout-processing-req="{L_TIMEOUT_PROCESSING_REQ}"> <a href="#" class="alert_close"> - <i class="icon fa-times-circle fa-fw"></i> + <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <h3 class="alert_title"></h3><p class="alert_text"></p> </div> <div id="phpbb_confirm" class="phpbb_confirm phpbb_alert"> <a href="#" class="alert_close"> - <i class="icon fa-times-circle fa-fw"></i> + <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <div class="alert_text"></div> </div> diff --git a/phpBB/styles/prosilver/template/simple_header.html b/phpBB/styles/prosilver/template/simple_header.html index 2653f9969d..7ff62790b4 100644 --- a/phpBB/styles/prosilver/template/simple_header.html +++ b/phpBB/styles/prosilver/template/simple_header.html @@ -24,7 +24,6 @@ <!-- ENDIF --> <link href="{T_STYLESHEET_LINK}" rel="stylesheet"> <link href="{T_STYLESHEET_LANG_LINK}" rel="stylesheet"> -<link href="{T_THEME_PATH}/responsive.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" media="all and (max-width: 700px)"> <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> <link href="{T_THEME_PATH}/bidi.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet"> diff --git a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html index 7aa4313910..72d23e7da1 100644 --- a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html +++ b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html @@ -40,17 +40,17 @@ <div class="list-inner"> <!-- IF topicrow.S_UNREAD_TOPIC --> <a href="{topicrow.U_NEWEST_POST}"> - <i class="icon fa-file fa-fw icon-red icon-md"></i><span class="sr-only">{NEW_POST}</span> + <i class="icon fa-file fa-fw icon-red icon-md" aria-hidden="true"></i><span class="sr-only">{NEW_POST}</span> </a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_REPORTED --> <a href="{topicrow.U_MCP_REPORT}" title="{TOPIC_REPORTED}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> </a> <!-- ENDIF --> <br /> @@ -69,11 +69,11 @@ </div> <!-- ENDIF --> <div class="responsive-hide"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} </div> <div class="responsive-show" style="display: none;"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} « <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}">{topicrow.LAST_POST_TIME}</a> </div> @@ -81,7 +81,7 @@ </dt> <dd class="lastpost"><span><dfn>{L_LAST_POST} </dfn>{L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <br />{topicrow.LAST_POST_TIME}</span> </dd> diff --git a/phpBB/styles/prosilver/template/ucp_main_front.html b/phpBB/styles/prosilver/template/ucp_main_front.html index d5eb6f91a7..1351af914b 100644 --- a/phpBB/styles/prosilver/template/ucp_main_front.html +++ b/phpBB/styles/prosilver/template/ucp_main_front.html @@ -19,7 +19,7 @@ <div class="list-inner"> <!-- IF topicrow.S_UNREAD --> <a href="{topicrow.U_NEWEST_POST}"> - <i class="icon fa-file fa-fw icon-red icon-md"></i><span class="sr-only">{NEW_POST}</span> + <i class="icon fa-file fa-fw icon-red icon-md" aria-hidden="true"></i><span class="sr-only">{NEW_POST}</span> </a> <!-- ENDIF --> <a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a><br /> @@ -38,11 +38,11 @@ </div> <!-- ENDIF --> <div class="responsive-hide"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} </div> <div class="responsive-show" style="display: none;"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} « <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}">{topicrow.LAST_POST_TIME}</a> </div> </div> @@ -50,7 +50,7 @@ <dd class="lastpost"> <span>{L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <br />{topicrow.LAST_POST_TIME} </span> @@ -70,7 +70,7 @@ <dt>{L_TOTAL_POSTS}{L_COLON}</dt> <dd><!-- IF POSTS_PCT -->{POSTS}<!-- IF S_DISPLAY_SEARCH --> | <strong><a href="{U_SEARCH_USER}">{L_SEARCH_YOUR_POSTS}</a></strong><!-- ENDIF --><br />({POSTS_DAY} / {POSTS_PCT})<!-- ELSE -->{POSTS}<!-- ENDIF --></dd> <!-- IF ACTIVE_FORUM != '' --><dt>{L_ACTIVE_IN_FORUM}{L_COLON}</dt> <dd><strong><a href="{U_ACTIVE_FORUM}">{ACTIVE_FORUM}</a></strong><br />({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT})</dd><!-- ENDIF --> <!-- IF ACTIVE_TOPIC != '' --><dt>{L_ACTIVE_IN_TOPIC}{L_COLON}</dt> <dd><strong><a href="{U_ACTIVE_TOPIC}">{ACTIVE_TOPIC}</a></strong><br />({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT})</dd><!-- ENDIF --> - <!-- IF WARNINGS --><dt>{L_YOUR_WARNINGS}{L_COLON}</dt> <dd class="error"><i class="icon fa-exclamation-triangle fa-fw icon-red"></i> [{WARNINGS}]</dd><!-- ENDIF --> + <!-- IF WARNINGS --><dt>{L_YOUR_WARNINGS}{L_COLON}</dt> <dd class="error"><i class="icon fa-exclamation-triangle fa-fw icon-red" aria-hidden="true"></i> [{WARNINGS}]</dd><!-- ENDIF --> </dl> <!-- EVENT ucp_main_front_user_activity_after --> diff --git a/phpBB/styles/prosilver/template/ucp_main_subscribed.html b/phpBB/styles/prosilver/template/ucp_main_subscribed.html index 332330c5b1..3405a44f60 100644 --- a/phpBB/styles/prosilver/template/ucp_main_subscribed.html +++ b/phpBB/styles/prosilver/template/ucp_main_subscribed.html @@ -39,7 +39,7 @@ <!-- IF forumrow.LAST_POST_TIME --> <span><dfn>{L_LAST_POST} </dfn>{L_POST_BY_AUTHOR} {forumrow.LAST_POST_AUTHOR_FULL} <a href="{forumrow.U_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <br />{forumrow.LAST_POST_TIME}</span> <!-- ELSE --> @@ -83,17 +83,17 @@ <div class="list-inner"> <!-- IF topicrow.S_UNREAD_TOPIC --> <a href="{topicrow.U_NEWEST_POST}"> - <i class="icon fa-file fa-fw icon-red icon-md"></i><span class="sr-only">{NEW_POST}</span> + <i class="icon fa-file fa-fw icon-red icon-md" aria-hidden="true"></i><span class="sr-only">{NEW_POST}</span> </a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_REPORTED --> <a href="{topicrow.U_MCP_REPORT}" title="{TOPIC_REPORTED}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> </a> <!-- ENDIF --> <br /> @@ -112,18 +112,18 @@ </div> <!-- ENDIF --> <div class="responsive-hide"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} </div> <div class="responsive-show" style="display: none;"> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --> {L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} « <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}">{topicrow.LAST_POST_TIME}</a> </div> </div> </dt> <dd class="lastpost"><span><dfn>{L_LAST_POST} </dfn>{L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <br />{topicrow.LAST_POST_TIME}</span> </dd> diff --git a/phpBB/styles/prosilver/template/ucp_pm_history.html b/phpBB/styles/prosilver/template/ucp_pm_history.html index 5500b6924c..e97befc552 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_history.html +++ b/phpBB/styles/prosilver/template/ucp_pm_history.html @@ -25,8 +25,8 @@ <!-- EVENT ucp_pm_history_post_buttons_before --> <!-- IF history_row.U_QUOTE or history_row.MESSAGE_AUTHOR_QUOTE --> <li> - <a <!-- IF history_row.U_QUOTE -->href="{history_row.U_QUOTE}"<!-- ELSE -->href="#postingbox" onclick="addquote({history_row.MSG_ID}, '{history_row.MESSAGE_AUTHOR_QUOTE}', '{LA_WROTE}', {time:{history_row.MESSAGE_TIME},user_id:{history_row.USER_ID}});"<!-- ENDIF --> title="{L_QUOTE} {history_row.MESSAGE_AUTHOR}" class="button"> - <i class="icon fa-quote-left fa-fw"></i><span>{L_QUOTE} {history_row.MESSAGE_AUTHOR}</span> + <a <!-- IF history_row.U_QUOTE -->href="{history_row.U_QUOTE}"<!-- ELSE -->href="#postingbox" onclick="addquote({history_row.MSG_ID}, '{history_row.MESSAGE_AUTHOR_QUOTE}', '{LA_WROTE}', {time:{history_row.MESSAGE_TIME},user_id:{history_row.USER_ID}});"<!-- ENDIF --> title="{L_QUOTE} {history_row.MESSAGE_AUTHOR}" class="button button-icon-only"> + <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">{L_QUOTE} {history_row.MESSAGE_AUTHOR}</span> </a> </li> <!-- ENDIF --> @@ -36,7 +36,7 @@ <!-- EVENT ucp_pm_history_post_buttons_list_after --> <p class="author"> - <span><i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{history_row.MINI_POST}</span></span> {L_SENT_AT}{L_COLON} <strong>{history_row.SENT_DATE}</strong> + <span><i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{history_row.MINI_POST}</span></span> {L_SENT_AT}{L_COLON} <strong>{history_row.SENT_DATE}</strong> <br /> {L_MESSAGE_BY_AUTHOR} {history_row.MESSAGE_AUTHOR_FULL} </p> @@ -53,7 +53,7 @@ <hr /> <p> <a href="#cp-main" class="top"> - <i class="icon fa-chevron-circle-up fa-fw icon-gray"></i><span>{L_BACK_TO_TOP}</span> + <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i><span>{L_BACK_TO_TOP}</span> </a> </p> diff --git a/phpBB/styles/prosilver/template/ucp_pm_message_header.html b/phpBB/styles/prosilver/template/ucp_pm_message_header.html index f629c3d5f1..6ad9e9cab6 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_message_header.html +++ b/phpBB/styles/prosilver/template/ucp_pm_message_header.html @@ -10,30 +10,30 @@ <!-- IF U_POST_REPLY_PM or U_POST_NEW_TOPIC or U_FORWARD_PM --> <!-- IF U_POST_REPLY_PM --> <a title="{L_POST_REPLY_PM}" href="{U_POST_REPLY_PM}" class="button"> - <span>{L_BUTTON_PM_REPLY}</span> <i class="icon fa-reply fa-fw"></i> + <span>{L_BUTTON_PM_REPLY}</span> <i class="icon fa-reply fa-fw" aria-hidden="true"></i> </a> <!-- ELSEIF U_POST_NEW_TOPIC --> <a href="{U_POST_NEW_TOPIC}" accesskey="n" title="{L_UCP_PM_COMPOSE}" class="button"> - <span>{L_BUTTON_PM_NEW}</span> <i class="icon fa-pencil fa-fw"></i> + <span>{L_BUTTON_PM_NEW}</span> <i class="icon fa-pencil fa-fw" aria-hidden="true"></i> </a> <!-- ENDIF --> <!-- IF U_FORWARD_PM --> <a title="{L_POST_FORWARD_PM}" href="{U_FORWARD_PM}" class="button"> - <span>{L_BUTTON_PM_FORWARD}</span> <i class="icon fa-mail-forward fa-fw"></i> + <span>{L_BUTTON_PM_FORWARD}</span> <i class="icon fa-mail-forward fa-fw" aria-hidden="true"></i> </a> <!-- ENDIF --> <!-- IF U_POST_REPLY_PM and S_PM_RECIPIENTS gt 1 --> <a title="{L_REPLY_TO_ALL}" href="{U_POST_REPLY_ALL}" class="button"> - <span>{L_BUTTON_PM_REPLY_ALL}</span> <i class="icon fa-pencil fa-fw"></i> + <span>{L_BUTTON_PM_REPLY_ALL}</span> <i class="icon fa-pencil fa-fw" aria-hidden="true"></i> </a> <!-- ENDIF --> <!-- ENDIF --> <!-- IF not S_IS_BOT and U_PRINT_PM --> <div class="dropdown-container dropdown-button-control topic-tools"> - <span title="{L_PM_TOOLS}" class="button dropdown-trigger dropdown-select"> - <i class="icon fa-wrench fa-fw"></i> - <span class="caret"><i class="icon fa-sort-down fa-fw"></i></span> + <span title="{L_PM_TOOLS}" class="button button-secondary dropdown-trigger dropdown-select"> + <i class="icon fa-wrench fa-fw" aria-hidden="true"></i> + <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> @@ -41,7 +41,7 @@ <!-- IF U_PRINT_PM --> <li> <a href="{U_PRINT_PM}" title="{L_PRINT_PM}" accesskey="p"> - <i class="icon fa-print fa-fw"></i><span>{L_PRINT_PM}</span> + <i class="icon fa-print fa-fw" aria-hidden="true"></i><span>{L_PRINT_PM}</span> </a> </li> <!-- ENDIF --> @@ -54,7 +54,7 @@ <div class="pagination"> <!-- IF S_VIEW_MESSAGE --> <a class="arrow-{S_CONTENT_FLOW_BEGIN}" href="{U_CURRENT_FOLDER}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_RETURN_TO_FOLDER}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_RETURN_TO_FOLDER}</span> </a> <!-- ELSEIF FOLDER_CUR_MESSAGES neq 0 --> <!-- IF U_MARK_ALL --><a href="{U_MARK_ALL}" class="mark">{L_PM_MARK_ALL_READ}</a> • <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html index 6f62066d4c..3914b33091 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html @@ -73,9 +73,9 @@ <!-- ENDIF --> <!-- IF messagerow.S_PM_REPORTED --> <a href="{messagerow.U_MCP_REPORT}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{PM_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{PM_REPORTED}</span> </a> - <!-- ENDIF --> <!-- IF messagerow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i> <!-- ENDIF --><br /> + <!-- ENDIF --> <!-- IF messagerow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i> <!-- ENDIF --><br /> <!-- IF S_SHOW_RECIPIENTS -->{L_MESSAGE_TO} {messagerow.RECIPIENTS}<!-- ELSE -->{L_MESSAGE_BY_AUTHOR} {messagerow.MESSAGE_AUTHOR_FULL} » {messagerow.SENT_TIME}<!-- ENDIF --> </div> diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html index 230759aa9e..59317da8f7 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html @@ -10,12 +10,12 @@ <fieldset class="display-options clearfix"> <!-- IF U_VIEW_PREVIOUS_HISTORY --> <a href="{U_VIEW_PREVIOUS_HISTORY}" class="left-box arrow-{S_CONTENT_FLOW_BEGIN}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_VIEW_PREVIOUS_HISTORY}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_VIEW_PREVIOUS_HISTORY}</span> </a> <!-- ENDIF --> <!-- IF U_VIEW_NEXT_HISTORY --> <a href="{U_VIEW_NEXT_HISTORY}" class="right-box arrow-{S_CONTENT_FLOW_END}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_VIEW_NEXT_HISTORY}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_VIEW_NEXT_HISTORY}</span> </a> <!-- ENDIF --> </fieldset> @@ -55,7 +55,7 @@ <dd class="profile-contact"> <strong>{L_CONTACT}{L_COLON}</strong> <div class="dropdown-container dropdown-left"> - <a href="#" class="dropdown-trigger" title="{CONTACT_USER}"><i class="icon fa-commenting-o fa-fw icon-lg"></i><span class="sr-only">{CONTACT_USER}</span></a> + <a href="#" class="dropdown-trigger" title="{CONTACT_USER}"><i class="icon fa-commenting-o fa-fw icon-lg" aria-hidden="true"></i><span class="sr-only">{CONTACT_USER}</span></a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <div class="dropdown-contents contact-icons"> @@ -90,29 +90,29 @@ <!-- EVENT ucp_pm_viewmessage_post_buttons_before --> <!-- IF U_EDIT --> <li> - <a href="{U_EDIT}" title="{L_POST_EDIT_PM}" class="button"> - <i class="icon fa-pencil fa-fw"></i><span>{L_POST_EDIT_PM}</span> + <a href="{U_EDIT}" title="{L_POST_EDIT_PM}" class="button button-icon-only"> + <i class="icon fa-pencil fa-fw" aria-hidden="true"></i><span class="sr-only">{L_POST_EDIT_PM}</span> </a> </li> <!-- ENDIF --> <!-- IF U_DELETE --> <li> - <a href="{U_DELETE}" title="{L_DELETE_MESSAGE}" class="button"> - <i class="icon fa-times fa-fw"></i><span>{L_DELETE_MESSAGE}</span> + <a href="{U_DELETE}" title="{L_DELETE_MESSAGE}" class="button button-icon-only"> + <i class="icon fa-times fa-fw" aria-hidden="true"></i><span class="sr-only">{L_DELETE_MESSAGE}</span> </a> </li> <!-- ENDIF --> <!-- IF U_REPORT --> <li> - <a href="{U_REPORT}" title="{L_REPORT_PM}" class="button"> - <i class="icon fa-exclamation fa-fw"></i><span>{L_REPORT_PM}</span> + <a href="{U_REPORT}" title="{L_REPORT_PM}" class="button button-icon-only"> + <i class="icon fa-exclamation fa-fw" aria-hidden="true"></i><span class="sr-only">{L_REPORT_PM}</span> </a> </li> <!-- ENDIF --> <!-- IF U_QUOTE --> <li> - <a href="{U_QUOTE}" title="{L_POST_QUOTE_PM}" class="button"> - <i class="icon fa-quote-left fa-fw"></i><span>{L_POST_QUOTE_PM}</span> + <a href="{U_QUOTE}" title="{L_POST_QUOTE_PM}" class="button button-icon-only"> + <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">{L_POST_QUOTE_PM}</span> </a> </li> <!-- ENDIF --> @@ -159,7 +159,7 @@ <div class="back2top"> <a href="#top" class="top" title="{L_BACK_TO_TOP}"> - <i class="icon fa-chevron-circle-up fa-fw icon-gray"></i> + <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">{L_BACK_TO_TOP}</span> </a> </div> @@ -173,12 +173,12 @@ <!-- IF S_MARK_OPTIONS --><label for="mark_option"><select name="mark_option" id="mark_option">{S_MARK_OPTIONS}</select></label> <input class="button2" type="submit" name="submit_mark" value="{L_GO}" /><!-- ENDIF --> <!-- IF U_PREVIOUS_PM --> <a href="{U_PREVIOUS_PM}" class="left-box arrow-{S_CONTENT_FLOW_BEGIN}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_VIEW_PREVIOUS_PM}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_VIEW_PREVIOUS_PM}</span> </a> <!-- ENDIF --> <!-- IF U_NEXT_PM --> <a href="{U_NEXT_PM}" class="right-box arrow-{S_CONTENT_FLOW_END}"> - <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black"></i><span>{L_VIEW_NEXT_PM}</span> + <i class="icon fa-angle-{S_CONTENT_FLOW_BEGIN} fa-fw icon-black" aria-hidden="true"></i><span>{L_VIEW_NEXT_PM}</span> </a> <!-- ENDIF --> <!-- IF not S_UNREAD and not S_SPECIAL_FOLDER --><label for="dest_folder"><!-- IF S_VIEW_MESSAGE -->{L_MOVE_TO_FOLDER}{L_COLON} <!-- ELSE -->{L_MOVE_MARKED_TO_FOLDER}<!-- ENDIF --> <select name="dest_folder" id="dest_folder">{S_TO_FOLDER_OPTIONS}</select></label> <input class="button2" type="submit" name="move_pm" value="{L_GO}" /><!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index fafd0cce00..655c0fc48c 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -14,7 +14,7 @@ // ]]> </script> -<form method="post" action="{S_UCP_ACTION}" id="register"> +<form id="register" method="post" action="{S_UCP_ACTION}"{S_FORM_ENCTYPE}> <div class="panel"> <div class="inner"> diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index 4689909b28..f36e17369e 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -42,9 +42,9 @@ <a href="{U_POST_NEW_TOPIC}" class="button" title="<!-- IF S_IS_LOCKED -->{L_FORUM_LOCKED}<!-- ELSE -->{L_POST_TOPIC}<!-- ENDIF -->"> <!-- IF S_IS_LOCKED --> - <span>{L_BUTTON_FORUM_LOCKED}</span> <i class="icon fa-lock fa-fw"></i> + <span>{L_BUTTON_FORUM_LOCKED}</span> <i class="icon fa-lock fa-fw" aria-hidden="true"></i> <!-- ELSE --> - <span>{L_BUTTON_NEW_TOPIC}</span> <i class="icon fa-pencil fa-fw"></i> + <span>{L_BUTTON_NEW_TOPIC}</span> <i class="icon fa-pencil fa-fw" aria-hidden="true"></i> <!-- ENDIF --> </a> <!-- EVENT viewforum_buttons_top_after --> @@ -55,11 +55,11 @@ <form method="get" id="forum-search" action="{S_SEARCHBOX_ACTION}"> <fieldset> <input class="inputbox search tiny" type="search" name="keywords" id="search_keywords" size="20" placeholder="{L_SEARCH_FORUM}" /> - <button class="button" type="submit" title="{L_SEARCH}"> - <i class="icon fa-search fa-fw"></i><span>{L_SEARCH}</span> + <button class="button button-search" type="submit" title="{L_SEARCH}"> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH}</span> </button> - <a href="{U_SEARCH}" class="button" title="{L_SEARCH_ADV}"> - <i class="icon fa-cog fa-fw"></i><span>{L_SEARCH_ADV}</span> + <a href="{U_SEARCH}" class="button button-search-end" title="{L_SEARCH_ADV}"> + <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH_ADV}</span> </a> {S_SEARCH_LOCAL_HIDDEN_FIELDS} </fieldset> @@ -139,8 +139,8 @@ <div class="inner"> <ul class="topiclist"> <li class="header"> - <dt<!-- IF S_DISPLAY_ACTIVE --> id="active_topics"<!-- ENDIF -->><div class="list-inner"><!-- IF S_DISPLAY_ACTIVE -->{L_ACTIVE_TOPICS}<!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH and (topicrow.S_POST_ANNOUNCE or topicrow.S_POST_GLOBAL) -->{L_ANNOUNCEMENTS}<!-- ELSE -->{L_TOPICS}<!-- ENDIF --></div></dt> <dl class="row-item"> + <dt<!-- IF S_DISPLAY_ACTIVE --> id="active_topics"<!-- ENDIF -->><div class="list-inner"><!-- IF S_DISPLAY_ACTIVE -->{L_ACTIVE_TOPICS}<!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH and (topicrow.S_POST_ANNOUNCE or topicrow.S_POST_GLOBAL) -->{L_ANNOUNCEMENTS}<!-- ELSE -->{L_TOPICS}<!-- ENDIF --></div></dt> <dd class="posts">{L_REPLIES}</dd> <dd class="views">{L_VIEWS}</dd> <dd class="lastpost"><span>{L_LAST_POST}</span></dd> @@ -150,7 +150,9 @@ <ul class="topiclist topics"> <!-- ENDIF --> + <!-- EVENT viewforum_body_topic_row_before --> <li class="row<!-- IF topicrow.S_ROW_COUNT is even --> bg1<!-- ELSE --> bg2<!-- ENDIF --><!-- IF topicrow.S_POST_GLOBAL --> global-announce<!-- ENDIF --><!-- IF topicrow.S_POST_ANNOUNCE --> announce<!-- ENDIF --><!-- IF topicrow.S_POST_STICKY --> sticky<!-- ENDIF --><!-- IF topicrow.S_TOPIC_REPORTED --> reported<!-- ENDIF -->"> + <!-- EVENT viewforum_body_topic_row_prepend --> <dl class="row-item {topicrow.TOPIC_IMG_STYLE}"> <dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"> <!-- IF topicrow.S_UNREAD_TOPIC and not S_IS_BOT --><a href="{topicrow.U_NEWEST_POST}" class="row-item-link"></a><!-- ENDIF --> @@ -158,23 +160,23 @@ <!-- EVENT topiclist_row_prepend --> <!-- IF topicrow.S_UNREAD_TOPIC and not S_IS_BOT --> <a href="{topicrow.U_NEWEST_POST}"> - <i class="icon fa-file fa-fw icon-red icon-md"></i><span class="sr-only">{NEW_POST}</span> + <i class="icon fa-file fa-fw icon-red icon-md" aria-hidden="true"></i><span class="sr-only">{NEW_POST}</span> </a> <!-- ENDIF --> <a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a> <!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_UNAPPROVED}"> - <i class="icon fa-question fa-fw icon-blue"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> + <i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{TOPIC_UNAPPROVED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_DELETED --> <a href="{topicrow.U_MCP_QUEUE}" title="{TOPIC_DELETED"> - <i class="icon fa-recycle fa-fw icon-green"></i><span class="sr-only">{TOPIC_DELETED}</span> + <i class="icon fa-recycle fa-fw icon-green" aria-hidden="true"></i><span class="sr-only">{TOPIC_DELETED}</span> </a> <!-- ENDIF --> <!-- IF topicrow.S_TOPIC_REPORTED --> <a href="{topicrow.U_MCP_REPORT}" title="{TOPIC_REPORTED}"> - <i class="icon fa-exclamation fa-fw icon-red"></i><span class="sr-only">{TOPIC_REPORTED}</span> + <i class="icon fa-exclamation fa-fw icon-red" aria-hidden="true"></i><span class="sr-only">{TOPIC_REPORTED}</span> </a> <!-- ENDIF --> <br /> @@ -189,7 +191,7 @@ <!-- IF .topicrow.pagination --> <div class="pagination"> - <span><i class="icon fa-clone fa-fw"></i></span> + <span><i class="icon fa-clone fa-fw" aria-hidden="true"></i></span> <ul> <!-- BEGIN pagination --> <!-- IF topicrow.pagination.S_IS_PREV --> @@ -204,8 +206,8 @@ <!-- ENDIF --> <div class="responsive-hide"> - <!-- IF topicrow.S_HAS_POLL --><i class="icon fa-bar-chart fa-fw"></i><!-- ENDIF --> - <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw"></i><!-- ENDIF --> + <!-- IF topicrow.S_HAS_POLL --><i class="icon fa-bar-chart fa-fw" aria-hidden="true"></i><!-- ENDIF --> + <!-- IF topicrow.ATTACH_ICON_IMG --><i class="icon fa-paperclip fa-fw" aria-hidden="true"></i><!-- ENDIF --> {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} » {topicrow.FIRST_POST_TIME} <!-- IF topicrow.S_POST_GLOBAL and FORUM_ID != topicrow.FORUM_ID --> » {L_IN} <a href="{topicrow.U_VIEW_FORUM}">{topicrow.FORUM_NAME}</a><!-- ENDIF --> </div> @@ -219,14 +221,16 @@ <span><dfn>{L_LAST_POST} </dfn>{L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} <!-- IF not S_IS_BOT --> <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}"> - <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md"></i><span class="sr-only">{VIEW_LATEST_POST}</span> + <i class="icon fa-external-link-square fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{VIEW_LATEST_POST}</span> </a> <!-- ENDIF --> <br />{topicrow.LAST_POST_TIME} </span> </dd> </dl> + <!-- EVENT viewforum_body_topic_row_append --> </li> + <!-- EVENT viewforum_body_topic_row_after --> <!-- IF topicrow.S_LAST_ROW --> </ul> @@ -265,9 +269,9 @@ <a href="{U_POST_NEW_TOPIC}" class="button" title="<!-- IF S_IS_LOCKED -->{L_FORUM_LOCKED}<!-- ELSE -->{L_POST_TOPIC}<!-- ENDIF -->"> <!-- IF S_IS_LOCKED --> - <span>{L_BUTTON_FORUM_LOCKED}</span> <i class="icon fa-lock fa-fw"></i> + <span>{L_BUTTON_FORUM_LOCKED}</span> <i class="icon fa-lock fa-fw" aria-hidden="true"></i> <!-- ELSE --> - <span>{L_BUTTON_NEW_TOPIC}</span> <i class="icon fa-pencil fa-fw"></i> + <span>{L_BUTTON_NEW_TOPIC}</span> <i class="icon fa-pencil fa-fw" aria-hidden="true"></i> <!-- ENDIF --> </a> diff --git a/phpBB/styles/prosilver/template/viewtopic_body.html b/phpBB/styles/prosilver/template/viewtopic_body.html index 94486ef8a5..5642c0a5cb 100644 --- a/phpBB/styles/prosilver/template/viewtopic_body.html +++ b/phpBB/styles/prosilver/template/viewtopic_body.html @@ -32,9 +32,9 @@ <!-- IF not S_IS_BOT and S_DISPLAY_REPLY_INFO --> <a href="{U_POST_REPLY_TOPIC}" class="button" title="<!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF -->"> <!-- IF S_IS_LOCKED --> - <span>{L_BUTTON_TOPIC_LOCKED}</span> <i class="icon fa-lock fa-fw"></i> + <span>{L_BUTTON_TOPIC_LOCKED}</span> <i class="icon fa-lock fa-fw" aria-hidden="true"></i> <!-- ELSE --> - <span>{L_BUTTON_POST_REPLY}</span> <i class="icon fa-reply fa-fw"></i> + <span>{L_BUTTON_POST_REPLY}</span> <i class="icon fa-reply fa-fw" aria-hidden="true"></i> <!-- ENDIF --> </a> <!-- ENDIF --> @@ -48,11 +48,11 @@ <form method="get" id="topic-search" action="{S_SEARCHBOX_ACTION}"> <fieldset> <input class="inputbox search tiny" type="search" name="keywords" id="search_keywords" size="20" placeholder="{L_SEARCH_TOPIC}" /> - <button class="button" type="submit" title="{L_SEARCH}"> - <i class="icon fa-search fa-fw"></i><span>{L_SEARCH}</span> + <button class="button button-search" type="submit" title="{L_SEARCH}"> + <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH}</span> </button> - <a href="{U_SEARCH}" class="button" title="{L_SEARCH_ADV}"> - <i class="icon fa-cog fa-fw"></i><span>{L_SEARCH_ADV}</span> + <a href="{U_SEARCH}" class="button button-search-end" title="{L_SEARCH_ADV}"> + <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">{L_SEARCH_ADV}</span> </a> {S_SEARCH_LOCAL_HIDDEN_FIELDS} </fieldset> @@ -88,7 +88,7 @@ <fieldset class="polls"> <!-- BEGIN poll_option --> <!-- EVENT viewtopic_body_poll_option_before --> - <dl class="<!-- IF poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF --><!-- IF poll_option.POLL_OPTION_MOST_VOTES --> most-votes<!-- ENDIF -->"<!-- IF poll_option.POLL_OPTION_VOTED --> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF --> data-poll-option-id="{poll_option.POLL_OPTION_ID}"> + <dl class="<!-- IF poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF --><!-- IF poll_option.POLL_OPTION_MOST_VOTES --> most-votes<!-- ENDIF -->"<!-- IF poll_option.POLL_OPTION_VOTED --> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF --> data-alt-text="{L_POLL_VOTED_OPTION}" data-poll-option-id="{poll_option.POLL_OPTION_ID}"> <dt><!-- IF S_CAN_VOTE --><label for="vote_{poll_option.POLL_OPTION_ID}">{poll_option.POLL_OPTION_CAPTION}</label><!-- ELSE -->{poll_option.POLL_OPTION_CAPTION}<!-- ENDIF --></dt> <!-- IF S_CAN_VOTE --><dd style="width: auto;" class="poll_option_select"><!-- IF S_IS_MULTI_CHOICE --><input type="checkbox" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ELSE --><input type="radio" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ENDIF --></dd><!-- ENDIF --> <dd class="resultbar<!-- IF not S_DISPLAY_RESULTS --> hidden<!-- ENDIF -->"><div class="<!-- IF poll_option.POLL_OPTION_PCT < 20 -->pollbar1<!-- ELSEIF poll_option.POLL_OPTION_PCT < 40 -->pollbar2<!-- ELSEIF poll_option.POLL_OPTION_PCT < 60 -->pollbar3<!-- ELSEIF poll_option.POLL_OPTION_PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width:{poll_option.POLL_OPTION_PERCENT_REL};">{poll_option.POLL_OPTION_RESULT}</div></dd> @@ -179,7 +179,7 @@ <strong>{L_CONTACT}{L_COLON}</strong> <div class="dropdown-container dropdown-left"> <a href="#" class="dropdown-trigger" title="{postrow.CONTACT_USER}"> - <i class="icon fa-commenting-o fa-fw icon-lg"></i><span class="sr-only">{postrow.CONTACT_USER}</span> + <i class="icon fa-commenting-o fa-fw icon-lg" aria-hidden="true"></i><span class="sr-only">{postrow.CONTACT_USER}</span> </a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> @@ -222,7 +222,7 @@ <!-- ENDIF --> <div id="post_content{postrow.POST_ID}"<!-- IF postrow.S_POST_HIDDEN --> style="display: none;"<!-- ENDIF -->> - <h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3> + <h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="{postrow.POST_ICON_IMG_ALT}" title="{postrow.POST_ICON_IMG_ALT}" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3> <!-- DEFINE $SHOW_POST_BUTTONS = (postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE) --> <!-- EVENT viewtopic_body_post_buttons_list_before --> @@ -232,43 +232,43 @@ <!-- EVENT viewtopic_body_post_buttons_before --> <!-- IF postrow.U_EDIT --> <li> - <a href="{postrow.U_EDIT}" title="{L_EDIT_POST}" class="button icon-button"> - <i class="icon fa-pencil fa-fw"></i><span>{L_BUTTON_EDIT}</span> + <a href="{postrow.U_EDIT}" title="{L_EDIT_POST}" class="button button-icon-only"> + <i class="icon fa-pencil fa-fw" aria-hidden="true"></i><span class="sr-only">{L_BUTTON_EDIT}</span> </a> </li> <!-- ENDIF --> <!-- IF postrow.U_DELETE --> <li> - <a href="{postrow.U_DELETE}" title="{L_DELETE_POST}" class="button icon-button"> - <i class="icon fa-times fa-fw"></i><span>{L_DELETE_POST}</span> + <a href="{postrow.U_DELETE}" title="{L_DELETE_POST}" class="button button-icon-only"> + <i class="icon fa-times fa-fw" aria-hidden="true"></i><span class="sr-only">{L_DELETE_POST}</span> </a> </li> <!-- ENDIF --> <!-- IF postrow.U_REPORT --> <li> - <a href="{postrow.U_REPORT}" title="{L_REPORT_POST}" class="button icon-button"> - <i class="icon fa-exclamation fa-fw"></i><span>{L_REPORT_POST}</span> + <a href="{postrow.U_REPORT}" title="{L_REPORT_POST}" class="button button-icon-only"> + <i class="icon fa-exclamation fa-fw" aria-hidden="true"></i><span class="sr-only">{L_REPORT_POST}</span> </a> </li> <!-- ENDIF --> <!-- IF postrow.U_WARN --> <li> - <a href="{postrow.U_WARN}" title="{L_WARN_USER}" class="button icon-button"> - <i class="icon fa-exclamation-triangle fa-fw"></i><span>{L_WARN_USER}</span> + <a href="{postrow.U_WARN}" title="{L_WARN_USER}" class="button button-icon-only"> + <i class="icon fa-exclamation-triangle fa-fw" aria-hidden="true"></i><span class="sr-only">{L_WARN_USER}</span> </a> </li> <!-- ENDIF --> <!-- IF postrow.U_INFO --> <li> - <a href="{postrow.U_INFO}" title="{L_INFORMATION}" class="button icon-button"> - <i class="icon fa-info fa-fw"></i><span>{L_INFORMATION}</span> + <a href="{postrow.U_INFO}" title="{L_INFORMATION}" class="button button-icon-only"> + <i class="icon fa-info fa-fw" aria-hidden="true"></i><span class="sr-only">{L_INFORMATION}</span> </a> </li> <!-- ENDIF --> <!-- IF postrow.U_QUOTE --> <li> - <a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}" class="button icon-button"> - <i class="icon fa-quote-left fa-fw"></i><span>{L_QUOTE}</span> + <a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}" class="button button-icon-only"> + <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">{L_QUOTE}</span> </a> </li> <!-- ENDIF --> @@ -281,10 +281,10 @@ <!-- EVENT viewtopic_body_postrow_post_details_before --> <p class="author"> <!-- IF S_IS_BOT --> - <span><i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{postrow.MINI_POST}</span></span> + <span><i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{postrow.MINI_POST}</span></span> <!-- ELSE --> <a href="{postrow.U_MINI_POST}" title="{postrow.MINI_POST}"> - <i class="icon fa-file fa-fw icon-lightgray icon-md"></i><span class="sr-only">{postrow.MINI_POST}</span> + <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">{postrow.MINI_POST}</span> </a> <!-- ENDIF --> <span class="responsive-hide">{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> » </span>{postrow.POST_DATE} @@ -305,7 +305,9 @@ <form method="post" class="mcp_approve" action="{postrow.U_APPROVE_ACTION}"> <p class="post-notice deleted"> <strong>{L_POST_DELETED_ACTION}</strong> - <input class="button2" type="submit" value="{L_DELETE}" name="action[disapprove]" /> + <!-- IF postrow.S_DELETE_PERMANENT --> + <input class="button2" type="submit" value="{L_DELETE}" name="action[delete]" /> + <!-- ENDIF --> <input class="button1" type="submit" value="{L_RESTORE}" name="action[restore]" /> <input type="hidden" name="post_id_list[]" value="{postrow.POST_ID}" /> {S_FORM_TOKEN} @@ -357,7 +359,7 @@ <div class="back2top"> <a href="#top" class="top" title="{L_BACK_TO_TOP}"> - <i class="icon fa-chevron-circle-up fa-fw icon-gray"></i> + <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">{L_BACK_TO_TOP}</span> </a> </div> @@ -393,9 +395,9 @@ <!-- IF not S_IS_BOT and S_DISPLAY_REPLY_INFO --> <a href="{U_POST_REPLY_TOPIC}" class="button" title="<!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF -->"> <!-- IF S_IS_LOCKED --> - <span>{L_BUTTON_TOPIC_LOCKED}</span> <i class="icon fa-lock fa-fw"></i> + <span>{L_BUTTON_TOPIC_LOCKED}</span> <i class="icon fa-lock fa-fw" aria-hidden="true"></i> <!-- ELSE --> - <span>{L_BUTTON_POST_REPLY}</span> <i class="icon fa-reply fa-fw"></i> + <span>{L_BUTTON_POST_REPLY}</span> <i class="icon fa-reply fa-fw" aria-hidden="true"></i> <!-- ENDIF --> </a> <!-- ENDIF --> @@ -405,9 +407,9 @@ <!-- IF .quickmod --> <div class="quickmod dropdown-container dropdown-container-left dropdown-up dropdown-{S_CONTENT_FLOW_END} dropdown-button-control" id="quickmod"> - <span title="{L_QUICK_MOD}" class="button dropdown-trigger dropdown-select"> - <i class="icon fa-gavel fa-fw"></i><span class="sr-only">{L_QUICK_MOD}</span> - <span class="caret"><i class="icon fa-sort-down fa-fw"></i></span> + <span title="{L_QUICK_MOD}" class="button button-secondary dropdown-trigger dropdown-select"> + <i class="icon fa-gavel fa-fw" aria-hidden="true"></i><span class="sr-only">{L_QUICK_MOD}</span> + <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> diff --git a/phpBB/styles/prosilver/template/viewtopic_topic_tools.html b/phpBB/styles/prosilver/template/viewtopic_topic_tools.html index 55f742e944..96c514f1d9 100644 --- a/phpBB/styles/prosilver/template/viewtopic_topic_tools.html +++ b/phpBB/styles/prosilver/template/viewtopic_topic_tools.html @@ -1,8 +1,8 @@ <!-- IF not S_IS_BOT and (U_WATCH_TOPIC or U_BOOKMARK_TOPIC or U_BUMP_TOPIC or U_EMAIL_TOPIC or U_PRINT_TOPIC or S_DISPLAY_TOPIC_TOOLS) --> <div class="dropdown-container dropdown-button-control topic-tools"> - <span title="{L_PM_TOOLS}" class="button dropdown-trigger dropdown-select"> - <i class="icon fa-wrench fa-fw"></i> - <span class="caret"><i class="icon fa-sort-down fa-fw"></i></span> + <span title="{L_PM_TOOLS}" class="button button-secondary dropdown-trigger dropdown-select"> + <i class="icon fa-wrench fa-fw" aria-hidden="true"></i> + <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> @@ -11,35 +11,35 @@ <!-- IF U_WATCH_TOPIC --> <li> <a href="{U_WATCH_TOPIC}" class="watch-topic-link" title="{S_WATCH_TOPIC_TITLE}" data-ajax="toggle_link" data-toggle-class="icon <!-- IF S_WATCHING_TOPIC -->fa-check-square-o<!-- ELSE -->fa-square-o<!-- ENDIF --> fa-fw" data-toggle-text="{S_WATCH_TOPIC_TOGGLE}" data-toggle-url="{U_WATCH_TOPIC_TOGGLE}" data-update-all=".watch-topic-link"> - <i class="icon <!-- IF S_WATCHING_FORUM -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw"></i><span>{S_WATCH_TOPIC_TITLE}</span> + <i class="icon <!-- IF S_WATCHING_FORUM -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw" aria-hidden="true"></i><span>{S_WATCH_TOPIC_TITLE}</span> </a> </li> <!-- ENDIF --> <!-- IF U_BOOKMARK_TOPIC --> <li> <a href="{U_BOOKMARK_TOPIC}" class="bookmark-link" title="{L_BOOKMARK_TOPIC}" data-ajax="alt_text" data-alt-text="{S_BOOKMARK_TOGGLE}" data-update-all=".bookmark-link"> - <i class="icon fa-bookmark-o fa-fw"></i><span>{S_BOOKMARK_TOPIC}</span> + <i class="icon fa-bookmark-o fa-fw" aria-hidden="true"></i><span>{S_BOOKMARK_TOPIC}</span> </a> </li> <!-- ENDIF --> <!-- IF U_BUMP_TOPIC --> <li> <a href="{U_BUMP_TOPIC}" title="{L_BUMP_TOPIC}" data-ajax="true"> - <i class="icon fa-level-up fa-fw"></i><span>{L_BUMP_TOPIC}</span> + <i class="icon fa-level-up fa-fw" aria-hidden="true"></i><span>{L_BUMP_TOPIC}</span> </a> </li> <!-- ENDIF --> <!-- IF U_EMAIL_TOPIC --> <li> <a href="{U_EMAIL_TOPIC}" title="{L_EMAIL_TOPIC}"> - <i class="icon fa-envelope-o fa-fw"></i><span>{L_EMAIL_TOPIC}</span> + <i class="icon fa-envelope-o fa-fw" aria-hidden="true"></i><span>{L_EMAIL_TOPIC}</span> </a> </li> <!-- ENDIF --> <!-- IF U_PRINT_TOPIC --> <li> <a href="{U_PRINT_TOPIC}" title="{L_PRINT_TOPIC}" accesskey="p"> - <i class="icon fa-print fa-fw"></i><span>{L_PRINT_TOPIC}</span> + <i class="icon fa-print fa-fw" aria-hidden="true"></i><span>{L_PRINT_TOPIC}</span> </a> </li> <!-- ENDIF --> diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index 4a9a5bc1bc..ca7982b456 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -907,17 +907,17 @@ li.breadcrumbs span:first-child > a { padding: 3px; } -.rtl .search-box .button { +.rtl .button-search, +.button-search-end { float: right; } -.rtl .search-box a.button { +.button-search-end { border-left-width: 1px; border-right-width: 0; - border-radius: 4px 0 0 4px; } -.rtl .search-header a.button { +.rtl .search-header .button-search-end { border: 0; } diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 57a08491e1..726639ff92 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -25,6 +25,7 @@ .button:focus, .button:hover { text-decoration: none; + outline: none; } .caret { @@ -37,6 +38,37 @@ vertical-align: top; } +/* Posting page styles +----------------------------------------*/ +.button-search, +.button-search-end { + float: left; + border-radius: 0; + margin: 0; + padding: 2px 5px; +} + +.button-search-end { + border-left-width: 0; + border-radius: 0 4px 4px 0; +} + +.search-header .button-search, +.search-header .button-search-end { + border-top-width: 0; + border-bottom-width: 0; + padding: 3px 5px; +} + +.search-header .button-search-end { + border-right-width: 0; +} + +.button-icon-only { + padding-left: 3px; + padding-right: 3px; +} + /* Poster contact icons ----------------------------------------*/ .contact-icons.dropdown-contents { diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 852a2843fd..b145a75ace 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -606,7 +606,8 @@ Colours and backgrounds for buttons.css color: #D31141; } -.button:hover, .dropdown-visible .dropdown-select, .nojs .dropdown-container:hover .dropdown-select { +.button:hover, +.button:focus { border-color: #0A8ED0; background-color: #FFFFFF; /* Old browsers */ /* FF3.6+ */ background-image: -webkit-linear-gradient(top, #E9E9E9 0%, #FFFFFF 100%); @@ -615,34 +616,26 @@ Colours and backgrounds for buttons.css text-shadow: 1px 1px 0 #FFFFFF, -1px -1px 0 #FFFFFF, -1px -1px 0 rgba(188, 42, 77, 0.2); } -.button i { - color: #8f8f8f; -} -.button:focus i, -.button:hover i { - color: #1878cb; +.button .icon, +.button-secondary { + color: #8f8f8f; } -.caret { border-color: #DADADA; } -.caret { border-color: #C7C3BF; } - -.jumpbox .button, .jumpbox .button i { - color: #536482; +.button-secondary:focus, +.button-secondary:hover, +.button:focus .icon, +.button:hover .icon { + color: #0A8ED0; } -.jumpbox .button:hover { +.button-search:hover, +.button-search-end:hover { border-color: #C7C3BF; } -.jumpbox .button:hover i { - color: #536482; -} - -.dropdown-visible .dropdown-select, .dropdown-visible .dropdown-select:hover, .nojs .dropdown-container:hover .dropdown-select { - border-color: #A6B2BA; - color: #105289; -} +.caret { border-color: #DADADA; } +.caret { border-color: #C7C3BF; } .contact-icons a { border-color: #DCDCDC; } .contact-icons a:hover { background-color: #F2F6F9; } @@ -683,9 +676,7 @@ Colours and backgrounds for buttons.css .search-box .inputbox, .search-box .inputbox:hover, -.search-box .inputbox:focus, -.search-box .button:focus, -.search-box .button:hover { +.search-box .inputbox:focus { border-color: #C7C3BF; } diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 78321878c2..219603a969 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -441,12 +441,12 @@ ul.linklist.bulletin > li.no-bulletin:before { .dropdown .pointer { right: auto; left: 10px; - top: 0; + top: -1px; z-index: 3; } .dropdown-up .pointer { - bottom: 0; + bottom: -1px; top: auto; } @@ -803,6 +803,10 @@ fieldset.fields1 dl.pmlist dd.recipients { float: left; } +.action-bar .button-search { + margin-right: 0; +} + /* Pagination ---------------------------------------- */ .pagination { diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index fbea5f3a72..371a56fca5 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -142,6 +142,12 @@ dd textarea { width: 95%; } +/* Browser-specific tweaks */ +button::-moz-focus-inner { + padding: 0; + border: 0 +} + /* Quick-login on index page */ fieldset.quick-login { margin-top: 5px; @@ -378,22 +384,6 @@ input.button1:focus, input.button2:focus, input.button3:focus { box-sizing: border-box; } -.search-box .button { - float: left; - border-radius: 0; - margin: 0; - padding: 2px 5px; -} - -.search-box a.button { - border-left-width: 0; - border-radius: 0 4px 4px 0; -} - -.search-box .button span { - font-size: 0; -} - /* Search box (header) --------------------------------------------- */ .search-header { @@ -406,12 +396,6 @@ input.button1:focus, input.button2:focus, input.button3:focus { .search-header .inputbox { border: 0; } -.search-header .button { - border-top-width: 0; - border-bottom-width: 0; - padding: 3px 5px; -} - .navbar .linklist > li.responsive-search { display: none; } input.search { diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 7775208ee2..d611f94e75 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -1,157 +1,100 @@ /* Responsive Design ---------------------------------------- */ -.responsive-hide { display: none !important; } -.responsive-show { display: block !important; } -.responsive-show-inline { display: inline !important; } -.responsive-show-inline-block { display: inline-block !important; } - -/* Content wrappers -----------------------------------------*/ -html { - height: auto; -} - -body { - padding: 0; -} - -.wrap { - border: none; - border-radius: 0; - margin: 0; - min-width: 290px; - padding: 0 5px; -} - -/* Common block wrappers -----------------------------------------*/ -.headerbar, .navbar, .forabg, .forumbg, .post, .panel { - border-radius: 0; - margin-left: -5px; - margin-right: -5px; -} - -.cp-main .forabg, .cp-main .forumdb, .cp-main .post, .cp-main .panel { - border-radius: 7px; +@media (max-width: 320px) { + select, .inputbox { + max-width: 240px; + } } -/* Logo block +/* Notifications list ----------------------------------------*/ -.site-description { - float: none; - width: auto; - text-align: center; -} - -.logo { - /* change display value to inline-block to show logo */ - display: none; - float: none; - padding: 10px; +@media (max-width: 350px) { + .dropdown-extended .dropdown-contents { + width: auto; + } } -.site-description h1, .site-description p { - text-align: inherit; - float: none; - margin: 5px; - line-height: 1.2em; - overflow: hidden; - text-overflow: ellipsis; +@media (max-width: 430px) { + .section-viewtopic .search-box .inputbox { + width: 110px; + } } -.site-description p, .search-header { - display: none; -} +@media (max-width: 500px) { + dd label { + white-space: normal; + } -/* Navigation -----------------------------------------*/ -.headerbar + .navbar { - margin-top: -5px; -} + select, .inputbox { + max-width: 260px; + } -/* Search -----------------------------------------*/ -.responsive-search { display: block !important; } + .captcha-panel dd.captcha { + margin-left: 0; + } -/* .topiclist lists -----------------------------------------*/ -li.header dt { - text-align: center; - text-transform: none; - line-height: 1em; - font-size: 1.2em; - padding-bottom: 4px; -} + .captcha-panel dd.captcha-image img { + width: 100%; + } -ul.topiclist li.header dt, ul.topiclist li.header dt .list-inner { - margin-right: 0 !important; - padding-right: 0; -} + .recaptchatable tr td:last-child { + display: none; + } -ul.topiclist li.header dd { - display: none !important; -} + .captcha-panel .recaptcha-responsive { + display: inline-block !important; + margin-top: 10px; + vertical-align: middle; + } -ul.topiclist dt, ul.topiclist dt .list-inner, -ul.topiclist.missing-column dt, ul.topiclist.missing-column dt .list-inner, -ul.topiclist.two-long-columns dt, ul.topiclist.two-long-columns dt .list-inner, -ul.topiclist.two-columns dt, ul.topiclist.two-columns dt .list-inner { - margin-right: 0; -} + dl.details dt, dl.details dd { + width: auto; + float: none; + text-align: left; + } -ul.topiclist dt .list-inner.with-mark { - padding-right: 34px; -} + dl.details dd { + margin-left: 20px; + } -ul.topiclist dt .list-inner { - min-height: 28px; -} + p.responsive-center { + float: none; + text-align: center; + margin-bottom: 5px; + } -ul.topiclist li.header dt .list-inner { - min-height: 0; -} + .action-bar > div { + margin-bottom: 5px; + } -ul.topiclist dd { - display: none; -} -ul.topiclist dd.mark { - display: block; -} + .action-bar > .pagination { + float: none; + clear: both; + padding-bottom: 1px; + text-align: center; + } -/* Forums and topics lists -----------------------------------------*/ -ul.topiclist.forums dt { - margin-right: -250px; -} -ul.topiclist.forums dt .list-inner { - margin-right: 250px; -} + .action-bar > .pagination li.page-jump { + margin: 0 2px; + } -ul.topiclist.forums dd.lastpost { - display: block; -} + p.jumpbox-return { + display: none; + } -ul.topiclist dd.mark { - display: block; - position: absolute; - right: 5px; - top: 0; - margin: 0; - width: auto; - min-width: 0; - text-align: left; -} + .display-options > label:nth-child(1) { + display: block; + margin-bottom: 5px; + } -ul.topiclist.forums dd.topics dfn, ul.topiclist.topics dd.posts dfn { - position: relative; - left: 0; - width: auto; - display: inline; - font-weight: normal; + .attach-controls { + margin-top: 5px; + width: 100%; + } } -@media only screen and (max-width: 550px), only screen and (max-device-width: 550px) { +@media (max-width: 550px) { ul.topiclist.forums dt { margin-right: 0; } @@ -165,388 +108,442 @@ ul.topiclist.forums dd.topics dfn, ul.topiclist.topics dd.posts dfn { } } -li.row .responsive-show strong { - font-weight: bold; - color: inherit; -} - -ul.topiclist li.row dt a.subforum { - vertical-align: bottom; - overflow: hidden; - text-overflow: ellipsis; - max-width: 100px; -} +@media (max-width: 700px) { + .responsive-hide { display: none !important; } + .responsive-show { display: block !important; } + .responsive-show-inline { display: inline !important; } + .responsive-show-inline-block { display: inline-block !important; } -/* Notifications list -----------------------------------------*/ -@media only screen and (max-width: 350px), only screen and (max-device-width: 350px) { - .dropdown-extended .dropdown-contents { - width: auto; + /* Content wrappers + ----------------------------------------*/ + html { + height: auto; } -} - -/* Pagination -----------------------------------------*/ -.pagination > ul { - margin: 5px 0 0; -} -.row .pagination .ellipsis + li { - display: none !important; -} - -/* Responsive tables -----------------------------------------*/ -table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { - display: block; -} + body { + padding: 0; + } -table.responsive thead, table.responsive th { - display: none; -} + .wrap { + border: none; + border-radius: 0; + margin: 0; + min-width: 290px; + padding: 0 5px; + } -table.responsive.show-header thead, table.responsive.show-header th:first-child { - display: block; - width: auto !important; - text-align: left !important; -} + /* Common block wrappers + ----------------------------------------*/ + .headerbar, .navbar, .forabg, .forumbg, .post, .panel { + border-radius: 0; + margin-left: -5px; + margin-right: -5px; + } -table.responsive.show-header th:first-child span.rank-img { - display: none; -} + .cp-main .forabg, .cp-main .forumdb, .cp-main .post, .cp-main .panel { + border-radius: 7px; + } -table.responsive tr { - margin: 2px 0; -} + /* Logo block + ----------------------------------------*/ + .site-description { + float: none; + width: auto; + text-align: center; + } -table.responsive td { - width: auto !important; - text-align: left !important; - padding: 4px; -} + .logo { + /* change display value to inline-block to show logo */ + display: none; + float: none; + padding: 10px; + } -table.responsive td.empty { - display: none !important; -} + .site-description h1, .site-description p { + text-align: inherit; + float: none; + margin: 5px; + line-height: 1.2em; + overflow: hidden; + text-overflow: ellipsis; + } -table.responsive td > dfn { - display: inline-block !important; -} + .site-description p, .search-header { + display: none; + } -table.responsive td > dfn:after { - content: ':'; - padding-right: 5px; -} + /* Navigation + ----------------------------------------*/ + .headerbar + .navbar { + margin-top: -5px; + } -table.responsive span.rank-img { - float: none; - padding-right: 5px; -} + /* Search + ----------------------------------------*/ + .responsive-search { display: block !important; } -table.responsive.memberlist td:first-child input[type="checkbox"] { - float: right; -} + /* .topiclist lists + ----------------------------------------*/ + li.header dt { + text-align: center; + text-transform: none; + line-height: 1em; + font-size: 1.2em; + padding-bottom: 4px; + } -/* Forms -----------------------------------------*/ -fieldset dt, fieldset.fields1 dt, fieldset.fields2 dt { - width: auto; - float: none; -} + ul.topiclist li.header dt, ul.topiclist li.header dt .list-inner { + margin-right: 0 !important; + padding-right: 0; + } -fieldset dd, fieldset.fields1 dd, fieldset.fields2 dd { - margin-left: 20px; -} + ul.topiclist li.header dd { + display: none !important; + } -textarea, dd textarea, .message-box textarea { - width: 100%; - -moz-box-sizing: border-box; - box-sizing: border-box; -} + ul.topiclist dt, ul.topiclist dt .list-inner, + ul.topiclist.missing-column dt, ul.topiclist.missing-column dt .list-inner, + ul.topiclist.two-long-columns dt, ul.topiclist.two-long-columns dt .list-inner, + ul.topiclist.two-columns dt, ul.topiclist.two-columns dt .list-inner { + margin-right: 0; + } -dl.pmlist dt { - width: auto !important; - margin-bottom: 5px; -} + ul.topiclist dt .list-inner.with-mark { + padding-right: 34px; + } -dl.pmlist dd { - display: inline-block; - margin-left: 0 !important; -} + ul.topiclist dt .list-inner { + min-height: 28px; + } -dl.pmlist dd:first-of-type { - padding-left: 20px; -} + ul.topiclist li.header dt .list-inner { + min-height: 0; + } -.smiley-box, .message-box { - float: none; - width: auto; -} + ul.topiclist dd { + display: none; + } + ul.topiclist dd.mark { + display: block; + } -.smiley-box { - margin-top: 5px; -} + /* Forums and topics lists + ----------------------------------------*/ + ul.topiclist.forums dt { + margin-right: -250px; + } -.bbcode-status { - display: none; -} + ul.topiclist dd.mark { + display: block; + position: absolute; + right: 5px; + top: 0; + margin: 0; + width: auto; + min-width: 0; + text-align: left; + } -.colour-palette, .colour-palette tbody, .colour-palette tr { - display: block; -} + ul.topiclist.forums dd.topics dfn, ul.topiclist.topics dd.posts dfn { + position: relative; + left: 0; + width: auto; + display: inline; + font-weight: normal; + } -.colour-palette td { - display: inline-block; - margin-right: 2px; -} + li.row .responsive-show strong { + font-weight: bold; + color: inherit; + } -.horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { - display: none; -} + ul.topiclist li.row dt a.subforum { + vertical-align: bottom; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100px; + } -fieldset.quick-login label { - display: block; - margin-bottom: 5px; - white-space: normal; -} + /* Pagination + ----------------------------------------*/ + .pagination > ul { + margin: 5px 0 0; + } -fieldset.quick-login label > span { - display: inline-block; - min-width: 100px; -} + .row .pagination .ellipsis + li { + display: none !important; + } -fieldset.quick-login input.inputbox { - width: 85%; - max-width: 300px; - margin-left: 20px; -} + /* Responsive tables + ----------------------------------------*/ + table.responsive, table.responsive tbody, table.responsive tr, table.responsive td { + display: block; + } -fieldset.quick-login label[for="autologin"] { - display: inline-block; - text-align: right; - min-width: 50%; -} + table.responsive thead, table.responsive th { + display: none; + } -@media only screen and (max-width: 500px), only screen and (max-device-width: 500px) { - dd label { - white-space: normal; + table.responsive.show-header thead, table.responsive.show-header th:first-child { + display: block; + width: auto !important; + text-align: left !important; } - select, .inputbox { - max-width: 260px; + table.responsive.show-header th:first-child span.rank-img { + display: none; } - .captcha-panel dd.captcha { - margin-left: 0; + table.responsive tr { + margin: 2px 0; } - .captcha-panel dd.captcha-image img { - width: 100%; + table.responsive td { + width: auto !important; + text-align: left !important; + padding: 4px; } - .recaptchatable tr td:last-child { - display: none; + table.responsive td.empty { + display: none !important; } - .captcha-panel .recaptcha-responsive { + table.responsive td > dfn { display: inline-block !important; - margin-top: 10px; - vertical-align: middle; } -} -@media only screen and (max-width: 430px), only screen and (max-device-width: 430px) { - .section-viewtopic .search-box .inputbox { - width: 110px; + table.responsive td > dfn:after { + content: ':'; + padding-right: 5px; } -} -@media only screen and (max-width: 320px), only screen and (max-device-width: 320px) { - select, .inputbox { - max-width: 240px; + table.responsive span.rank-img { + float: none; + padding-right: 5px; } -} -/* User profile -----------------------------------------*/ -.column1, .column2, .left-box.profile-details { - float: none; - width: auto; -} + table.responsive.memberlist td:first-child input[type="checkbox"] { + float: right; + } -@media only screen and (max-width: 500px), only screen and (max-device-width: 500px) { - dl.details dt, dl.details dd { + /* Forms + ----------------------------------------*/ + fieldset dt, fieldset.fields1 dt, fieldset.fields2 dt { width: auto; float: none; - text-align: left; } - dl.details dd { + fieldset dd, fieldset.fields1 dd, fieldset.fields2 dd { margin-left: 20px; } -} -/* Polls -----------------------------------------*/ -fieldset.polls dt { - width: 90%; -} + textarea, dd textarea, .message-box textarea { + width: 100%; + -moz-box-sizing: border-box; + box-sizing: border-box; + } -fieldset.polls dd.resultbar { - padding-left: 20px; -} + dl.pmlist dt { + width: auto !important; + margin-bottom: 5px; + } -fieldset.polls dd.poll_option_percent { - width: 20%; -} + dl.pmlist dd { + display: inline-block; + margin-left: 0 !important; + } -fieldset.polls dd.resultbar, fieldset.polls dd.poll_option_percent { - margin-top: 5px; -} + dl.pmlist dd:first-of-type { + padding-left: 20px; + } -/* Post -----------------------------------------*/ -.postbody { - position: inherit; -} + .smiley-box, .message-box { + float: none; + width: auto; + } -.postprofile, .postbody, .search .postbody { - display: block; - width: auto; - float: none; - padding: 0; - min-height: 0; -} + .smiley-box { + margin-top: 5px; + } -.post .postprofile { - width: auto; - border-width: 0 0 1px 0; - padding-bottom: 5px; - margin: 0; - margin-bottom: 5px; - min-height: 40px; - overflow: hidden; -} + .bbcode-status { + display: none; + } -.postprofile dd { - display: none; -} + .colour-palette, .colour-palette tbody, .colour-palette tr { + display: block; + } -.postprofile dt, .postprofile dd.profile-rank, .search .postprofile dd { - display: block; - margin: 0; -} + .colour-palette td { + display: inline-block; + margin-right: 2px; + } -.postprofile .has-avatar .avatar-container { - margin: 0; - overflow: inherit; -} + .horizontal-palette td:nth-child(2n), .vertical-palette tr:nth-child(2n) { + display: none; + } -.postprofile .avatar-container:after { - clear: none; -} + fieldset.quick-login label { + display: block; + margin-bottom: 5px; + white-space: normal; + } -.postprofile .avatar { - margin-right: 5px; -} + fieldset.quick-login label > span { + display: inline-block; + min-width: 100px; + } -.postprofile .avatar img { - width: auto !important; - height: auto !important; - max-height: 32px; -} + fieldset.quick-login input.inputbox { + width: 85%; + max-width: 300px; + margin-left: 20px; + } -.has-profile .postbody h3 { - margin-left: 0 !important; - margin-right: 0 !important; -} + fieldset.quick-login label[for="autologin"] { + display: inline-block; + text-align: right; + min-width: 50%; + } -.has-profile .post-buttons { - right: 20px; - top: 15px; -} + /* User profile + ----------------------------------------*/ + .column1, .column2, .left-box.profile-details { + float: none; + width: auto; + } -.online { - background-size: 40px; -} + /* Polls + ----------------------------------------*/ + fieldset.polls dt { + width: 90%; + } -/* Misc stuff -----------------------------------------*/ -h2 { - margin-top: .5em; -} + fieldset.polls dd.resultbar { + padding-left: 20px; + } -p { - margin-bottom: .5em; - overflow: hidden; -} + fieldset.polls dd.poll_option_percent { + width: 20%; + } -p.rightside { - margin-bottom: 0; -} + fieldset.polls dd.resultbar, fieldset.polls dd.poll_option_percent { + margin-top: 5px; + } -fieldset.display-options label { - display: block; - clear: both; - margin-bottom: 5px; -} + /* Post + ----------------------------------------*/ + .postbody { + position: inherit; + } -dl.mini dd.pm-legend { - float: left; - min-width: 200px; -} + .postprofile, .postbody, .search .postbody { + display: block; + width: auto; + float: none; + padding: 0; + min-height: 0; + } -.topicreview { - margin: 0 -5px; - padding: 0 5px; -} + .post .postprofile { + width: auto; + border-width: 0 0 1px 0; + padding-bottom: 5px; + margin: 0; + margin-bottom: 5px; + min-height: 40px; + overflow: hidden; + } -fieldset.display-actions { - white-space: normal; -} + .postprofile dd { + display: none; + } -.phpbb_alert { - width: auto; - margin: 0 5px; -} + .postprofile dt, .postprofile dd.profile-rank, .search .postprofile dd { + display: block; + margin: 0; + } -.attach-comment dfn { - width: 100%; -} + .postprofile .has-avatar .avatar-container { + margin: 0; + overflow: inherit; + } -@media only screen and (max-width: 500px), only screen and (max-device-width: 500px) { - p.responsive-center { - float: none; - text-align: center; - margin-bottom: 5px; + .postprofile .avatar-container:after { + clear: none; } - .action-bar > div { - margin-bottom: 5px; - } + .postprofile .avatar { + margin-right: 5px; + } - .action-bar > .pagination { - float: none; - clear: both; - padding-bottom: 1px; - text-align: center; + .postprofile .avatar img { + width: auto !important; + height: auto !important; + max-height: 32px; } - .action-bar > .pagination li.page-jump { - margin: 0 2px; + .has-profile .postbody h3 { + margin-left: 0 !important; + margin-right: 0 !important; } - p.jumpbox-return { - display: none; + .has-profile .post-buttons { + right: 30px; + top: 15px; } - .display-options > label:nth-child(1) { + .online { + background-size: 40px; + } + + /* Misc stuff + ----------------------------------------*/ + h2 { + margin-top: .5em; + } + + p { + margin-bottom: .5em; + overflow: hidden; + } + + p.rightside { + margin-bottom: 0; + } + + fieldset.display-options label { display: block; + clear: both; margin-bottom: 5px; } - .attach-controls { - margin-top: 5px; + dl.mini dd.pm-legend { + float: left; + min-width: 200px; + } + + .topicreview { + margin: 0 -5px; + padding: 0 5px; + } + + fieldset.display-actions { + white-space: normal; + } + + .phpbb_alert { + width: auto; + margin: 0 5px; + } + + .attach-comment dfn { width: 100%; } } + +@media (max-width: 850px) { + .postprofile { width: 28%; } + .postbody { width: 70%; } +} + diff --git a/phpBB/styles/prosilver/theme/stylesheet.css b/phpBB/styles/prosilver/theme/stylesheet.css index 78259ea749..4fe97d144b 100644 --- a/phpBB/styles/prosilver/theme/stylesheet.css +++ b/phpBB/styles/prosilver/theme/stylesheet.css @@ -18,3 +18,4 @@ @import url("forms.css"); @import url("icons.css"); @import url("colours.css"); +@import url("responsive.css"); diff --git a/phpBB/styles/prosilver/theme/utilities.css b/phpBB/styles/prosilver/theme/utilities.css index c3c02965c6..cbb8127d1c 100644 --- a/phpBB/styles/prosilver/theme/utilities.css +++ b/phpBB/styles/prosilver/theme/utilities.css @@ -60,8 +60,7 @@ } .hidden { - display: none !important; - visibility: hidden !important; + display: none ; } .affix { position: fixed } diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 2908265a97..8be23def00 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -1829,6 +1829,12 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) (!$s_cannot_delete && !$s_cannot_delete_lastpost && !$s_cannot_delete_time && !$s_cannot_delete_locked) )); + $softdelete_allowed = ($auth->acl_get('m_softdelete', $forum_id) || + ($auth->acl_get('f_softdelete', $forum_id) && $user->data['user_id'] == $poster_id)) && ($row['post_visibility'] != ITEM_DELETED); + + $permanent_delete_allowed = ($auth->acl_get('m_delete', $forum_id) || + ($auth->acl_get('f_delete', $forum_id) && $user->data['user_id'] == $poster_id)); + // Can this user receive a Private Message? $can_receive_pm = ( // They must be a "normal" user @@ -1885,13 +1891,14 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) 'POST_ICON_IMG' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['img'] : '', 'POST_ICON_IMG_WIDTH' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['width'] : '', 'POST_ICON_IMG_HEIGHT' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['height'] : '', + 'POST_ICON_IMG_ALT' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['alt'] : '', 'ONLINE_IMG' => ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? '' : (($user_cache[$poster_id]['online']) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')), 'S_ONLINE' => ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? false : (($user_cache[$poster_id]['online']) ? true : false), 'U_EDIT' => ($edit_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&f=$forum_id&p={$row['post_id']}") : '', 'U_QUOTE' => ($quote_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=quote&f=$forum_id&p={$row['post_id']}") : '', 'U_INFO' => ($auth->acl_get('m_info', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=main&mode=post_details&f=$forum_id&p=" . $row['post_id'], true, $user->session_id) : '', - 'U_DELETE' => ($delete_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : '', + 'U_DELETE' => ($delete_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=' . (($softdelete_allowed) ? 'soft_delete' : 'delete') . "&f=$forum_id&p={$row['post_id']}") : '', 'U_SEARCH' => $user_cache[$poster_id]['search'], 'U_PM' => $u_pm, @@ -1932,6 +1939,7 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) 'L_IGNORE_POST' => ($row['foe']) ? sprintf($user->lang['POST_BY_FOE'], get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username'])) : '', 'S_POST_HIDDEN' => $row['hide_post'], 'L_POST_DISPLAY' => ($row['hide_post']) ? $user->lang('POST_DISPLAY', '<a class="display_post" data-post-id="' . $row['post_id'] . '" href="' . $viewtopic_url . "&p={$row['post_id']}&view=show#p{$row['post_id']}" . '">', '</a>') : '', + 'S_DELETE_PERMANENT' => $permanent_delete_allowed, ); $user_poster_data = $user_cache[$poster_id]; diff --git a/tests/console/cron/run_test.php b/tests/console/cron/run_test.php index 51ea49b282..d6c7b21781 100644 --- a/tests/console/cron/run_test.php +++ b/tests/console/cron/run_test.php @@ -78,6 +78,10 @@ class phpbb_console_command_cron_run_test extends phpbb_database_test_case $this->assertSame(false, $this->lock->owns_lock()); } + /** + * @expectedException \phpbb\exception\runtime_exception + * @expectedExceptionMessage CRON_LOCK_ERROR + */ public function test_error_lock() { $this->lock->acquire(); @@ -126,6 +130,10 @@ class phpbb_console_command_cron_run_test extends phpbb_database_test_case $this->assertSame(false, $this->lock->owns_lock()); } + /** + * @expectedException \phpbb\exception\runtime_exception + * @expectedExceptionMessage CRON_NO_SUCH_TASK + */ public function test_arg_invalid() { $command_tester = $this->get_command_tester(); diff --git a/tests/console/thumbnail_test.php b/tests/console/thumbnail_test.php index b5ed02b5e7..45d7adacb9 100644 --- a/tests/console/thumbnail_test.php +++ b/tests/console/thumbnail_test.php @@ -39,6 +39,11 @@ class phpbb_console_command_thumbnail_test extends phpbb_database_test_case { global $config, $phpbb_root_path, $phpEx, $phpbb_filesystem; + if (!@extension_loaded('gd')) + { + $this->markTestSkipped('Thumbnail tests require gd extension.'); + } + parent::setUp(); $config = $this->config = new \phpbb\config\config(array( diff --git a/tests/controller/common_helper_route.php b/tests/controller/common_helper_route.php index 4c0c8569a3..72c5328b0b 100644 --- a/tests/controller/common_helper_route.php +++ b/tests/controller/common_helper_route.php @@ -122,9 +122,11 @@ abstract class phpbb_controller_common_helper_route extends phpbb_test_case ) ); - $this->router = new phpbb_mock_router($container, $this->filesystem, dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT, $this->extension_manager); - $this->router->find_routing_files($this->extension_manager->all_enabled(false)); - $this->router->find(dirname(__FILE__) . '/'); + $loader = new \Symfony\Component\Routing\Loader\YamlFileLoader( + new \phpbb\routing\file_locator($this->filesystem, dirname(__FILE__) . '/') + ); + $resources_locator = new \phpbb\routing\resources_locator\default_resources_locator(dirname(__FILE__) . '/', PHPBB_ENVIRONMENT, $this->extension_manager); + $this->router = new phpbb_mock_router($container, $resources_locator, $loader, dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT); // Set correct current phpBB root path $this->root_path = $this->get_phpbb_root_path(); diff --git a/tests/controller/controller_test.php b/tests/controller/controller_test.php index d0295d66bc..431b26b2bc 100644 --- a/tests/controller/controller_test.php +++ b/tests/controller/controller_test.php @@ -38,14 +38,17 @@ class phpbb_controller_controller_test extends phpbb_test_case )); } - public function test_router_find_files() + public function test_router_default_loader() { $container = new phpbb_mock_container_builder(); $container->setParameter('core.environment', PHPBB_ENVIRONMENT); - $router = new \phpbb\routing\router($container, new \phpbb\filesystem\filesystem(), dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT, $this->extension_manager); - $router->find_routing_files($this->extension_manager->all_enabled(false)); - $routes = $router->find(__DIR__)->get_routes(); + $loader = new \Symfony\Component\Routing\Loader\YamlFileLoader( + new \phpbb\routing\file_locator(new \phpbb\filesystem\filesystem(), dirname(__FILE__) . '/') + ); + $resources_locator = new \phpbb\routing\resources_locator\default_resources_locator(dirname(__FILE__) . '/', PHPBB_ENVIRONMENT, $this->extension_manager); + $router = new phpbb_mock_router($container, $resources_locator, $loader, dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT); + $routes = $router->get_routes(); // This will need to be updated if any new routes are defined $this->assertInstanceOf('Symfony\Component\Routing\Route', $routes->get('core_controller')); diff --git a/tests/pagination/pagination_test.php b/tests/pagination/pagination_test.php index 0607098d93..6a3b46cdae 100644 --- a/tests/pagination/pagination_test.php +++ b/tests/pagination/pagination_test.php @@ -41,9 +41,12 @@ class phpbb_pagination_pagination_test extends phpbb_template_template_test_case $manager = new phpbb_mock_extension_manager(dirname(__FILE__) . '/', array()); $this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1')); - $router = new phpbb_mock_router(new phpbb_mock_container_builder(), $filesystem, dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT, $manager); - $router->find_routing_files($manager->all_enabled(false)); - $router->find(dirname(__FILE__) . '/'); + + $loader = new \Symfony\Component\Routing\Loader\YamlFileLoader( + new \phpbb\routing\file_locator($filesystem, dirname(__FILE__) . '/') + ); + $resources_locator = new \phpbb\routing\resources_locator\default_resources_locator(dirname(__FILE__) . '/', PHPBB_ENVIRONMENT, $manager); + $router = new phpbb_mock_router(new phpbb_mock_container_builder(), $resources_locator, $loader, dirname(__FILE__) . '/', 'php', PHPBB_ENVIRONMENT); $request = new phpbb_mock_request(); $request->overwrite('SCRIPT_NAME', '/app.php', \phpbb\request\request_interface::SERVER); diff --git a/travis/check-executable-files.sh b/travis/check-executable-files.sh index e1a1625d18..4ec037e6ce 100755 --- a/travis/check-executable-files.sh +++ b/travis/check-executable-files.sh @@ -12,10 +12,11 @@ set -e DB=$1 TRAVIS_PHP_VERSION=$2 -root="$3" +NOTESTS=$3 +root="$4" path="${root}phpBB/" -if [ "$TRAVIS_PHP_VERSION" == "5.3" -a "$DB" == "mysqli" ] +if [ "$NOTESTS" == '1' ] then # Check the permissions of the files diff --git a/travis/check-image-icc-profiles.sh b/travis/check-image-icc-profiles.sh index df13c5f4e2..05c7de2d27 100755 --- a/travis/check-image-icc-profiles.sh +++ b/travis/check-image-icc-profiles.sh @@ -12,8 +12,9 @@ set -e DB=$1 TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 -if [ "$TRAVIS_PHP_VERSION" == "5.3" -a "$DB" == "mysqli" ] +if [ "$NOTESTS" == '1' ] then find . -type f -a -iregex '.*\.\(gif\|jpg\|jpeg\|png\)$' -a -not -wholename '*vendor/*' | \ parallel --gnu --keep-order 'phpBB/develop/strip_icc_profiles.sh {}' diff --git a/travis/check-sami-parse-errors.sh b/travis/check-sami-parse-errors.sh index 84976a7666..4cc2cee525 100755 --- a/travis/check-sami-parse-errors.sh +++ b/travis/check-sami-parse-errors.sh @@ -12,8 +12,9 @@ set -e DB=$1 TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 -if [ "$TRAVIS_PHP_VERSION" == "5.3" -a "$DB" == "mysqli" ] +if [ "$NOTESTS" == '1' ] then # Workarounds for # https://github.com/fabpot/Sami/issues/116 diff --git a/travis/ext-sniff.sh b/travis/ext-sniff.sh index 4e557a41c1..61ceda6834 100755 --- a/travis/ext-sniff.sh +++ b/travis/ext-sniff.sh @@ -10,7 +10,7 @@ # set -e set -x - + DB=$1 TRAVIS_PHP_VERSION=$2 EXTNAME=$3 diff --git a/travis/phing-sniff.sh b/travis/phing-sniff.sh index 660d1764c2..3f43b64130 100755 --- a/travis/phing-sniff.sh +++ b/travis/phing-sniff.sh @@ -13,8 +13,9 @@ set -x DB=$1 TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 -if [ "$TRAVIS_PHP_VERSION" == "5.5" -a "$DB" == "mysqli" ] +if [ "$NOTESTS" == '1' ] then cd build ../phpBB/vendor/bin/phing sniff diff --git a/travis/setup-database.sh b/travis/setup-database.sh index 4ba9157d9d..3771f19073 100755 --- a/travis/setup-database.sh +++ b/travis/setup-database.sh @@ -13,6 +13,12 @@ set -x DB=$1 TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 + +if [ "$NOTESTS" == '1' ] +then + exit 0 +fi if [ "$DB" == "postgres" ] then @@ -20,7 +26,7 @@ then psql -c 'create database phpbb_tests;' -U postgres fi -if [ "$TRAVIS_PHP_VERSION" == "5.3" -a "$DB" == "mysqli" ] +if [ "$TRAVIS_PHP_VERSION" == "5.4" -a "$DB" == "mysqli" ] then mysql -e 'SET GLOBAL storage_engine=MyISAM;' fi diff --git a/travis/setup-phpbb.sh b/travis/setup-phpbb.sh index 369c477860..30f79ee0cb 100755 --- a/travis/setup-phpbb.sh +++ b/travis/setup-phpbb.sh @@ -13,8 +13,9 @@ set -x DB=$1 TRAVIS_PHP_VERSION=$2 +NOTESTS=$3 -if [ "$TRAVIS_PHP_VERSION" == "5.3" -a "$DB" == "mysqli" ] +if [ "$NOTESTS" == '1' ] then travis/setup-exiftool.sh travis/setup-unbuffer.sh @@ -25,12 +26,12 @@ then travis/setup-mariadb.sh fi -if [ "$TRAVIS_PHP_VERSION" != "hhvm" ] +if [ "$NOTESTS" != '1' -a "$TRAVIS_PHP_VERSION" != "hhvm" ] then travis/setup-php-extensions.sh fi -if [ `php -r "echo (int) version_compare(PHP_VERSION, '5.3.19', '>=');"` == "1" ] +if [ "$NOTESTS" != '1' ] then travis/setup-webserver.sh travis/install-phpbb-test-dependencies.sh |