Skip to content

Commit 27ccbb5

Browse files
authored
Merge branch '3.x' into fix-nested-repeaters
2 parents a76cf23 + cc26b32 commit 27ccbb5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1529
-688
lines changed

.github/workflows/main.yml

+16-27
Original file line numberDiff line numberDiff line change
@@ -65,25 +65,17 @@ jobs:
6565
fail-fast: false
6666
matrix:
6767
os: [ubuntu-latest]
68-
php: [8.3, 8.2, 8.1, 8.0]
69-
laravel: [9.*, 10.*, 11.*]
68+
php: [8.3, 8.2, 8.1]
69+
laravel: [10.*, 11.*]
7070
dbal: [3.*, 4.*]
7171
exclude:
72-
- laravel: 9.*
73-
dbal: 4.*
7472
- laravel: 10.*
7573
dbal: 4.*
76-
- laravel: 10.*
77-
php: 8.0
78-
- laravel: 11.*
79-
php: 8.0
8074
- laravel: 11.*
8175
php: 8.1
8276
- laravel: 11.*
8377
dbal: 3.*
8478
include:
85-
- laravel: 9.*
86-
testbench: 7.*
8779
- laravel: 10.*
8880
testbench: 8.*
8981
- laravel: 11.*
@@ -128,15 +120,6 @@ jobs:
128120
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" "doctrine/dbal:${{ matrix.dbal }}" --no-interaction --no-update
129121
composer install --prefer-dist --no-interaction --no-plugins
130122
131-
- name: Patch TestCase files for PHP < 8.1
132-
run: |
133-
if php -r 'exit(version_compare(PHP_VERSION, "8.1.0", "<") ? 0 : 1);'; then
134-
for file in tests/integration/TestCase.php tests/Browser/BrowserTestCase.php; do
135-
sed -i 's/protected function onNotSuccessfulTest(Throwable \$t): never/protected function onNotSuccessfulTest(Throwable \$t): void/' "$file";
136-
echo "Patched $file for PHP < 8.1";
137-
done
138-
fi
139-
140123
- name: Setup Node.js
141124
uses: actions/setup-node@v1
142125
with:
@@ -164,11 +147,6 @@ jobs:
164147
- name: Prepare Testbench Dusk
165148
run: ./vendor/bin/testbench-dusk package:discover
166149

167-
- name: Set PHPUnit config for Laravel 9
168-
if: matrix.laravel == '9.*'
169-
run: |
170-
cp phpunit-legacy.xml phpunit.xml
171-
172150
- name: Execute all tests
173151
run: vendor/bin/phpunit --stop-on-error
174152
env:
@@ -178,10 +156,21 @@ jobs:
178156
with:
179157
files: .github/clover.xml
180158

181-
- uses: actions/upload-artifact@v2
182-
if: always()
159+
- name: Replace asterisks in Laravel
160+
run: echo "REPLACED_LARAVEL=${MATRIX_LARAVEL//\*/_}" >> $GITHUB_ENV
161+
env:
162+
MATRIX_LARAVEL: ${{ matrix.laravel }}
163+
164+
- name: Replace asterisks in DBAL
165+
id: replace_dbal
166+
run: echo "REPLACED_DBAL=${MATRIX_DBAL//\*/_}" >> $GITHUB_ENV
167+
env:
168+
MATRIX_DBAL: ${{ matrix.dbal }}
169+
170+
- name: Upload artifact
171+
uses: actions/upload-artifact@v4
183172
with:
184-
name: screenshots
173+
name: screenshots-${{ matrix.os }}-${{ matrix.php }}-${{ env.REPLACED_LARAVEL }}-${{ env.REPLACED_DBAL }}
185174
path: |
186175
tests/Browser/screenshots/
187176
tests/Browser/console/

