Compare commits
8 commits
c495a26f98
...
ed943854ec
Author | SHA1 | Date | |
---|---|---|---|
|
ed943854ec | ||
|
839d2ecbff | ||
|
7a4352fd72 | ||
|
58ae38f5a2 | ||
|
c193140e1d | ||
|
7fcb455ec4 | ||
|
90d35b760f | ||
|
2f623770df |
|
@ -30,7 +30,7 @@ installer:
|
|||
server:
|
||||
cookie_secure: false
|
||||
server_protocol: http://
|
||||
force_server_vars: true
|
||||
force_server_vars: false
|
||||
server_name: localhost
|
||||
server_port: 80
|
||||
script_path: /
|
||||
|
|
|
@ -34,14 +34,6 @@ sudo ln -s /workspaces/phpbb/phpBB /var/www/html
|
|||
echo "[Codespaces] Copy phpBB configuration"
|
||||
cp /workspaces/phpbb/.devcontainer/resources/phpbb-config.yml /workspaces/phpbb/phpBB/install/install-config.yml
|
||||
|
||||
# Force the server URL to reflect the Codespace
|
||||
# https://docs.github.com/en/codespaces/developing-in-a-codespace/default-environment-variables-for-your-codespace
|
||||
if [ "$CODESPACES" = true ] ; then
|
||||
echo "[Codespaces] Set the phpBB server name using default environment variables"
|
||||
codespaces_url="${CODESPACE_NAME}-80.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
|
||||
sed -i "s/localhost/$codespaces_url/g" /workspaces/phpbb/phpBB/install/install-config.yml
|
||||
fi
|
||||
|
||||
# Install phpBB
|
||||
echo "[Codespaces] Run phpBB CLI installation"
|
||||
cd /workspaces/phpbb/phpBB && composer install --no-interaction
|
||||
|
|
1
.github/check-js.sh
vendored
|
@ -15,5 +15,4 @@ sudo npm install -g > /dev/null
|
|||
npm ci > /dev/null
|
||||
set -x
|
||||
node_modules/eslint/bin/eslint.js "phpBB/**/*.js"
|
||||
node_modules/eslint/bin/eslint.js "phpBB/**/*.js.twig"
|
||||
node_modules/eslint/bin/eslint.js "gulpfile.js"
|
||||
|
|
49
.github/workflows/tests.yml
vendored
|
@ -29,7 +29,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 100
|
||||
|
||||
|
@ -48,7 +48,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: composer-${{ matrix.php }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||
|
@ -166,7 +166,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- id: database-type
|
||||
env:
|
||||
|
@ -192,7 +192,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: composer-${{ matrix.php }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||
|
@ -217,13 +217,6 @@ jobs:
|
|||
run: |
|
||||
.github/setup-ldap.sh
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Setup node dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Setup SPHINX
|
||||
run: |
|
||||
.github/setup-sphinx.sh
|
||||
|
@ -303,7 +296,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- id: database-type
|
||||
env:
|
||||
|
@ -329,7 +322,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: composer-${{ matrix.php }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||
|
@ -349,13 +342,6 @@ jobs:
|
|||
run: |
|
||||
.github/setup-database.sh $DB $MYISAM
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Setup node dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run unit tests
|
||||
env:
|
||||
DB: ${{steps.database-type.outputs.db}}
|
||||
|
@ -410,7 +396,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- id: database-type
|
||||
env:
|
||||
|
@ -441,7 +427,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: composer-${{ matrix.php }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||
|
@ -461,13 +447,6 @@ jobs:
|
|||
run: |
|
||||
.github/setup-database.sh $DB $MYISAM
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Setup node dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run unit tests
|
||||
env:
|
||||
DB: ${{steps.database-type.outputs.db}}
|
||||
|
@ -491,7 +470,7 @@ jobs:
|
|||
git config --system core.autocrlf false
|
||||
git config --system core.eol lf
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
@ -509,7 +488,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: composer-${{ matrix.php }}-${{ hashFiles('phpBB/composer.lock') }}
|
||||
|
@ -576,14 +555,6 @@ jobs:
|
|||
psql -c 'create database phpbb_tests;' -U postgres
|
||||
Set-MpPreference -ExclusionPath "${env:PGDATA}" # Exclude PGDATA directory from Windows Defender
|
||||
Set-MpPreference -DisableRealtimeMonitoring $true
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Setup node dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run unit tests
|
||||
if: ${{ matrix.type == 'unit' }}
|
||||
run: |
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
|
||||
<!-- a few settings for the build -->
|
||||
<property name="newversion" value="4.0.0-a1-dev" />
|
||||
<property name="prevversion" value="3.3.12-RC1" />
|
||||
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.8, 3.3.9, 3.3.10, 3.3.11" />
|
||||
<property name="prevversion" value="3.3.10" />
|
||||
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.8, 3.3.9" />
|
||||
<!-- no configuration should be needed beyond this point -->
|
||||
|
||||
<property name="oldversions" value="${olderversions}, ${prevversion}" />
|
||||
|
|
BIN
composer.phar
BIN
doctum.phar
|
@ -34,12 +34,6 @@ then
|
|||
ticket_id=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\3/gm;t;d' <<< "$branch");
|
||||
branch_title=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\1\2\3/gm;t;d' <<< "$branch");
|
||||
|
||||
# Fall back to branch name if no ticket ID
|
||||
if [ -z "$branch_title" ];
|
||||
then
|
||||
branch_title="$branch";
|
||||
fi
|
||||
|
||||
if [ "security/" = "$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\2/gm;t;d' <<< "$branch")" ];
|
||||
then
|
||||
tail="$(printf '\n\nSECURITY-%s' "$ticket_id")";
|
||||
|
|
15
gulpfile.js
|
@ -2,7 +2,8 @@
|
|||
|
||||
const gulp = require('gulp');
|
||||
const rename = require('gulp-rename');
|
||||
const concat = require('gulp-concat');
|
||||
const sourcemaps = require('gulp-sourcemaps');
|
||||
const concat = require('gulp-concat-css');
|
||||
const postcss = require('gulp-postcss');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
const cssnano = require('cssnano');
|
||||
|
@ -18,14 +19,16 @@ const paths = {
|
|||
};
|
||||
|
||||
function styles() {
|
||||
return gulp.src(paths.styles.src, { sourcemaps: true })
|
||||
return gulp.src(paths.styles.src)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(
|
||||
postcss([
|
||||
autoprefixer(),
|
||||
sorting(sortOrder),
|
||||
]),
|
||||
)
|
||||
.pipe(gulp.dest(paths.styles.css, { sourcemaps: './' }));
|
||||
.pipe(sourcemaps.write('./'))
|
||||
.pipe(gulp.dest(paths.styles.css));
|
||||
}
|
||||
|
||||
function minify() {
|
||||
|
@ -44,7 +47,8 @@ function minify() {
|
|||
paths.styles.css + 'colours.css',
|
||||
paths.styles.css + 'responsive.css',
|
||||
paths.styles.css + 'bidi.css',
|
||||
], { sourcemaps: true })
|
||||
])
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(concat('stylesheet.css'))
|
||||
.pipe(
|
||||
postcss([
|
||||
|
@ -55,7 +59,8 @@ function minify() {
|
|||
suffix: '.min',
|
||||
extname: '.css',
|
||||
}))
|
||||
.pipe(gulp.dest(paths.styles.css, { sourcemaps: './' }));
|
||||
.pipe(sourcemaps.write('./'))
|
||||
.pipe(gulp.dest(paths.styles.css));
|
||||
}
|
||||
|
||||
function watch() {
|
||||
|
|
9844
package-lock.json
generated
16
package.json
|
@ -56,7 +56,11 @@
|
|||
"always"
|
||||
],
|
||||
"no-lonely-if": "off",
|
||||
"unicorn/prefer-module": "off"
|
||||
"unicorn/prefer-module": "off",
|
||||
"space-before-function-paren": [
|
||||
"error",
|
||||
"never"
|
||||
]
|
||||
},
|
||||
"env": {
|
||||
"es6": true,
|
||||
|
@ -103,14 +107,14 @@
|
|||
"cssnano": "^5.1.7",
|
||||
"eslint": "^8.13.0",
|
||||
"eslint-config-xo": "^0.40.0",
|
||||
"gulp": "^5.0.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-concat-css": "^3.1.0",
|
||||
"gulp-postcss": "^9.0.1",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"postcss": "^8.4.31",
|
||||
"gulp-sourcemaps": "^3.0.0",
|
||||
"postcss": "^8.4.12",
|
||||
"postcss-sorting": "^7.0.1",
|
||||
"stylelint": "^14.7.0",
|
||||
"stylelint-order": "^5.0.0",
|
||||
"web-push-testing": "^1.1.1"
|
||||
"stylelint-order": "^5.0.0"
|
||||
}
|
||||
}
|
||||
|
|
BIN
phpBB/adm/images/alert_close.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
phpBB/adm/images/arrow_down.gif
Normal file
After Width: | Height: | Size: 51 B |
BIN
phpBB/adm/images/arrow_left.gif
Normal file
After Width: | Height: | Size: 49 B |
BIN
phpBB/adm/images/arrow_right.gif
Normal file
After Width: | Height: | Size: 49 B |
BIN
phpBB/adm/images/arrow_up.gif
Normal file
After Width: | Height: | Size: 51 B |
BIN
phpBB/adm/images/bg_button.gif
Normal file
After Width: | Height: | Size: 182 B |
BIN
phpBB/adm/images/bg_hash1.gif
Normal file
After Width: | Height: | Size: 48 B |
BIN
phpBB/adm/images/bg_hash2.gif
Normal file
After Width: | Height: | Size: 48 B |
BIN
phpBB/adm/images/bg_hash3.gif
Normal file
After Width: | Height: | Size: 48 B |
BIN
phpBB/adm/images/bg_hash4.gif
Normal file
After Width: | Height: | Size: 48 B |
BIN
phpBB/adm/images/bg_header.gif
Normal file
After Width: | Height: | Size: 416 B |
BIN
phpBB/adm/images/bg_header.jpg
Normal file
After Width: | Height: | Size: 385 B |
BIN
phpBB/adm/images/bg_tabs_alt1.gif
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
phpBB/adm/images/bg_tabs_alt2.gif
Normal file
After Width: | Height: | Size: 420 B |
BIN
phpBB/adm/images/cellpic3.gif
Normal file
After Width: | Height: | Size: 826 B |
BIN
phpBB/adm/images/file_conflict.gif
Normal file
After Width: | Height: | Size: 344 B |
BIN
phpBB/adm/images/file_modified.gif
Normal file
After Width: | Height: | Size: 358 B |
BIN
phpBB/adm/images/file_new.gif
Normal file
After Width: | Height: | Size: 229 B |
BIN
phpBB/adm/images/file_new_conflict.gif
Normal file
After Width: | Height: | Size: 357 B |
BIN
phpBB/adm/images/file_not_modified.gif
Normal file
After Width: | Height: | Size: 570 B |
BIN
phpBB/adm/images/file_up_to_date.gif
Normal file
After Width: | Height: | Size: 357 B |
BIN
phpBB/adm/images/gradient2b.gif
Normal file
After Width: | Height: | Size: 192 B |
BIN
phpBB/adm/images/icon_delete.gif
Normal file
After Width: | Height: | Size: 255 B |
BIN
phpBB/adm/images/icon_delete_disabled.gif
Normal file
After Width: | Height: | Size: 249 B |
BIN
phpBB/adm/images/icon_down.gif
Normal file
After Width: | Height: | Size: 239 B |
BIN
phpBB/adm/images/icon_down_disabled.gif
Normal file
After Width: | Height: | Size: 166 B |
BIN
phpBB/adm/images/icon_edit.gif
Normal file
After Width: | Height: | Size: 242 B |
BIN
phpBB/adm/images/icon_edit_disabled.gif
Normal file
After Width: | Height: | Size: 239 B |
BIN
phpBB/adm/images/icon_folder.gif
Normal file
After Width: | Height: | Size: 662 B |
BIN
phpBB/adm/images/icon_folder_link.gif
Normal file
After Width: | Height: | Size: 708 B |
BIN
phpBB/adm/images/icon_folder_lock.gif
Normal file
After Width: | Height: | Size: 681 B |
BIN
phpBB/adm/images/icon_subfolder.gif
Normal file
After Width: | Height: | Size: 725 B |
BIN
phpBB/adm/images/icon_sync.gif
Normal file
After Width: | Height: | Size: 251 B |
BIN
phpBB/adm/images/icon_sync_disabled.gif
Normal file
After Width: | Height: | Size: 246 B |
BIN
phpBB/adm/images/icon_trace.gif
Normal file
After Width: | Height: | Size: 307 B |
BIN
phpBB/adm/images/icon_up.gif
Normal file
After Width: | Height: | Size: 240 B |
BIN
phpBB/adm/images/icon_up_disabled.gif
Normal file
After Width: | Height: | Size: 168 B |
BIN
phpBB/adm/images/innerbox_bg.gif
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
phpBB/adm/images/loading.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
phpBB/adm/images/phpbb_logo.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
|
@ -63,13 +63,12 @@ $template->set_custom_style(
|
|||
],
|
||||
[
|
||||
$phpbb_admin_path . 'style',
|
||||
$phpbb_root_path . 'styles/all/imgs/',
|
||||
$phpbb_root_path . 'styles/all/template/',
|
||||
],
|
||||
);
|
||||
|
||||
$template->assign_var('T_ASSETS_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'assets'));
|
||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'style'));
|
||||
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
|
||||
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
|
||||
|
||||
// Instantiate new module
|
||||
$module = new p_master();
|
||||
|
|
|
@ -17,52 +17,52 @@
|
|||
<div class="avatar-cropper-buttons" id="avatar-cropper-buttons">
|
||||
<div class="button-group">
|
||||
<button class="button" type="button" title="{{ lang('ZOOM_IN') }}" data-cropper-action="zoom,0.1">
|
||||
{{ Icon('font', 'search-plus', '', true) }}
|
||||
<i class="icon fa-search-plus fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('ZOOM_OUT') }}" data-cropper-action="zoom,-0.1">
|
||||
{{ Icon('font', 'search-minus', '', true) }}
|
||||
<i class="icon fa-search-minus fa-fw"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<button class="button" type="button" title="{{ lang('MOVE_LEFT') }}" data-cropper-action="move,-10,0">
|
||||
{{ Icon('font', 'arrow-left', '', true) }}
|
||||
<i class="icon fa-arrow-left fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('MOVE_RIGHT') }}" data-cropper-action="move,10,0">
|
||||
{{ Icon('font', 'arrow-right', '', true) }}
|
||||
<i class="icon fa-arrow-right fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('MOVE_UP') }}" data-cropper-action="move,0,-10">
|
||||
{{ Icon('font', 'arrow-up', '', true) }}
|
||||
<i class="icon fa-arrow-up fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('MOVE_DOWN') }}" data-cropper-action="move,0,10">
|
||||
{{ Icon('font', 'arrow-down', '', true) }}
|
||||
<i class="icon fa-arrow-down fa-fw"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<button class="button" type="button" title="{{ lang('ROTATE_LEFT') }}" data-cropper-action="rotate,-90">
|
||||
{{ Icon('font', 'rotate-left', '', true) }}
|
||||
<i class="icon fa-rotate-left fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('ROTATE_RIGHT') }}" data-cropper-action="rotate,90">
|
||||
{{ Icon('font', 'rotate-right', '', true) }}
|
||||
<i class="icon fa-rotate-right fa-fw"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<button class="button" type="button" title="{{ lang('FLIP_HORIZONTALLY') }}" data-cropper-action="scaleX">
|
||||
{{ Icon('font', 'arrows-left-right', '', true) }}
|
||||
<i class="icon fa-arrows-h fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('FLIP_VERTICALLY') }}" data-cropper-action="scaleY">
|
||||
{{ Icon('font', 'arrows-up-down', '', true) }}
|
||||
<i class="icon fa-arrows-v fa-fw"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<button class="button" type="button" title="{{ lang('RESET') }}" data-cropper-action="reset">
|
||||
{{ Icon('font', 'arrows-rotate', '', true) }}
|
||||
<i class="icon fa-refresh fa-fw"></i>
|
||||
</button>
|
||||
<button class="button" type="button" title="{{ lang('CLEAR') }}" data-cropper-action="clear">
|
||||
{{ Icon('font', 'xmark', '', true) }}
|
||||
<i class="icon fa-times fa-fw"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,11 +11,11 @@
|
|||
<script>
|
||||
// <![CDATA[
|
||||
|
||||
const ban_length = [];
|
||||
ban_length[-1] = '';
|
||||
const ban_reason = [];
|
||||
var ban_length = new Array();
|
||||
ban_length[-1] = '';
|
||||
var ban_reason = new Array();
|
||||
ban_reason[-1] = '';
|
||||
const ban_give_reason = [];
|
||||
var ban_give_reason = new Array();
|
||||
ban_give_reason[-1] = '';
|
||||
|
||||
<!-- BEGIN bans -->
|
||||
|
@ -43,19 +43,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const $unbanSelect = document.getElementById('unban');
|
||||
if ($unbanSelect) {
|
||||
$unbanSelect.addEventListener('change', function () {
|
||||
if (this.selectedIndex > -1) {
|
||||
display_details(this.options[this.selectedIndex].value);
|
||||
} else {
|
||||
display_details(-1);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
|
@ -73,6 +60,11 @@
|
|||
<dd><label for="banlength"><select name="banlength" id="banlength" onchange="if(this.value==-1){document.getElementById('banlengthother').style.display = 'block';}else{document.getElementById('banlengthother').style.display='none';}">{S_BAN_END_OPTIONS}</select></label></dd>
|
||||
<dd id="banlengthother" style="display: none;"><label><input type="text" name="banlengthother" class="inputbox" /><br /><span>{L_YEAR_MONTH_DAY}</span></label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="banexclude">{L_BAN_EXCLUDE}{L_COLON}</label><br /><span>{L_BAN_EXCLUDE_EXPLAIN}</span></dt>
|
||||
<dd><label><input type="radio" name="banexclude" value="1" class="radio" /> {L_YES}</label>
|
||||
<label><input type="radio" name="banexclude" id="banexclude" value="0" checked="checked" class="radio" /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="banreason">{L_BAN_REASON}{L_COLON}</label></dt>
|
||||
<dd><input name="banreason" type="text" class="text medium" maxlength="255" id="banreason" /></dd>
|
||||
|
@ -98,41 +90,44 @@
|
|||
|
||||
<p>{L_UNBAN_EXPLAIN}</p>
|
||||
|
||||
<form id="acp_unban" method="post" action="{{ U_ACTION }}">
|
||||
<form id="acp_unban" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{ lang('UNBAN_TITLE') }}</legend>
|
||||
<legend>{L_UNBAN_TITLE}</legend>
|
||||
|
||||
{% if BANNED_SELECT %}
|
||||
<!-- IF S_BANNED_OPTIONS -->
|
||||
<dl>
|
||||
<dt><label for="unban">{{ lang('BAN_CELL') ~ lang('COLON') }}</label></dt>
|
||||
<dd>
|
||||
{{ FormsSelect(BANNED_SELECT) }}
|
||||
</dd>
|
||||
<dt><label for="unban">{L_BAN_CELL}{L_COLON}</label></dt>
|
||||
<dd><select id="unban" name="unban[]" multiple="multiple" size="10" style="width: 50%" onchange="if (this.selectedIndex > -1) display_details(this.options[this.selectedIndex].value); else display_details(-1);">{BANNED_OPTIONS}</select></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="unbanlength">{{ lang('BAN_LENGTH') ~ lang('COLON') }}</label></dt>
|
||||
<dt><label for="unbanlength">{L_BAN_LENGTH}{L_COLON}</label></dt>
|
||||
<dd><input style="border: 0;" type="text" class="text full" readonly="readonly" name="unbanlength" id="unbanlength" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="unbanreason">{{ lang('BAN_REASON') ~ lang('COLON') }}</label></dt>
|
||||
<dt><label for="unbanreason">{L_BAN_REASON}{L_COLON}</label></dt>
|
||||
<dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbanreason" id="unbanreason" rows="5" cols="80"> </textarea></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="unbangivereason">{{ lang('BAN_GIVE_REASON') ~ lang('COLON') }}</label></dt>
|
||||
<dt><label for="unbangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
|
||||
<dd><textarea style="border: 0;" class="text full" readonly="readonly" name="unbangivereason" id="unbangivereason" rows="5" cols="80"> </textarea></dd>
|
||||
</dl>
|
||||
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="unbansubmit" name="unbansubmit" value="{{ lang('SUBMIT') }}" />
|
||||
<input class="button2" type="reset" id="unbanreset" name="unbanreset" value="{{ lang('RESET') }}" />
|
||||
<input class="button1" type="submit" id="unbansubmit" name="unbansubmit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="unbanreset" name="unbanreset" value="{L_RESET}" />
|
||||
</p>
|
||||
{% else %}
|
||||
<p>{{ lang('NO_BAN_CELL') }}</p>
|
||||
{% endif %}
|
||||
{{ S_FORM_TOKEN }}
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
|
||||
<!-- ELSE -->
|
||||
|
||||
<p>{L_NO_BAN_CELL}</p>
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<td style="text-align: center;">
|
||||
<!-- IF enabled.S_VERSIONCHECK -->
|
||||
<strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong>
|
||||
<!-- IF not enabled.S_UP_TO_DATE -->{{ Icon('font', 'circle-exclamation', '', true, 'fas outdated-ext') }}<!-- ENDIF -->
|
||||
<!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
{enabled.META_VERSION}
|
||||
<!-- ENDIF -->
|
||||
|
@ -78,7 +78,7 @@
|
|||
<td style="text-align: center;">
|
||||
<!-- IF disabled.S_VERSIONCHECK -->
|
||||
<strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong>
|
||||
<!-- IF not disabled.S_UP_TO_DATE -->{{ Icon('font', 'circle-exclamation', '', true, 'fas outdated-ext') }}<!-- ENDIF -->
|
||||
<!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
|
||||
<!-- ELSE -->
|
||||
{disabled.META_VERSION}
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -348,7 +348,7 @@
|
|||
<!-- EVENT acp_forums_rules_settings_append -->
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- EVENT acp_forums_custom_settings -->
|
||||
|
||||
<fieldset class="submit-buttons">
|
||||
|
@ -472,17 +472,7 @@
|
|||
<tbody>
|
||||
<!-- BEGIN forums -->
|
||||
<tr>
|
||||
<td class="folder">
|
||||
<span class="fa-stack fa-2x">
|
||||
{{ Icon('font', 'circle', '', true, 'fas fa-stack-2x') }}
|
||||
{{ Icon('font', {
|
||||
'link' : forums.S_FORUM_LINK,
|
||||
'lock' : forums.S_FORUM_LOCKED,
|
||||
'comments' : forums.S_SUBFORUMS,
|
||||
'comment' : true,
|
||||
}, '', true, 'fas fa-inverse fa-stack-1x') }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="folder">{forums.FOLDER_IMAGE}</td>
|
||||
<td class="forum-desc">
|
||||
<!-- IF forums.FORUM_IMAGE --><div style="float: {S_CONTENT_FLOW_BEGIN}; margin-right: 5px;">{forums.FORUM_IMAGE}</div><!-- ENDIF -->
|
||||
<strong><!-- IF forums.S_FORUM_LINK -->{forums.FORUM_NAME}<!-- ELSE --><a href="{forums.U_FORUM}">{forums.FORUM_NAME}</a><!-- ENDIF --></strong>
|
||||
|
|
|
@ -225,7 +225,6 @@
|
|||
|
||||
<fieldset>
|
||||
<legend>{L_ADD_USERS}</legend>
|
||||
{% EVENT acp_groups_add_user_options_before %}
|
||||
<dl>
|
||||
<dt><label for="leader">{L_USER_GROUP_LEADER}{L_COLON}</label></dt>
|
||||
<dd><label><input name="leader" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||
|
@ -236,13 +235,11 @@
|
|||
<dd><label><input name="default" type="radio" class="radio" value="1" /> {L_YES}</label>
|
||||
<label><input name="default" type="radio" class="radio" id="default" value="0" checked="checked" /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
{% EVENT acp_groups_add_user_usernames_before %}
|
||||
<dl>
|
||||
<dt><label for="usernames">{L_USERNAME}{L_COLON}</label><br /><span>{L_USERNAMES_EXPLAIN}</span></dt>
|
||||
<dd><textarea id="usernames" name="usernames" cols="40" rows="5"></textarea></dd>
|
||||
<dd><!-- EVENT acp_groups_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_groups_find_username_append --></dd>
|
||||
</dl>
|
||||
{% EVENT acp_groups_add_user_options_after %}
|
||||
|
||||
<p class="quick">
|
||||
<input class="button2" type="submit" name="addusers" value="{L_SUBMIT}" />
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
<div class="send-stats-row">
|
||||
<!-- EVENT acp_help_phpbb_stats_before -->
|
||||
<div class="send-stats-tile">
|
||||
<h2>{{ Icon('font', 'chart-column', lang('SEND_STATISTICS')) }}</h2>
|
||||
<h2><i class="icon fa-bar-chart"></i>{L_SEND_STATISTICS}</h2>
|
||||
<p>{L_EXPLAIN_SEND_STATISTICS}</p>
|
||||
<div class="send-stats-row">
|
||||
<div class="send-stats-data-row send-stats-data-only-row">
|
||||
<a id="trigger-configlist" data-ajax="toggle_link" data-overlay="false" data-toggle-text="{L_HIDE_STATISTICS}"><span>{L_SHOW_STATISTICS}</span>{{ Icon('font', 'angle-down', '', true) }}</a>
|
||||
<a id="trigger-configlist" data-ajax="toggle_link" data-overlay="false" data-toggle-text="{L_HIDE_STATISTICS}"><span>{L_SHOW_STATISTICS}</span><i class="icon fa-angle-down"></i></a>
|
||||
</div>
|
||||
<div class="send-stats-data-row">
|
||||
<div class="configlist" id="configlist">
|
||||
|
|
|
@ -14,40 +14,27 @@
|
|||
|
||||
<p>{L_ADMIN_INTRO}</p>
|
||||
|
||||
{% if S_UPDATE_INCOMPLETE %}
|
||||
<!-- IF S_UPDATE_INCOMPLETE -->
|
||||
<div class="errorbox">
|
||||
<p>{{ lang('UPDATE_INCOMPLETE') }} <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
{% elseif S_VERSIONCHECK_FAIL %}
|
||||
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
|
||||
<div class="errorbox notice">
|
||||
<p>{{ lang('VERSIONCHECK_FAIL') }}</p>
|
||||
<p>{{ VERSIONCHECK_FAIL_REASON }}</p>
|
||||
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> · <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||
<p>{L_VERSIONCHECK_FAIL}</p>
|
||||
<p>{VERSIONCHECK_FAIL_REASON}</p>
|
||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
{% elseif not S_VERSION_UP_TO_DATE %}
|
||||
<!-- ELSEIF not S_VERSION_UP_TO_DATE -->
|
||||
<div class="errorbox">
|
||||
<p>{{ lang('VERSION_NOT_UP_TO_DATE_TITLE') }}</p>
|
||||
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> · <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
|
||||
<p>{L_VERSION_NOT_UP_TO_DATE_TITLE}</p>
|
||||
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> · <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
|
||||
</div>
|
||||
{% elseif S_VERSION_UP_TO_DATE && S_VERSIONCHECK_FORCE %}
|
||||
<div class="successbox">
|
||||
<p>{{ lang('VERSION_UP_TO_DATE_ACP') }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if S_VERSION_UPGRADEABLE %}
|
||||
<!-- ENDIF -->
|
||||
<!-- IF S_VERSION_UPGRADEABLE -->
|
||||
<div class="errorbox notice">
|
||||
<p>{{ UPGRADE_INSTRUCTIONS }}</p>
|
||||
<p>{UPGRADE_INSTRUCTIONS}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if S_CAPTCHA_UNSAFE %}
|
||||
<div class="errorbox">
|
||||
<p>{{ lang('CAPTCHA_UNSAFE_WARNING') }}</p>
|
||||
</div>
|
||||
{% elseif S_CAPTCHA_INCOMPLETE %}
|
||||
<div class="errorbox">
|
||||
<p>{{ lang('CAPTCHA_INCOMPLETE_WARNING') }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<!-- ENDIF -->
|
||||
|
||||
<!-- IF S_SEARCH_INDEX_MISSING -->
|
||||
<div class="errorbox">
|
||||
|
|
|
@ -132,16 +132,7 @@
|
|||
<tbody>
|
||||
<!-- BEGIN modules -->
|
||||
<tr>
|
||||
<td style="width: 5%; text-align: center;">
|
||||
<span class="fa-stack fa-2x">
|
||||
{{ Icon('font', 'circle', '', true, 'fas fa-stack-2x') }}
|
||||
{{ Icon('font', {
|
||||
'lock' : not modules.MODULE_ENABLED,
|
||||
'folder-tree' : modules.S_SUB_MODULE,
|
||||
'folder' : true,
|
||||
}, '', true, 'fas fa-inverse fa-stack-1x') }}
|
||||
</span>
|
||||
</td>
|
||||
<td style="width: 5%; text-align: center;">{modules.MODULE_IMAGE}</td>
|
||||
<td><a href="{modules.U_MODULE}">{modules.MODULE_TITLE}</a><!-- IF not modules.MODULE_DISPLAYED --> <span class="small">[{L_HIDDEN_MODULE}]</span><!-- ENDIF --></td>
|
||||
<td style="width: 15%; white-space: nowrap; text-align: center; vertical-align: middle;"> <!-- IF modules.MODULE_ENABLED --><a href="{modules.U_DISABLE}">{L_DISABLE}</a><!-- ELSE --><a href="{modules.U_ENABLE}">{L_ENABLE}</a><!-- ENDIF --> </td>
|
||||
<td class="actions">
|
||||
|
|
|
@ -288,10 +288,6 @@ li {
|
|||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.w-50 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) {
|
||||
#wrap,
|
||||
#page-body,
|
||||
|
@ -334,8 +330,7 @@ li {
|
|||
}
|
||||
|
||||
#content {
|
||||
background: #f3f3f3;
|
||||
background: linear-gradient(to bottom, #dbdee2 0%, #e0e2e5 27%, #ecedee 65%, #f3f3f3 100%);
|
||||
background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
@ -502,8 +497,7 @@ li {
|
|||
/* Main Panel
|
||||
---------------------------------------- */
|
||||
#acp {
|
||||
background: #f3f3f3;
|
||||
background: linear-gradient(to bottom, #dbdee2 0%, #e0e2e5 27%, #ecedee 65%, #f3f3f3 100%);
|
||||
background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top;
|
||||
border: 1px #999999 solid;
|
||||
border-radius: 5px;
|
||||
box-shadow: #ffffff 0 0 0 1px inset;
|
||||
|
@ -519,8 +513,7 @@ li {
|
|||
}
|
||||
|
||||
.panel {
|
||||
background: #f3f3f3;
|
||||
background: linear-gradient(to bottom, #dbdee2 0%, #e0e2e5 27%, #ecedee 65%, #f3f3f3 100%);
|
||||
background: #f3f3f3 url("../images/innerbox_bg.gif") repeat-x top;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
padding: 5px 0;
|
||||
|
@ -607,47 +600,25 @@ li {
|
|||
#menu li#activemenu a span {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: transparent url("../images/arrow_right.gif") 0% 50% no-repeat;
|
||||
color: #1180b7;
|
||||
}
|
||||
|
||||
.rtl #menu li#activemenu a span {
|
||||
background: transparent url("../images/arrow_left.gif") 100% 50% no-repeat;
|
||||
}
|
||||
|
||||
#menu li#activemenu a:hover span,
|
||||
#menu li#activemenu span {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: #ffffff url("../images/arrow_right.gif") 1% 50% no-repeat;
|
||||
color: #bc2a4d;
|
||||
}
|
||||
|
||||
#menu li#activemenu a span:before,
|
||||
#menu li#activemenu a:hover span:before,
|
||||
#menu li#activemenu span:before {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
color: #515f77;
|
||||
margin-right: 3px;
|
||||
margin-left: -10px;
|
||||
content: "\f105";
|
||||
}
|
||||
|
||||
#menu li#activemenu a:hover span:before,
|
||||
#menu li#activemenu span:before {
|
||||
margin-right: 1px;
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.rtl #menu li#activemenu a span:before,
|
||||
.rtl #menu li#activemenu a:hover span:before,
|
||||
.rtl #menu li#activemenu span:before {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
color: #515f77;
|
||||
margin-right: -10px;
|
||||
margin-left: 3px;
|
||||
content: "\f104";
|
||||
}
|
||||
|
||||
.rtl #menu li#activemenu a:hover span:before,
|
||||
.rtl #menu li#activemenu span:before {
|
||||
margin-right: -8px;
|
||||
margin-left: 1px;
|
||||
.rtl #menu li#activemenu a:hover span,
|
||||
.rtl #menu li#activemenu span {
|
||||
background: #ffffff url("../images/arrow_left.gif") 99% 50% no-repeat;
|
||||
}
|
||||
|
||||
#menu li a:active,
|
||||
|
@ -658,30 +629,16 @@ li {
|
|||
|
||||
#menu li span.completed {
|
||||
text-decoration: none;
|
||||
background: url("../images/arrow_down.gif") 1% 50% no-repeat;
|
||||
padding: 3px 3px 3px 12px;
|
||||
}
|
||||
|
||||
#menu li span.completed:before {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
color: #515f77;
|
||||
margin-right: 1px;
|
||||
margin-left: -8px;
|
||||
content: "\f107";
|
||||
}
|
||||
|
||||
.rtl #menu li span.completed {
|
||||
text-decoration: none;
|
||||
background: url("../images/arrow_down.gif") 99% 50% no-repeat;
|
||||
padding: 3px 12px 3px 3px;
|
||||
}
|
||||
|
||||
.rtl #menu li span.completed:before {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
color: #515f77;
|
||||
margin-right: -8px;
|
||||
margin-left: 1px;
|
||||
content: "\f107";
|
||||
}
|
||||
|
||||
#menu .header {
|
||||
font-family: Tahoma, Helvetica, sans-serif;
|
||||
font-size: 0.75em;
|
||||
|
@ -773,8 +730,7 @@ th {
|
|||
font-size: 0.75em;
|
||||
text-align: left;
|
||||
text-transform: uppercase;
|
||||
background: #70aed3;
|
||||
background: linear-gradient(to bottom, #70aed3 0%, #5ba0c9 100%);
|
||||
background: #70aed3 url("../images/gradient2b.gif") bottom left repeat-x;
|
||||
border-top: 1px solid #6dacd2;
|
||||
border-bottom: 1px solid #327aa5;
|
||||
color: #ffffff;
|
||||
|
@ -1059,8 +1015,7 @@ table.fixed-width-table {
|
|||
font-weight: bold;
|
||||
text-align: left;
|
||||
text-transform: uppercase;
|
||||
background: #70aed3;
|
||||
background: linear-gradient(to bottom, #70aed3 0%, #5ba0c9 100%);
|
||||
background: #70aed3 url("../images/gradient2b.gif") bottom left repeat-x;
|
||||
border-top: 1px solid #6dacd2;
|
||||
border-bottom: 1px solid #327aa5;
|
||||
color: #ffffff;
|
||||
|
@ -1760,8 +1715,7 @@ a.button2,
|
|||
input.button2 {
|
||||
font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif;
|
||||
font-size: 0.85em;
|
||||
background: #efefef;
|
||||
background: linear-gradient(to bottom, #ffffff 0%, #d2d2d2 4%, #dfdfdf 26%, #efefef 65%, #efefef 100%);
|
||||
background: #efefef url("../images/bg_button.gif") repeat-x top;
|
||||
color: #000000;
|
||||
width: auto !important;
|
||||
padding: 1px 3px 0;
|
||||
|
@ -1805,8 +1759,7 @@ a.button1:hover,
|
|||
input.button1:hover,
|
||||
a.button2:hover,
|
||||
input.button2:hover {
|
||||
background: #efefef;
|
||||
background: linear-gradient(to bottom, #ffffff 0%, #d2d2d2 4%, #dfdfdf 26%, #efefef 65%, #efefef 100%);
|
||||
background: #efefef url("../images/bg_button.gif") repeat bottom;
|
||||
border: 1px solid #bc2a4d;
|
||||
color: #bc2a4d;
|
||||
}
|
||||
|
@ -1866,18 +1819,24 @@ input.button2:focus {
|
|||
display: none;
|
||||
width: 620px;
|
||||
margin: 0 auto;
|
||||
padding: 25px;
|
||||
padding: 0 25px 20px;
|
||||
}
|
||||
|
||||
.phpbb_alert .alert_close {
|
||||
font-size: 14px;
|
||||
text-decoration: none !important;
|
||||
background: transparent url("../images/alert_close.png") 0 0 no-repeat;
|
||||
display: block;
|
||||
float: right;
|
||||
margin-top: 2px;
|
||||
margin-right: -22px;
|
||||
overflow: hidden;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-top: -7px;
|
||||
margin-right: -31px;
|
||||
}
|
||||
|
||||
.phpbb_alert .alert_close:hover {
|
||||
color: #bc2a4d;
|
||||
background-position: 0 -16px;
|
||||
}
|
||||
|
||||
.phpbb_alert p {
|
||||
|
@ -2388,11 +2347,11 @@ fieldset.permissions .permissions-switch {
|
|||
font-size: 0.85em;
|
||||
line-height: normal;
|
||||
min-width: 570px;
|
||||
margin: 0 0 0 7px;
|
||||
margin: 0 0 -1px 7px;
|
||||
}
|
||||
|
||||
.rtl .permissions-category {
|
||||
margin: 0 7px 0 0;
|
||||
margin: 0 7px -1px 0;
|
||||
}
|
||||
|
||||
.permissions-category ul {
|
||||
|
@ -2413,9 +2372,7 @@ fieldset.permissions .permissions-switch {
|
|||
|
||||
.permissions-category a {
|
||||
text-decoration: none;
|
||||
background: #bcccd8;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px 4px 0 0;
|
||||
background: url("../images/bg_tabs_alt1.gif") no-repeat 0% -35px;
|
||||
position: relative;
|
||||
float: left;
|
||||
margin: 0 1px 0 0;
|
||||
|
@ -2428,6 +2385,7 @@ fieldset.permissions .permissions-switch {
|
|||
|
||||
.permissions-category a span.tabbg {
|
||||
white-space: nowrap;
|
||||
background: url("../images/bg_tabs_alt2.gif") no-repeat 100% -35px;
|
||||
color: #536482;
|
||||
display: block;
|
||||
float: left;
|
||||
|
@ -2438,32 +2396,39 @@ fieldset.permissions .permissions-switch {
|
|||
float: right;
|
||||
}
|
||||
|
||||
/* Commented Backslash Hack hides rule from IE5-Mac \ */
|
||||
.permissions-category a span.tabbg,
|
||||
.rtl .permissions-category a span.tabbg {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.permissions-category a:hover,
|
||||
/* End hack */
|
||||
.permissions-category a:hover span.tabbg {
|
||||
background: #dfedfa;
|
||||
background-position: 100% -70px;
|
||||
color: #dd6900;
|
||||
}
|
||||
|
||||
.permissions-category .activetab a,
|
||||
.permissions-category .activetab a:hover,
|
||||
.permissions-category .activetab a {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
.permissions-category .activetab a span.tabbg {
|
||||
background: #ccdcea;
|
||||
background: linear-gradient(to bottom, #eaf2f9 0%, #ccdcea 100%);
|
||||
background-position: 100% 0;
|
||||
color: #333333;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
|
||||
.permissions-category a:hover {
|
||||
background-position: 0 -70px;
|
||||
}
|
||||
|
||||
.permissions-category .activetab a:hover span.tabbg {
|
||||
background-position: 100% 0;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.permissions-category .activetab a {
|
||||
border-color: #cadceb;
|
||||
box-shadow: 0 1px 1px #f2f9ff inset;
|
||||
}
|
||||
|
||||
.permissions-category .activetab a span.tabbg {
|
||||
padding-bottom: 7px;
|
||||
.permissions-category .activetab a:hover {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
.permissions-category a span.colour {
|
||||
|
@ -2839,16 +2804,8 @@ fieldset.permissions .permissions-switch {
|
|||
user-select: none;
|
||||
}
|
||||
|
||||
.roles-options > .button:hover {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.roles-options > .button:active {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.roles-options > span {
|
||||
background: transparent;
|
||||
background: url("../images/arrow_down.gif") no-repeat 245px 0.7em;
|
||||
border: 1px solid #dedede;
|
||||
border-radius: 3px;
|
||||
display: none;
|
||||
|
@ -2856,16 +2813,8 @@ fieldset.permissions .permissions-switch {
|
|||
padding: 4px;
|
||||
}
|
||||
|
||||
.roles-options > span:after {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
float: right;
|
||||
content: "\f107";
|
||||
}
|
||||
|
||||
.rtl .roles-options > span:after {
|
||||
font-family: "Font Awesome 6 Free";
|
||||
float: left;
|
||||
content: "\f107";
|
||||
.rtl .roles-options > span {
|
||||
background: url("../images/arrow_down.gif") no-repeat 7px 0.7em;
|
||||
}
|
||||
|
||||
.roles-options li {
|
||||
|
@ -3007,6 +2956,11 @@ fieldset.permissions .permissions-switch {
|
|||
padding-right: 0.3em;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.send-stats-data-row {
|
||||
background: #f9f9f9;
|
||||
border: #dedede 1px solid;
|
||||
|
@ -3055,14 +3009,12 @@ fieldset.permissions .permissions-switch {
|
|||
}
|
||||
|
||||
.send-stats-settings input[type="checkbox"] + label:before {
|
||||
font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands";
|
||||
font-family: FontAwesome;
|
||||
font-size: 1.5em;
|
||||
font-weight: 400;
|
||||
content: "\f0c8";
|
||||
content: "\f096";
|
||||
}
|
||||
|
||||
.send-stats-settings input[type="checkbox"]:checked + label:before {
|
||||
font-weight: 900;
|
||||
color: #3c763d;
|
||||
content: "\f14a";
|
||||
}
|
||||
|
@ -3100,28 +3052,6 @@ fieldset.permissions .permissions-switch {
|
|||
overflow-x: scroll;
|
||||
}
|
||||
|
||||
.o-icon {
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
|
||||
.o-icon-font {
|
||||
font-family: "Font Awesome 6 Free", "Font Awesome 6 Brands";
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
vertical-align: baseline;
|
||||
display: inline-block;
|
||||
/* stylelint-disable order/properties-order */
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
/* stylelint-enable order/properties-order */
|
||||
text-rendering: auto; /* optimizelegibility throws things off #1094 */
|
||||
}
|
||||
|
||||
.o-icon + span,
|
||||
span + .o-icon {
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.acp-icon {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
|
|
@ -157,55 +157,6 @@ phpbb.addAjaxCallback('row_delete', function(res) {
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* This callback generates the VAPID keys for the web push notification service.
|
||||
*/
|
||||
phpbb.addAjaxCallback('generate_vapid_keys', () => {
|
||||
|
||||
/**
|
||||
* Generate VAPID keypair with public and private key string
|
||||
*
|
||||
* @returns {Promise<{privateKey: string, publicKey: string}|null>}
|
||||
*/
|
||||
async function generateVAPIDKeys() {
|
||||
try {
|
||||
// Generate a new key pair using the Subtle Crypto API
|
||||
const keyPair = await crypto.subtle.generateKey(
|
||||
{
|
||||
name: 'ECDH',
|
||||
namedCurve: 'P-256',
|
||||
},
|
||||
true,
|
||||
['deriveKey', 'deriveBits']
|
||||
);
|
||||
|
||||
const privateKeyJwk = await crypto.subtle.exportKey('jwk', keyPair.privateKey);
|
||||
const privateKeyString = privateKeyJwk.d;
|
||||
|
||||
const publicKeyBuffer = await crypto.subtle.exportKey('raw', keyPair.publicKey);
|
||||
const publicKeyString = phpbb.base64UrlEncode(phpbb.rawKeyToBase64(publicKeyBuffer));
|
||||
|
||||
return {
|
||||
privateKey: privateKeyString,
|
||||
publicKey: publicKeyString
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error generating keys with SubtleCrypto:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
generateVAPIDKeys().then(keyPair => {
|
||||
if (!keyPair) {
|
||||
return;
|
||||
}
|
||||
const publicKeyInput = document.querySelector('#webpush_vapid_public');
|
||||
const privateKeyInput = document.querySelector('#webpush_vapid_private');
|
||||
publicKeyInput.value = keyPair.publicKey;
|
||||
privateKeyInput.value = keyPair.privateKey;
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Handler for submitting permissions form in chunks
|
||||
* This call will submit permissions forms in chunks of 5 fieldsets.
|
||||
|
|
74
phpBB/adm/style/captcha_gd_acp.html
Normal file
|
@ -0,0 +1,74 @@
|
|||
<!-- INCLUDE overall_header.html -->
|
||||
|
||||
<a id="maincontent"></a>
|
||||
<a href="{U_ACTION}" style="float: {S_CONTENT_FLOW_END};">« {L_BACK}</a>
|
||||
|
||||
<h1>{L_ACP_VC_SETTINGS}</h1>
|
||||
|
||||
<p>{L_ACP_VC_SETTINGS_EXPLAIN}</p>
|
||||
|
||||
|
||||
<form id="acp_captcha" method="post" action="{U_ACTION}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_GENERAL_OPTIONS}</legend>
|
||||
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_foreground_noise">{L_CAPTCHA_GD_FOREGROUND_NOISE}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_FOREGROUND_NOISE_EXPLAIN}</span></dt>
|
||||
<dd><label><input id="captcha_gd_foreground_noise" name="captcha_gd_foreground_noise" value="1" class="radio" type="radio"<!-- IF CAPTCHA_GD_FOREGROUND_NOISE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input name="captcha_gd_foreground_noise" value="0" class="radio" type="radio"<!-- IF not CAPTCHA_GD_FOREGROUND_NOISE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_x_grid">{L_CAPTCHA_GD_X_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_X_GRID_EXPLAIN}</span></dt>
|
||||
<dd><input id="captcha_gd_x_grid" name="captcha_gd_x_grid" value="{CAPTCHA_GD_X_GRID}" type="number" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_y_grid">{L_CAPTCHA_GD_Y_GRID}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_Y_GRID_EXPLAIN}</span></dt>
|
||||
<dd><input id="captcha_gd_y_grid" name="captcha_gd_y_grid" value="{CAPTCHA_GD_Y_GRID}" type="number" /></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_wave">{L_CAPTCHA_GD_WAVE}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_WAVE_EXPLAIN}</span></dt>
|
||||
<dd><label><input id="captcha_gd_wave" name="captcha_gd_wave" value="1" class="radio" type="radio"<!-- IF CAPTCHA_GD_WAVE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input name="captcha_gd_wave" value="0" class="radio" type="radio"<!-- IF not CAPTCHA_GD_WAVE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_3d_noise">{L_CAPTCHA_GD_3D_NOISE}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_3D_NOISE_EXPLAIN}</span></dt>
|
||||
<dd><label><input id="captcha_gd_3d_noise" name="captcha_gd_3d_noise" value="1" class="radio" type="radio"<!-- IF CAPTCHA_GD_3D_NOISE --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
|
||||
<label><input name="captcha_gd_3d_noise" value="0" class="radio" type="radio"<!-- IF not CAPTCHA_GD_3D_NOISE --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt><label for="captcha_gd_fonts">{L_CAPTCHA_GD_FONTS}{L_COLON}</label><br /><span>{L_CAPTCHA_GD_FONTS_EXPLAIN}</span></dt>
|
||||
<dd><label><input id="captcha_gd_fonts" name="captcha_gd_fonts" value="1" class="radio" type="radio"<!-- IF CAPTCHA_GD_FONTS == 1 --> checked="checked"<!-- ENDIF --> /> {L_CAPTCHA_FONT_DEFAULT}</label>
|
||||
<label><input name="captcha_gd_fonts" value="2" class="radio" type="radio"<!-- IF CAPTCHA_GD_FONTS == 2 --> checked="checked"<!-- ENDIF --> /> {L_CAPTCHA_FONT_NEW}</label>
|
||||
<label><input name="captcha_gd_fonts" value="3" class="radio" type="radio"<!-- IF CAPTCHA_GD_FONTS == 3 --> checked="checked"<!-- ENDIF --> /> {L_CAPTCHA_FONT_LOWER}</label>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>{L_PREVIEW}</legend>
|
||||
<!-- IF CAPTCHA_PREVIEW -->
|
||||
<!-- INCLUDE {CAPTCHA_PREVIEW} -->
|
||||
<!-- ENDIF -->
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
|
||||
<p class="submit-buttons">
|
||||
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />
|
||||
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
|
||||
<input class="button2" type="submit" id="preview" name="preview" value="{L_PREVIEW}" />
|
||||
</p>
|
||||
|
||||
<input type="hidden" name="select_captcha" value="{CAPTCHA_NAME}" />
|
||||
<input type="hidden" name="configure" value="1" />
|
||||
|
||||
{S_FORM_TOKEN}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<!-- INCLUDE overall_footer.html -->
|
|
@ -1,3 +1,4 @@
|
|||
<!-- IF S_RECAPTCHA_AVAILABLE -->
|
||||
<dl>
|
||||
<dd>
|
||||
<noscript>
|
||||
|
@ -6,6 +7,9 @@
|
|||
|
||||
{L_RECAPTCHA_INVISIBLE}
|
||||
<script src="{RECAPTCHA_SERVER}.js?hl={LA_RECAPTCHA_LANG}" async defer></script>
|
||||
<div class="g-recaptcha" data-sitekey="{% if RECAPTCHA_PUBKEY %}{{ RECAPTCHA_PUBKEY }}{% else %}6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI{% endif %}" data-size="invisible"></div>
|
||||
<div class="g-recaptcha" data-sitekey="{RECAPTCHA_PUBKEY}" data-size="invisible"></div>
|
||||
</dd>
|
||||
</dl>
|
||||
<!-- ELSE -->
|
||||
{L_RECAPTCHA_NOT_AVAILABLE}
|
||||
<!-- ENDIF -->
|
||||
|
|
|
@ -23,10 +23,9 @@ installLang = {
|
|||
</script>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
|
||||
{$SCRIPTS}
|
||||
|
||||
</body>
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<!-- IF META -->{META}<!-- ENDIF -->
|
||||
<title>{PAGE_TITLE}</title>
|
||||
|
||||
<link href="{T_FONT_AWESOME_LINK}" rel="stylesheet">
|
||||
<link href="{T_TEMPLATE_PATH}/admin.css" rel="stylesheet" type="text/css" media="screen" />
|
||||
</head>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<p>{L_FILES_DELETED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="deleted">
|
||||
<legend>{{ Icon('font', 'circle-xmark', lang('STATUS_DELETED'), true, '', {'style' : 'color:red;'}) }}</legend>
|
||||
<legend><img src="{T_IMAGE_PATH}/icon_delete.gif" alt="{L_STATUS_DELETED}" /></legend>
|
||||
<!-- BEGIN deleted -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF deleted.DIR_PART -->{deleted.DIR_PART}<!-- ENDIF --><strong>{deleted.FILE_PART}</strong></dt>
|
||||
|
@ -20,7 +20,7 @@
|
|||
<p>{L_FILES_CONFLICT_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="conflict">
|
||||
<legend>{{ Icon('font', 'circle-exclamation', lang('STATUS_CONFLICT'), true, '', {'style' : 'color:red;'}) }}</legend>
|
||||
<legend><img src="{T_IMAGE_PATH}/file_conflict.gif" alt="{L_STATUS_CONFLICT}" /></legend>
|
||||
<!-- BEGIN conflict -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF conflict.DIR_PART -->{conflict.DIR_PART}<!-- ENDIF --><strong>{conflict.FILE_PART}</strong></dt>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<p>{L_FILES_MODIFIED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="modified">
|
||||
<legend>{{ Icon('font', 'circle-arrow-left', lang('STATUS_MODIFIED'), true, '', {'style' : 'color:#ffd43b;'}) }}</legend>
|
||||
<legend><img src="{T_IMAGE_PATH}/file_modified.gif" alt="{L_STATUS_MODIFIED}" /></legend>
|
||||
<!-- BEGIN modified -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF modified.DIR_PART -->{modified.DIR_PART}<!-- ENDIF --><strong>{modified.FILE_PART}</strong></dt>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<p>{L_FILES_NEW_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="new_files" style="display: none;">
|
||||
<legend>{{ Icon('font', 'circle-plus', lang('STATUS_NEW'), true, '', {'style' : 'color:#ffd43b;'}) }}</legend>
|
||||
<legend><img src="{T_IMAGE_PATH}/file_new.gif" alt="{L_STATUS_NEW}" /></legend>
|
||||
<!-- BEGIN new -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF new.DIR_PART -->{new.DIR_PART}<!-- ENDIF --><strong>{new.FILE_PART}</strong>
|
||||
|
@ -69,7 +69,7 @@
|
|||
<p>{L_FILES_NOT_MODIFIED_EXPLAIN}</p>
|
||||
|
||||
<fieldset id="not_modified" style="display: none;">
|
||||
<legend>{{ Icon('font', 'lock', lang('STATUS_NOT_MODIFIED'), true, '', {'style' : 'color:#1180b7;'}) }}</legend>
|
||||
<legend><img src="{T_IMAGE_PATH}/file_not_modified.gif" alt="{L_STATUS_NOT_MODIFIED}" /></legend>
|
||||
<!-- BEGIN not_modified -->
|
||||
<dl>
|
||||
<dt style="width: 100%;"><!-- IF not_modified.DIR_PART -->{not_modified.DIR_PART}<!-- ENDIF --><strong>{not_modified.FILE_PART}</strong></dt>
|
||||
|
|
|
@ -30,34 +30,21 @@
|
|||
</div>
|
||||
|
||||
<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">{{ Icon('font', 'circle-xmark', '', true) }}</a>
|
||||
<a href="#" class="alert_close"></a>
|
||||
<h3 class="alert_title"> </h3><p class="alert_text"></p>
|
||||
</div>
|
||||
<div id="phpbb_confirm" class="phpbb_alert">
|
||||
<a href="#" class="alert_close">{{ Icon('font', 'circle-xmark', '', true) }}</a>
|
||||
<a href="#" class="alert_close"></a>
|
||||
<div class="alert_text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
<!-- INCLUDEJS ajax.js -->
|
||||
<!-- INCLUDEJS admin.js -->
|
||||
{% if S_ALLOW_CDN %}
|
||||
<script>
|
||||
(function($){
|
||||
const $fa_cdn = $('head').find('link[rel="stylesheet"]').first(),
|
||||
$span = $('<span class="fa" style="display:none"></span>').appendTo('body');
|
||||
if ($span.css('fontFamily') !== '"Font Awesome 6 Free"') {
|
||||
$fa_cdn.after('<link href="{{ T_ASSETS_PATH ~ '/css/font-awesome.min.css' }}" rel="stylesheet">');
|
||||
$fa_cdn.remove();
|
||||
}
|
||||
$span.remove();
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<!-- EVENT acp_overall_footer_after -->
|
||||
{$SCRIPTS}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<fieldset class="permissions" id="perm{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">
|
||||
<legend id="legend{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<input type="checkbox" style="display: none;" class="permissions-checkbox" name="inherit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" id="checkbox{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" value="1" onclick="toggle_opacity('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" />
|
||||
<input type="checkbox" style="display: none;" class="permissions-checkbox" name="inherit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" id="checkbox{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" value="1" onclick="toggle_opacity('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')" />
|
||||
<!-- ELSE -->
|
||||
<!-- ENDIF -->
|
||||
<!-- IF p_mask.f_mask.PADDING --><span class="padding">{p_mask.f_mask.PADDING}{p_mask.f_mask.PADDING}</span><!-- ENDIF -->{p_mask.f_mask.NAME}
|
||||
|
@ -73,7 +73,7 @@
|
|||
<div class="permissions-category">
|
||||
<ul>
|
||||
<!-- ENDIF -->
|
||||
|
||||
|
||||
<!-- IF p_mask.f_mask.category.S_YES -->
|
||||
<li class="permissions-preset-yes<!-- IF p_mask.S_FIRST_ROW and p_mask.f_mask.S_FIRST_ROW and p_mask.f_mask.category.S_FIRST_ROW --> activetab<!-- ENDIF -->" id="tab{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}{p_mask.f_mask.category.S_ROW_COUNT}">
|
||||
<!-- ELSEIF p_mask.f_mask.category.S_NEVER -->
|
||||
|
@ -116,7 +116,7 @@
|
|||
<tbody>
|
||||
<!-- BEGIN mask -->
|
||||
<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --><tr class="row4"><!-- ELSE --><tr class="row3"><!-- ENDIF -->
|
||||
<th class="permissions-name<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->"><!-- IF p_mask.f_mask.category.mask.U_TRACE --><a href="{p_mask.f_mask.category.mask.U_TRACE}" class="trace" onclick="popup(this.href, 750, 515, '_trace'); return false;" title="{L_TRACE_SETTING}">{{ Icon('font', 'eye', lang('TRACE_SETTING'), true, '', {'style' : 'color:#1180b7;'}) }}</a> <!-- ENDIF -->{p_mask.f_mask.category.mask.PERMISSION}</th>
|
||||
<th class="permissions-name<!-- IF p_mask.f_mask.category.mask.S_ROW_COUNT is even --> row4<!-- ELSE --> row3<!-- ENDIF -->"><!-- IF p_mask.f_mask.category.mask.U_TRACE --><a href="{p_mask.f_mask.category.mask.U_TRACE}" class="trace" onclick="popup(this.href, 750, 515, '_trace'); return false;" title="{L_TRACE_SETTING}"><img src="images/icon_trace.gif" alt="{L_TRACE_SETTING}" /></a> <!-- ENDIF -->{p_mask.f_mask.category.mask.PERMISSION}</th>
|
||||
<!-- IF p_mask.S_VIEW -->
|
||||
<td<!-- IF p_mask.f_mask.category.mask.S_YES --> class="yes"<!-- ENDIF -->> </td>
|
||||
<td<!-- IF p_mask.f_mask.category.mask.S_NEVER --> class="never"<!-- ENDIF -->></td>
|
||||
|
@ -130,7 +130,7 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- IF not p_mask.S_VIEW -->
|
||||
<fieldset class="quick" style="margin-{S_CONTENT_FLOW_END}{L_COLON} 11px;">
|
||||
<p class="small">{L_APPLY_PERMISSIONS_EXPLAIN}</p>
|
||||
|
@ -139,7 +139,7 @@
|
|||
<p class="small"><a href="#" onclick="reset_opacity(0, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_MARK_ALL}</a> • <a href="#" onclick="reset_opacity(1, '{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); return false;">{L_UNMARK_ALL}</a></p>
|
||||
<!-- ENDIF -->
|
||||
</fieldset>
|
||||
|
||||
|
||||
<!-- ENDIF -->
|
||||
|
||||
</div>
|
||||
|
|
|
@ -17,21 +17,8 @@
|
|||
</div>
|
||||
|
||||
<script src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
|
||||
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
|
||||
{% if S_ALLOW_CDN %}
|
||||
<script>
|
||||
(function($){
|
||||
const $fa_cdn = $('head').find('link[rel="stylesheet"]').first(),
|
||||
$span = $('<span class="fa" style="display:none"></span>').appendTo('body');
|
||||
if ($span.css('fontFamily') !== '"Font Awesome 6 Free"') {
|
||||
$fa_cdn.after('<link href="{{ T_ASSETS_PATH ~ '/css/font-awesome.min.css' }}" rel="stylesheet">');
|
||||
$fa_cdn.remove();
|
||||
}
|
||||
$span.remove();
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<!-- EVENT acp_simple_footer_after -->
|
||||
{$SCRIPTS}
|
||||
|
|
11
phpBB/assets/css/font-awesome.min.css
vendored
BIN
phpBB/assets/fonts/FontAwesome.otf
Normal file
BIN
phpBB/assets/fonts/fontawesome-webfont.eot
Normal file
2671
phpBB/assets/fonts/fontawesome-webfont.svg
Normal file
After Width: | Height: | Size: 434 KiB |
BIN
phpBB/assets/fonts/fontawesome-webfont.ttf
Normal file
BIN
phpBB/assets/fonts/fontawesome-webfont.woff
Normal file
BIN
phpBB/assets/fonts/fontawesome-webfont.woff2
Normal file
|
@ -1677,33 +1677,6 @@ phpbb.getFunctionByName = function (functionName) {
|
|||
return context[func];
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert raw key ArrayBuffer to base64 string.
|
||||
*
|
||||
* @param {ArrayBuffer} rawKey Raw key array buffer as exported by SubtleCrypto exportKey()
|
||||
* @returns {string} Base64 encoded raw key string
|
||||
*/
|
||||
phpbb.rawKeyToBase64 = (rawKey) => {
|
||||
const keyBuffer = new Uint8Array(rawKey);
|
||||
let keyText = '';
|
||||
const keyLength = keyBuffer.byteLength;
|
||||
for (let i = 0; i < keyLength; i++) {
|
||||
keyText += String.fromCharCode(keyBuffer[i]);
|
||||
}
|
||||
|
||||
return window.btoa(keyText);
|
||||
};
|
||||
|
||||
/**
|
||||
* Base64URL encode base64 encoded string
|
||||
*
|
||||
* @param {string} base64String Base64 encoded string
|
||||
* @returns {string} Base64URL encoded string
|
||||
*/
|
||||
phpbb.base64UrlEncode = (base64String) => {
|
||||
return base64String.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
||||
};
|
||||
|
||||
/**
|
||||
* Register page dropdowns.
|
||||
*/
|
||||
|
|
2
phpBB/assets/javascript/jquery-3.6.0.min.js
vendored
Normal file
2
phpBB/assets/javascript/jquery-3.7.1.min.js
vendored
|
@ -1,300 +0,0 @@
|
|||
/* global phpbb */
|
||||
|
||||
'use strict';
|
||||
|
||||
function PhpbbWebpush() {
|
||||
/** @type {string} URL to service worker */
|
||||
let serviceWorkerUrl = '';
|
||||
|
||||
/** @type {string} URL to subscribe to push */
|
||||
let subscribeUrl = '';
|
||||
|
||||
/** @type {string} URL to unsubscribe from push */
|
||||
let unsubscribeUrl = '';
|
||||
|
||||
/** @type { {creationTime: number, formToken: string} } Form tokens */
|
||||
this.formTokens = {
|
||||
creationTime: 0,
|
||||
formToken: '',
|
||||
};
|
||||
|
||||
/** @type {{endpoint: string, expiration: string}[]} Subscriptions */
|
||||
let subscriptions;
|
||||
|
||||
/** @type {string} Title of error message */
|
||||
let ajaxErrorTitle = '';
|
||||
|
||||
/** @type {string} VAPID public key */
|
||||
let vapidPublicKey = '';
|
||||
|
||||
/** @type {HTMLElement} Subscribe button */
|
||||
let subscribeButton;
|
||||
|
||||
/** @type {HTMLElement} Unsubscribe button */
|
||||
let unsubscribeButton;
|
||||
|
||||
/**
|
||||
* Init function for phpBB Web Push
|
||||
* @type {array} options
|
||||
*/
|
||||
this.init = function(options) {
|
||||
serviceWorkerUrl = options.serviceWorkerUrl;
|
||||
subscribeUrl = options.subscribeUrl;
|
||||
unsubscribeUrl = options.unsubscribeUrl;
|
||||
this.formTokens = options.formTokens;
|
||||
subscriptions = options.subscriptions;
|
||||
ajaxErrorTitle = options.ajaxErrorTitle;
|
||||
vapidPublicKey = options.vapidPublicKey;
|
||||
|
||||
subscribeButton = document.querySelector('#subscribe_webpush');
|
||||
unsubscribeButton = document.querySelector('#unsubscribe_webpush');
|
||||
|
||||
// Service workers are only supported in secure context
|
||||
if (window.isSecureContext !== true) {
|
||||
subscribeButton.disabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if ('serviceWorker' in navigator && 'PushManager' in window) {
|
||||
navigator.serviceWorker.register(serviceWorkerUrl)
|
||||
.then(() => {
|
||||
subscribeButton.addEventListener('click', subscribeButtonHandler);
|
||||
unsubscribeButton.addEventListener('click', unsubscribeButtonHandler);
|
||||
|
||||
updateButtonState();
|
||||
})
|
||||
.catch(error => {
|
||||
console.info(error);
|
||||
// Service worker could not be registered
|
||||
subscribeButton.disabled = true;
|
||||
});
|
||||
} else {
|
||||
subscribeButton.disabled = true;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Update button state depending on notifications state
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function updateButtonState() {
|
||||
if (Notification.permission === 'granted') {
|
||||
navigator.serviceWorker.getRegistration(serviceWorkerUrl)
|
||||
.then(registration => {
|
||||
if (typeof registration === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
registration.pushManager.getSubscription()
|
||||
.then(subscribed => {
|
||||
if (isValidSubscription(subscribed)) {
|
||||
setSubscriptionState(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether subscription is valid
|
||||
*
|
||||
* @param {PushSubscription} subscription
|
||||
* @returns {boolean}
|
||||
*/
|
||||
const isValidSubscription = subscription => {
|
||||
if (!subscription) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (subscription.expirationTime && subscription.expirationTime <= Date.now()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const curSubscription of subscriptions) {
|
||||
if (subscription.endpoint === curSubscription.endpoint) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Subscription is not in valid subscription list for user
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set subscription state for buttons
|
||||
*
|
||||
* @param {boolean} subscribed True if subscribed, false if not
|
||||
*/
|
||||
function setSubscriptionState(subscribed) {
|
||||
if (subscribed) {
|
||||
subscribeButton.classList.add('hidden');
|
||||
unsubscribeButton.classList.remove('hidden');
|
||||
} else {
|
||||
subscribeButton.classList.remove('hidden');
|
||||
unsubscribeButton.classList.add('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for pushing subscribe button
|
||||
*
|
||||
* @param {Object} event Subscribe button push event
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function subscribeButtonHandler(event) {
|
||||
event.preventDefault();
|
||||
|
||||
subscribeButton.addEventListener('click', subscribeButtonHandler);
|
||||
|
||||
// Prevent the user from clicking the subscribe button multiple times.
|
||||
const result = await Notification.requestPermission();
|
||||
if (result === 'denied') {
|
||||
return;
|
||||
}
|
||||
|
||||
const registration = await navigator.serviceWorker.getRegistration(serviceWorkerUrl);
|
||||
|
||||
// We might already have a subscription that is unknown to this instance of phpBB.
|
||||
// Unsubscribe before trying to subscribe again.
|
||||
if (typeof registration !== 'undefined') {
|
||||
const subscribed = await registration.pushManager.getSubscription();
|
||||
if (subscribed) {
|
||||
await subscribed.unsubscribe();
|
||||
}
|
||||
}
|
||||
|
||||
const newSubscription = await registration.pushManager.subscribe({
|
||||
userVisibleOnly: true,
|
||||
applicationServerKey: urlB64ToUint8Array(vapidPublicKey),
|
||||
});
|
||||
|
||||
const loadingIndicator = phpbb.loadingIndicator();
|
||||
fetch(subscribeUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
},
|
||||
body: getFormData(newSubscription),
|
||||
})
|
||||
.then(response => {
|
||||
loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
return response.json();
|
||||
})
|
||||
.then(handleSubscribe)
|
||||
.catch(error => {
|
||||
loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
phpbb.alert(ajaxErrorTitle, error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for pushing unsubscribe button
|
||||
*
|
||||
* @param {Object} event Unsubscribe button push event
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function unsubscribeButtonHandler(event) {
|
||||
event.preventDefault();
|
||||
|
||||
const registration = await navigator.serviceWorker.getRegistration(serviceWorkerUrl);
|
||||
if (typeof registration === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
const subscription = await registration.pushManager.getSubscription();
|
||||
const loadingIndicator = phpbb.loadingIndicator();
|
||||
fetch(unsubscribeUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
},
|
||||
body: getFormData({ endpoint: subscription.endpoint }),
|
||||
})
|
||||
.then(() => {
|
||||
loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
return subscription.unsubscribe();
|
||||
})
|
||||
.then(unsubscribed => {
|
||||
if (unsubscribed) {
|
||||
setSubscriptionState(false);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
loadingIndicator.fadeOut(phpbb.alertTime);
|
||||
phpbb.alert(ajaxErrorTitle, error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle subscribe response
|
||||
*
|
||||
* @param {Object} response Response from subscription endpoint
|
||||
*/
|
||||
function handleSubscribe(response) {
|
||||
if (response.success) {
|
||||
setSubscriptionState(true);
|
||||
if ('form_tokens' in response) {
|
||||
updateFormTokens(response.form_tokens);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get form data object including form tokens
|
||||
*
|
||||
* @param {Object} data Data to create form data from
|
||||
* @returns {FormData} Form data
|
||||
*/
|
||||
function getFormData(data) {
|
||||
const formData = new FormData();
|
||||
formData.append('form_token', phpbb.webpush.formTokens.formToken);
|
||||
formData.append('creation_time', phpbb.webpush.formTokens.creationTime.toString());
|
||||
formData.append('data', JSON.stringify(data));
|
||||
|
||||
return formData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update form tokens with supplied ones
|
||||
*
|
||||
* @param {Object} formTokens
|
||||
*/
|
||||
function updateFormTokens(formTokens) {
|
||||
phpbb.webpush.formTokens.creationTime = formTokens.creation_time;
|
||||
phpbb.webpush.formTokens.formToken = formTokens.form_token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a base64 string to Uint8Array
|
||||
*
|
||||
* @param base64String
|
||||
* @returns {Uint8Array}
|
||||
*/
|
||||
function urlB64ToUint8Array(base64String) {
|
||||
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
|
||||
const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
|
||||
const rawData = window.atob(base64);
|
||||
const outputArray = new Uint8Array(rawData.length);
|
||||
for (let i = 0; i < rawData.length; ++i) {
|
||||
outputArray[i] = rawData.charCodeAt(i);
|
||||
}
|
||||
|
||||
return outputArray;
|
||||
}
|
||||
}
|
||||
|
||||
function domReady(callBack) {
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', callBack);
|
||||
} else {
|
||||
callBack();
|
||||
}
|
||||
}
|
||||
|
||||
phpbb.webpush = new PhpbbWebpush();
|
||||
|
||||
domReady(() => {
|
||||
/* global phpbbWebpushOptions */
|
||||
phpbb.webpush.init(phpbbWebpushOptions);
|
||||
});
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* Minimum Requirement: PHP 7.2.0
|
||||
* Minimum Requirement: PHP 7.1.3
|
||||
*/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
|
@ -51,10 +51,20 @@ if (!defined('PHPBB_INSTALLED'))
|
|||
$server_port = 443;
|
||||
}
|
||||
|
||||
$script_path = phpbb_get_install_redirect($phpbb_root_path, $phpEx);
|
||||
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
|
||||
if (!$script_name)
|
||||
{
|
||||
$script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF');
|
||||
}
|
||||
|
||||
// $phpbb_root_path accounts for redirects from e.g. /adm
|
||||
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/app.' . $phpEx;
|
||||
// Replace any number of consecutive backslashes and/or slashes with a single slash
|
||||
// (could happen on some proxy setups and/or Windows servers)
|
||||
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
|
||||
|
||||
// Eliminate . and .. from the path
|
||||
require($phpbb_root_path . 'phpbb/filesystem/helper.' . $phpEx);
|
||||
require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx);
|
||||
$script_path = \phpbb\filesystem\helper::clean_path($script_path);
|
||||
|
||||
$url = (($secure) ? 'https://' : 'http://') . $server_name;
|
||||
|
|
|
@ -28,10 +28,9 @@
|
|||
"require": {
|
||||
"php": "^8.1",
|
||||
"ext-json": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-pdo": "*",
|
||||
"ext-zlib": "*",
|
||||
"bantu/ini-get-wrapper": "~1.0",
|
||||
"carlos-mg89/oauth": "^0.8.15",
|
||||
"chita/topological_sort": "^3.0",
|
||||
"composer/composer": "^2.0",
|
||||
"composer/installers": "^1.9",
|
||||
|
@ -39,8 +38,8 @@
|
|||
"doctrine/dbal": "~3.3.6",
|
||||
"google/recaptcha": "~1.1",
|
||||
"guzzlehttp/guzzle": "~6.3",
|
||||
"lusitanian/oauth": "^0.8.1",
|
||||
"marc1706/fast-image-size": "^1.1",
|
||||
"minishlink/web-push": "^8.0",
|
||||
"s9e/text-formatter": "^2.0",
|
||||
"symfony/config": "^6.3",
|
||||
"symfony/console": "^6.3",
|
||||
|
@ -51,7 +50,6 @@
|
|||
"symfony/finder": "^6.3",
|
||||
"symfony/http-foundation": "^6.3",
|
||||
"symfony/http-kernel": "^6.3",
|
||||
"symfony/polyfill-mbstring": "^1.23",
|
||||
"symfony/mime": "^6.3",
|
||||
"symfony/process": "^6.3",
|
||||
"symfony/proxy-manager-bridge": "^6.3",
|
||||
|
@ -70,11 +68,8 @@
|
|||
"symfony/css-selector": "^6.3",
|
||||
"symfony/dom-crawler": "^6.3",
|
||||
"symfony/http-client": "^6.3",
|
||||
"vimeo/psalm": "^5.18.0",
|
||||
"psalm/plugin-symfony": "^v5.1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "Better performance in search"
|
||||
"vimeo/psalm": "^4.14",
|
||||
"psalm/plugin-symfony": "^3.1"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
|
3038
phpBB/composer.lock
generated
|
@ -1,9 +1,7 @@
|
|||
imports:
|
||||
- { resource: services_assets.yml }
|
||||
- { resource: services_attachment.yml }
|
||||
- { resource: services_auth.yml }
|
||||
- { resource: services_avatar.yml }
|
||||
- { resource: services_ban.yml }
|
||||
- { resource: services_captcha.yml }
|
||||
- { resource: services_console.yml }
|
||||
- { resource: services_content.yml }
|
||||
|
@ -126,13 +124,6 @@ services:
|
|||
arguments:
|
||||
- '%core.root_path%'
|
||||
|
||||
form_helper:
|
||||
class: phpbb\form\form_helper
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@request'
|
||||
- '@user'
|
||||
|
||||
group_helper:
|
||||
class: phpbb\group\helper
|
||||
arguments:
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
services:
|
||||
assets.bag:
|
||||
class: phpbb\template\assets_bag
|
||||
shared: false
|
|
@ -1,54 +0,0 @@
|
|||
services:
|
||||
# ----- Ban management -----
|
||||
ban.manager:
|
||||
class: \phpbb\ban\manager
|
||||
arguments:
|
||||
- '@ban.type_collection'
|
||||
- '@cache.driver'
|
||||
- '@dbal.conn'
|
||||
- '@language'
|
||||
- '@log'
|
||||
- '@user'
|
||||
- '%tables.bans%'
|
||||
- '%tables.users%'
|
||||
|
||||
# ----- Ban types -----
|
||||
ban.type_collection:
|
||||
class: \phpbb\di\service_collection
|
||||
arguments:
|
||||
- '@service_container'
|
||||
tags:
|
||||
- { name: service_collection, tag: ban.type }
|
||||
|
||||
ban.type.email:
|
||||
class: \phpbb\ban\type\email
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '%tables.bans%'
|
||||
- '%tables.users%'
|
||||
- '%tables.sessions%'
|
||||
- '%tables.sessions_keys%'
|
||||
tags:
|
||||
- { name: ban.type }
|
||||
|
||||
ban.type.ip:
|
||||
class: \phpbb\ban\type\ip
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '%tables.bans%'
|
||||
- '%tables.users%'
|
||||
- '%tables.sessions%'
|
||||
- '%tables.sessions_keys%'
|
||||
tags:
|
||||
- { name: ban.type }
|
||||
|
||||
ban.type.user:
|
||||
class: \phpbb\ban\type\user
|
||||
arguments:
|
||||
- '@dbal.conn'
|
||||
- '%tables.bans%'
|
||||
- '%tables.users%'
|
||||
- '%tables.sessions%'
|
||||
- '%tables.sessions_keys%'
|
||||
tags:
|
||||
- { name: ban.type }
|
|
@ -14,16 +14,27 @@ services:
|
|||
tags:
|
||||
- { name: service_collection, tag: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.incomplete:
|
||||
class: phpbb\captcha\plugins\incomplete
|
||||
core.captcha.plugins.gd:
|
||||
class: phpbb\captcha\plugins\gd
|
||||
shared: false
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@template'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
calls:
|
||||
- [ set_name, [ core.captcha.plugins.incomplete ] ]
|
||||
- [set_name, [core.captcha.plugins.gd]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.gd_wave:
|
||||
class: phpbb\captcha\plugins\gd_wave
|
||||
shared: false
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.gd_wave]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
core.captcha.plugins.nogd:
|
||||
class: phpbb\captcha\plugins\nogd
|
||||
shared: false
|
||||
calls:
|
||||
- [set_name, [core.captcha.plugins.nogd]]
|
||||
tags:
|
||||
- { name: captcha.plugins }
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ services:
|
|||
- '@user'
|
||||
- '@cache.driver'
|
||||
- '@dbal.conn'
|
||||
- '@dbal.tools'
|
||||
- '@auth'
|
||||
- '@log'
|
||||
- '@config'
|
||||
|
|
|
@ -65,13 +65,6 @@ services:
|
|||
- '@controller.helper'
|
||||
- '@event_dispatcher'
|
||||
|
||||
posting.lock:
|
||||
class: phpbb\lock\posting
|
||||
shared: false
|
||||
arguments:
|
||||
- '@cache.driver'
|
||||
- '@config'
|
||||
|
||||
viewonline_helper:
|
||||
class: phpbb\viewonline_helper
|
||||
arguments:
|
||||
|
|
|
@ -9,7 +9,6 @@ services:
|
|||
arguments:
|
||||
- '@template'
|
||||
- '@language'
|
||||
- '@user'
|
||||
- '%debug.exceptions%'
|
||||
tags:
|
||||
- { name: kernel.event_subscriber }
|
||||
|
|
|
@ -243,19 +243,3 @@ services:
|
|||
- '%core.php_ext%'
|
||||
tags:
|
||||
- { name: notification.method }
|
||||
|
||||
notification.method.webpush:
|
||||
class: phpbb\notification\method\webpush
|
||||
shared: false
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@dbal.conn'
|
||||
- '@log'
|
||||
- '@user_loader'
|
||||
- '@user'
|
||||
- '%core.root_path%'
|
||||
- '%core.php_ext%'
|
||||
- '%tables.notification_push%'
|
||||
- '%tables.push_subscriptions%'
|
||||
tags:
|
||||
- { name: notification.method }
|
||||
|
|