⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
712406d
Complete modernization: 7-class architecture, PHPStan Level 9, perfor…
skerbis Oct 19, 2025
1629913
Add .gitattributes for clean release ZIPs
skerbis Oct 19, 2025
7460af7
Add German README (README_de.md)
skerbis Oct 19, 2025
f7ce844
Make CKE5 oEmbed integration opt-in instead of automatic
skerbis Oct 19, 2025
d0085a4
Remove misleading consent management reference from CKE5 docs
skerbis Oct 19, 2025
6771c7c
Fix Copilot AI review comments
skerbis Oct 19, 2025
4e8c850
Add namespacing to JS functions and CSS classes
skerbis Oct 19, 2025
d7182ef
Switch to minified assets and remove unused files
skerbis Oct 19, 2025
82c0822
Move source files to assets/src/
skerbis Oct 19, 2025
67d7d37
Separate frontend and backend assets
skerbis Oct 19, 2025
ec2ec5f
Fix build-assets workflow for new minified asset names
skerbis Oct 19, 2025
2d80611
Improve build-assets workflow and ESLint config
skerbis Oct 19, 2025
b13f3ac
Add manual workflow dispatch for asset building
skerbis Oct 19, 2025
087b72f
Update BackendIntegration.php
skerbis Oct 19, 2025
c464f5c
Add class_exists check for FFmpeg VideoInfo class
skerbis Oct 20, 2025
61a3071
fixed assets
skerbis Oct 20, 2025
2ff3a61
merge js css
skerbis Oct 20, 2025
0908a34
Update build-assets.yml
skerbis Oct 20, 2025
492b090
js fix
skerbis Oct 20, 2025
5a66a22
debug
skerbis Oct 20, 2025
96939fb
debug
skerbis Oct 20, 2025
ce5d87b
icons
skerbis Oct 20, 2025
c7a3dc5
Use working vidstack assets with icons (765KB)
skerbis Oct 20, 2025
6dab283
Temporarily disable auto-build action until icon bundling is fixed
skerbis Oct 20, 2025
055d2d8
asserts fix
skerbis Oct 20, 2025
44dbf81
Remove build action - using pre-built assets
skerbis Oct 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,20 @@
build/ export-ignore
# Export ignore for release ZIP
# Development and build files
/build export-ignore
/tests export-ignore
/.github export-ignore
/.tools export-ignore

# Configuration files
/.gitattributes export-ignore
/.gitignore export-ignore
/.php-cs-fixer.dist.php export-ignore
/.php-cs-fixer.cache export-ignore
/composer.json export-ignore
/composer.lock export-ignore
/phpstan.neon export-ignore
/psalm.xml export-ignore

# Documentation (optional - entfernen falls README im Release sein soll)
# /README.md export-ignore
# /CHANGELOG.md export-ignore
53 changes: 53 additions & 0 deletions .github/workflows/code-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: PHP-CS-Fixer

# Erstelle eine `composer.json` im Repo mit folgendem Inhalt
# {
# "require-dev": {
# "friendsofphp/php-cs-fixer": "^3.0"
# },
# "scripts": {
# "cs-fix": "php-cs-fixer fix"
# }
# }

on:
push:
branches: [ master, main ]
pull_request:
branches: [ master, main ]

permissions:
contents: read

jobs:
code-style:
if: github.event.pull_request.draft == false

runs-on: ubuntu-latest
permissions:
contents: write # for Git to git apply

steps:
- uses: actions/checkout@v3

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: gd, intl, pdo_mysql
coverage: none # disable xdebug, pcov

# install dependencies from composer.json
- name: Install test dependencies
env:
COMPOSER: composer.json
run: composer install --prefer-dist --no-progress

# run php-cs-fixer
- name: Run PHP CS Fixer
run: composer cs-fix