UPGRADE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ If you are relying on Quill.js specifics (like css classes), use `'type' => 'qui
5252
Previously `withVideo` was true by default, if you relied on this you have to update these media fields to
5353
`'withVideo' => true`.
5454

55-
#### SVG's are now no longer passing thorough glide
55+
#### SVG's are now no longer passing through glide
5656

5757
These are now rendered directly, you can change this by updating config `twill.glide.original_media_for_extensions` to an empty array `[]`
5858

config/twill.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
/*
2727
|--------------------------------------------------------------------------
28-
| Application strict url handeling
28+
| Application strict url handling
2929
|--------------------------------------------------------------------------
3030
|
3131
| Setting this value to true will enable strict domain handling.

docs/content/1_docs/2_getting-started/3_configuration.md

-25
Original file line numberDiff line numberDiff line change
@@ -79,31 +79,6 @@ return [
7979
];
8080
```
8181

82-
Twill registers its own exception handler in all controllers. If you need to customize it (to report errors on a 3rd party service like Sentry or Rollbar for example), you can opt-out from it in your `config/twill.php` file:
83-
84-
```php
85-
<?php
86-
87-
return [
88-
'bind_exception_handler' => false,
89-
];
90-
```
91-
92-
And then extend it from your own `app/Exceptions/Handler.php` class:
93-
94-
```php
95-
<?php
96-
97-
namespace App\Exceptions;
98-
99-
use A17\Twill\Exceptions\Handler as ExceptionHandler;
100-
use Exception;
101-
use Illuminate\Auth\AuthenticationException;
102-
103-
class Handler extends ExceptionHandler
104-
...
105-
```
106-
10782
If you would like to provide custom tables names, use the following configuration options:
10883

10984
```php

docs/content/1_docs/3_modules/5_controllers.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ Below is a list of the methods and their purpose:
6363
- **setModuleName**('`yourModuleName`'): Set the name of the module you are working with.
6464
- **setFeatureField**('`fieldname`'): Set the field to use for featuring content.
6565
- **setSearchColumns**(`['title', 'year']`): Set the columns to search in.
66+
- **setSearchQuery**(`
67+
fn (Builder $q, string $search) => $q->orWhereHas('profile', fn (Builder $q) => $q->where('first_name', 'like', "$search%")->orWhere('last_name', 'like', "$search%"))`): For finer controller over the search
6668
- **setPermalinkBase**('`example`'): The static permalink base to your module. Defaults to `setModuleName` when empty.
6769
- **setTitleColumnKey**('`title`'): Sets the field to use as title, defaults to `title`.
6870
- **setModelName**('`Project`'): Usually not required, but in case customization is needed you can use this method to set
@@ -240,4 +242,3 @@ protected function formData($request)
240242
return [];
241243
}
242244
```
243-

docs/content/1_docs/6_relations/03_one-to-many.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ One to Many is one of the simpler relations to set up so let's get started:
1414

1515
As with any relation we need to set up a database. In this example we are using our portfolio example where we will have multiple links on a project.
1616

17-
We will set up 2 models, one is a Project model, you can do this using `php artisan twill:module Project`
17+
We will set up 2 models, one is a Project model, you can do this using `php artisan twill:make:module Project`
1818

19-
And afterwards a Link model: `php artisan twill:module Link`, As the Link model is used for our hasMany, we do not have to add it to the routes or navigation files, so you can ignore that suggestion.
19+
And afterwards a Link model: `php artisan twill:make:module Link`, As the Link model is used for our hasMany, we do not have to add it to the routes or navigation files, so you can ignore that suggestion.
2020

2121
In the **Link** migration we add a column to hold the `project_id` that we are creating it from.
2222

docs/content/2_guides/1_page-builder-with-blade/6_creating-a-block.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ return [
159159
```
160160

161161
Now with this in place, you can go back to the block editor and add your first image block! But just as before, we have
162-
to update the content of the preview file (`resources/views/site/blocks/text.blade.php`) so that we actually display
162+
to update the content of the preview file (`resources/views/site/blocks/image.blade.php`) so that we actually display
163163
the image!
164164

165165
```blade

docs/content/2_guides/4_creating_custom_components_form_fields_and_blocks.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ npm install vue-numeric --save
430430
in-store="value"
431431
></a17-custom-number>
432432
433-
@unless($renderForBlocks || $renderForModal || (!isset($item->$name) && null == $formFieldsValue = getFormFieldsValue($form_fields, $name)))
433+
@unless($renderForBlocks || $renderForModal || (!isset($item->$name) && is_null($formFieldsValue = getFormFieldsValue($form_fields, $name))))
434434
@push('vuexStore')
435435
window['{{ config('twill.js_namespace') }}'].STORE.form.fields.push({
436436
name: '{{ $name }}',

frontend/js/components/Previewer.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
name: 'preview-tablet-v'
9393
},
9494
{
95-
size: 320,
95+
size: 390,
9696
name: 'preview-mobile'
9797
}
9898
]

frontend/scss/vendor/_vselect.scss

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ $multiSelectHeight: 45px;
2525
}
2626

2727
.vs__dropdown-menu {
28+
// make sure the content expand to the longest option
29+
--vs-dropdown-min-width: fit-content;
2830
padding:15px 0;
2931
border-top:1px solid $color__border--light;
3032
box-shadow: 0px 1px 3.5px 0px rgba(0, 0, 0, 0.30);
@@ -167,6 +169,7 @@ $multiSelectHeight: 45px;
167169
padding:0 0 0 15px;
168170
margin:0;
169171
color:$color__f--text;
172+
170173
button {
171174
position: absolute;
172175
background-color: $color__black--35;
@@ -408,6 +411,7 @@ $multiSelectHeight: 45px;
408411
.vs__deselect {
409412
top:2px;
410413
right:2px;
414+
transform: none;
411415
background-color:transparent;
412416
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDEwIDEwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNhNmE2YTYiIGQ9Ik0yIDJsNiA2TTggMkwyIDgiLz48L3N2Zz4=);
413417
color:$color__fborder--hover;

lang/de/lang.php

+11
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
'reset-password' => 'Passwort zurücksetzen',
2727
'reset-send' => 'Link zum Zurücksetzen des Passworts senden',
2828
'verify-login' => 'Anmeldung bestätigen',
29+
'auth-causer' => 'Authentifikation',
2930
],
3031
'buckets' => [
3132
'intro' => 'Was würden Sie heute gerne vorstellen?',
@@ -56,6 +57,9 @@
5657
'unfeatured' => 'Hervorhebung aufgehoben',
5758
'restored' => 'Wiederhergestellt',
5859
'deleted' => 'Gelöscht',
60+
'login' => 'Anmeldung',
61+
'logout' => 'Abmeldung',
62+
'duplicated' => 'Dupliziert',
5963
],
6064
'activity-row' => [
6165
'edit' => 'Bearbeiten',
@@ -145,6 +149,7 @@
145149
],
146150
],
147151
'editor' => 'Editor',
152+
'options' => 'Optionen',
148153
],
149154
'lang-manager' => [
150155
'published' => 'Veröffentlicht',
@@ -196,6 +201,7 @@
196201
'mine' => 'Meine',
197202
'published' => 'Veröffentlicht',
198203
'trash' => 'Papierkorb',
204+
'not-set' => 'Ohne Wert',
199205
],
200206
'filters' => [
201207
'all-label' => 'Alle :label',
@@ -407,6 +413,11 @@
407413
'scheduled' => 'Geplant',
408414
'expired' => 'Abgelaufen',
409415
'unsaved-changes' => 'Es gibt nicht gespeicherte Änderungen',
416+
'draft-revision' => 'Als Entwurfs-Revision abspeichern',
417+
'draft-revision-close' => 'Als Entwurfs-Revision abspeichern und schließen',
418+
'draft-revision-new' => 'Als Entwurfs-Revision abspeichern und weiteren erstellen',
419+
'draft-revisions-available' => 'Sie betrachten die aktuell veröffentlichte Version des Inhalts. Es gibt neuere Entwurfs-Revisionen.',
420+
'editing-draft-revision' => 'Sie bearbeiten aktuell eine Entwurfs-Revision dieses Inhalts. Speichern Sie die Änderungen oder Veröffentlichen Sie diese.',
410421
],
411422
'select' => [
412423
'empty-text' => 'Leider keine passenden Optionen gefunden',

lang/en/lang.php

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
'deleted' => 'Deleted',
6060
'login' => 'Login action',
6161
'logout' => 'Logout action',
62+
'duplicated' => 'Duplicated',
6263
],
6364
'activity-row' => [
6465
'edit' => 'Edit',

0 commit comments

Comments
 (0)