# commit and push fixed files
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
1 change: 1 addition & 0 deletions .php-cs-fixer.cache
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"php":"8.4.11","version":"3.87.1:v3.87.1#2f5170365e2a422d0c5421f9c8818b2c078105f6","indent":" ","lineEnding":"\n","rules":{"array_indentation":true,"array_syntax":true,"cast_spaces":true,"concat_space":{"spacing":"one"},"function_declaration":true,"method_argument_space":{"on_multiline":"ignore"},"new_with_parentheses":{"anonymous_class":false},"single_line_empty_body":true,"single_space_around_construct":true,"trailing_comma_in_multiline":{"after_heredoc":true,"elements":["arguments","arrays","match","parameters"]},"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_definition":{"single_line":true},"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"no_blank_lines_after_class_opening":true,"no_extra_blank_lines":{"tokens":["attribute","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","square_brace_block","switch","throw","use"]},"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait","case","constant_public","constant_protected","constant_private","property","construct","phpunit","method"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"return_type_declaration":true,"short_scalar_cast":true,"single_import_per_statement":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"unary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"no_unreachable_default_argument_value":true,"align_multiline_comment":true,"backtick_to_shell_exec":true,"class_attributes_separation":{"elements":{"method":"one"}},"class_reference_name_casing":true,"clean_namespace":true,"declare_parentheses":true,"echo_tag_syntax":{"format":"short"},"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":{"import_symbols":true},"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_constants":true,"import_functions":true,"import_classes":true},"include":true,"increment_style":true,"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_binary_string":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_mixed":true,"remove_inheritdoc":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","others","return","switch_case","yield","yield_from"]},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":{"after_heredoc":true},"normalize_index_brace":true,"nullable_type_declaration_for_default_null_value":true,"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_annotation_correct_order":true,"phpdoc_var_without_name":true,"simple_to_complex_string_variable":true,"single_line_comment_spacing":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"switch_continue_to_break":true,"trim_array_spaces":true,"type_declaration_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"nullable_type_declaration":true,"ordered_types":{"null_adjustment":"always_last","sort_algorithm":"none"},"types_spaces":true,"array_push":true,"combine_nested_dirname":true,"dir_constant":true,"ereg_to_preg":true,"error_suppression":true,"fopen_flag_order":true,"fopen_flags":{"b_mode":false},"function_to_constant":true,"get_class_to_class_keyword":true,"implode_call":true,"is_null":true,"logical_operators":true,"long_to_shorthand_operator":true,"modernize_strpos":true,"modernize_types_casting":true,"native_constant_invocation":{"scope":"namespaced","strict":false},"native_function_invocation":{"include":["@compiler_optimized"],"scope":"namespaced","strict":true},"no_alias_functions":{"sets":["@all"]},"no_homoglyph_names":true,"no_php4_constructor":true,"no_unneeded_final_method":true,"no_useless_sprintf":true,"non_printable_character":true,"ordered_traits":true,"php_unit_construct":true,"php_unit_mock_short_will_return":true,"php_unit_set_up_tear_down_visibility":true,"php_unit_test_annotation":true,"self_accessor":true,"set_type_to_cast":true,"string_length_to_empty":true,"string_line_ending":true,"ternary_to_elvis_operator":true,"pow_to_exponentiation":true,"octal_notation":true,"assign_null_coalescing_to_coalesce_equal":true,"heredoc_indentation":true,"list_syntax":true,"ternary_to_null_coalescing":true,"random_api_migration":{"replacements":{"mt_rand":"random_int","rand":"random_int"}},"php_unit_data_provider_static":{"force":true},"php_unit_assert_new_names":true,"php_unit_expectation":{"target":"8.4"},"php_unit_namespaced":{"target":"6.0"},"php_unit_dedicate_assert":{"target":"5.6"},"php_unit_mock":{"target":"5.5"},"php_unit_no_expectation_annotation":{"target":"4.3"},"php_unit_dedicate_assert_internal_type":{"target":"7.5"},"comment_to_phpdoc":true,"heredoc_to_nowdoc":true,"multiline_comment_opening_closing":true,"multiline_promoted_properties":{"keep_blank_lines":true},"no_superfluous_elseif":true,"no_useless_else":true,"no_useless_return":true,"php_unit_internal_class":true,"php_unit_test_case_static_method_calls":{"call_type":"self"},"phpdoc_array_type":true,"static_lambda":true,"string_implicit_backslashes":{"single_quoted":"ignore"},"PhpCsFixerCustomFixers\/phpdoc_single_line_var":true,"Redaxo\/no_semicolon_before_closing_tag":true,"Redaxo\/statement_indentation":true},"hashes":{"lang\/translations.php":"f629043bfd30ac33b48651256579fcf7","lib\/Translator.php":"d7f446ca0c8dfdfaaf6c3ed908b8a41e","lib\/OembedParser.php":"1bb7945b9f2dee0d3f9b3faab5582b68","lib\/AssetHelper.php":"454be1ce6a10da74ec04e31ab7ac7635","lib\/VidstackPlayer.php":"a1198133d9bb64d873f2e9b5434536da","lib\/Utilities.php":"d91ddf047e85ba2b5aa230ef1ae45201","lib\/PlatformDetector.php":"01e93a5eb448abf67cf725441e366fb4","lib\/BackendIntegration.php":"7522a270b2fa92c0cbd104e02a2c92cb","boot.php":"e8090f9b7dc05adf2fc3eddfcdf504ae"}}
12 changes: 12 additions & 0 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

declare(strict_types=1);

$finder = (new PhpCsFixer\Finder())
->in(__DIR__)
->exclude('vendor')
;

return (new Redaxo\PhpCsFixerConfig\Config())
->setFinder($finder)
;
13 changes: 13 additions & 0 deletions .tools/bootstrap.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

unset($REX);
$REX['REDAXO'] = true;
$REX['HTDOCS_PATH'] = '../../../../';
$REX['BACKEND_FOLDER'] = 'redaxo';
$REX['LOAD_PAGE'] = false;

require __DIR__.'../../../../core/boot.php';
require __DIR__.'../../../../core/packages.php';

// use original error handlers of the tools
rex_error_handler::unregister();
Loading