Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
90f3fc9
Element extends new Component class instead of old
riasvdv Apr 11, 2026
a118a98
Cleanup Address
riasvdv Apr 12, 2026
e936f35
Clean up element concerns
riasvdv Apr 13, 2026
ea561f9
Move ElementInterface
riasvdv Apr 13, 2026
07cf486
Add deprecated ElementInterface
riasvdv Apr 13, 2026
3b0cf61
Clean up ElementInterface
riasvdv Apr 13, 2026
2340433
phpstan fixes
riasvdv Apr 13, 2026
434ddef
Clean up Asset element
riasvdv Apr 13, 2026
6437a2e
Cleanup Entry
riasvdv Apr 13, 2026
83c73cf
Move NestedElementInterface
riasvdv Apr 13, 2026
c0ef347
Move NestedElementTrait
riasvdv Apr 13, 2026
ca2dc89
Cleanup user element
riasvdv Apr 13, 2026
fee18ca
Replace InvalidConfigException with RuntimeException
riasvdv Apr 13, 2026
f72a352
Small fixes
riasvdv Apr 13, 2026
4652f80
Fix unique querying bug
riasvdv Apr 13, 2026
0c9bb37
Fix queue issue with sync queue
riasvdv Apr 13, 2026
4a9f464
Port ElementSearchController
riasvdv Apr 13, 2026
805e5ff
Port ElementSelectorModalsController
riasvdv Apr 13, 2026
52babcc
Fix Craft js
riasvdv Apr 14, 2026
75b5b23
Port ElementIndexSettingsController as ElementSourcesController
riasvdv Apr 14, 2026
d753d08
Port source parts of ElementIndexController into ElementIndexSourcesC…
riasvdv Apr 15, 2026
f8f428e
Modify existing controllers to use new Request class + remove BaseEle…
riasvdv Apr 15, 2026
ad6ef7b
Merge branch '6.x' into feature/elements
riasvdv Apr 15, 2026
ec996de
Merge branch '6.x' into feature/elements
riasvdv Apr 18, 2026
c7af4a1
SaveElementIndexElementsController
riasvdv Apr 18, 2026
5f65d35
ElementIndexController
riasvdv Apr 20, 2026
b178f63
Move controllers into ElementIndex subfolder
riasvdv Apr 20, 2026
f847f02
Rename to ElementIndexRequest
riasvdv Apr 20, 2026
e02ae05
PreviewElementController
riasvdv Apr 20, 2026
77474b4
ElementRedirectController
riasvdv Apr 20, 2026
f208c4f
ElementRedirectController
riasvdv Apr 20, 2026
eca2e60
Merge branch '6.x' into feature/elements
riasvdv Apr 21, 2026
a6f8f5d
Merge branch '6.x' into feature/elements
riasvdv Apr 21, 2026
3463ab0
Merge branch 'feature/elements' of github.com:craftcms/cms into featu…
riasvdv Apr 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions CHANGELOG-WIP.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
- Deprecated `craft\enums\Color`. `CraftCms\Cms\Support\Enums\Color` should be used instead.
- Deprecated `craft\enums\AttributeStatus`. `CraftCms\Cms\Element\Enums\AttributeStatus` should be used instead.
- Deprecated `craft\enums\CmsEdition`. `CraftCms\Cms\Edition` should be used instead.
- Deprecated `craft\enums\ElementIndexViewMode`. `CraftCms\Cms\Field\Enums\ElementIndexViewMode` should be used instead.
- Deprecated `craft\enums\ElementIndexViewMode`. `CraftCms\Cms\Element\Enums\ElementIndexViewMode` should be used instead.
- Deprecated `craft\enums\LicenseKeyStatus`. `CraftCms\Cms\Support\Enums\LicenseKeyStatus` should be used instead.
- Deprecated `craft\enums\MenuItemType`. `CraftCms\Cms\Element\Enums\MenuItemType` should be used instead.
- Deprecated `craft\enums\PropagationMethod`. `CraftCms\Cms\Element\Enums\PropagationMethod` should be used instead.
Expand Down Expand Up @@ -440,7 +440,7 @@ Craft 6 now uses [Laravel's authorization system](https://laravel.com/docs/12.x/
- Deprecated `craft\services\Elements::trackActivity()`. `CraftCms\Cms\Element\ElementActivity::trackActivity()` should be used instead.
- Added `CraftCms\Cms\Element\Actions\ElementAction`, `CraftCms\Cms\Element\ElementActions`, `CraftCms\Cms\Element\Contracts\DeleteActionInterface`, `CraftCms\Cms\Element\Contracts\ElementActionInterface`, `CraftCms\Cms\Element\Events\AfterPerformAction`, `CraftCms\Cms\Element\Events\BeforePerformAction`, `CraftCms\Cms\Http\Controllers\Elements\PerformElementActionController`, and `CraftCms\Cms\Support\Facades\ElementActions`.
- Added Laravel-native element action classes under `CraftCms\Cms\Element\Actions`, `CraftCms\Cms\Asset\Actions`, `CraftCms\Cms\Entry\Actions`, and `CraftCms\Cms\User\Actions`.
- Added `CraftCms\Cms\Element\ElementExporters`, `CraftCms\Cms\Element\Contracts\ElementExporterInterface`, `CraftCms\Cms\Element\Exporters\ElementExporter`, `CraftCms\Cms\Http\Controllers\Elements\ExportElementIndexController`, and `CraftCms\Cms\Support\Facades\ElementExporters`.
- Added `CraftCms\Cms\Element\ElementExporters`, `CraftCms\Cms\Element\Contracts\ElementExporterInterface`, `CraftCms\Cms\Element\Exporters\ElementExporter`, `CraftCms\Cms\Http\Controllers\Elements\ElementIndex\ExportElementIndexController`, and `CraftCms\Cms\Support\Facades\ElementExporters`.
- Added Laravel-native element exporter classes under `CraftCms\Cms\Element\Exporters`.
- Deprecated `craft\errors\InvalidTypeException`. `CraftCms\Cms\Element\Exceptions\InvalidTypeException` should be used instead.
- Deprecated `craft\errors\UnsupportedSiteException`. `CraftCms\Cms\Element\Exceptions\UnsupportedSiteException` should be used instead.
Expand Down
2 changes: 1 addition & 1 deletion database/Factories/AddressFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace CraftCms\Cms\Database\Factories;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address as AddressElement;
use CraftCms\Cms\Address\Models\Address;
use CraftCms\Cms\Database\Factories\Concerns\CreatesElement;
use CraftCms\Cms\Database\Table;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Models\Element;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\DB;
Expand Down
8 changes: 8 additions & 0 deletions database/Factories/EntryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use CraftCms\Cms\Support\Arr;
use CraftCms\Cms\Support\Facades\EntryTypes;
use CraftCms\Cms\Support\Facades\Fields;
use CraftCms\Cms\Support\Facades\Search;
use Illuminate\Database\Eloquent\Factories\Factory;
use Override;

Expand Down Expand Up @@ -97,6 +98,13 @@ public function withFieldLayout(FieldLayout|FieldLayoutFactory $fieldLayout): st
});
}

public function indexed(): static
{
return $this->afterCreating(function (Entry $entry) {
Search::indexElementAttributes($this->queryElement($entry->id));
});
}

public function createElement(array $attributes = []): EntryElement
{
$factory = $this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
sources: sources,
condition: condition ? condition.getConfig() : null,
referenceElementId: referenceElement.id ?? null,
referenceElementOwnerId: (referenceElement ?? null) is instance of('craft\\base\\NestedElementInterface')
referenceElementOwnerId: (referenceElement ?? null) is instance of('CraftCms\\Cms\\Element\\Contracts\\NestedElementInterface')
? referenceElement.getOwnerId()
: null,
referenceElementSiteId: referenceElement.siteId ?? null,
Expand Down
2 changes: 1 addition & 1 deletion resources/templates/_includes/forms/elementSelect.twig
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
sources: sources,
condition: condition ? condition.getConfig() : null,
referenceElementId: referenceElement.id ?? null,
referenceElementOwnerId: (referenceElement ?? null) is instance of('craft\\base\\NestedElementInterface')
referenceElementOwnerId: (referenceElement ?? null) is instance of('CraftCms\\Cms\\Element\\Contracts\\NestedElementInterface')
? referenceElement.getOwnerId()
: null,
referenceElementSiteId: referenceElement.siteId ?? null,
Expand Down
23 changes: 22 additions & 1 deletion routes/actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,14 @@
use CraftCms\Cms\Http\Controllers\Dashboard\Widgets\NewUsersController;
use CraftCms\Cms\Http\Controllers\Dashboard\WidgetsController;
use CraftCms\Cms\Http\Controllers\EditionController;
use CraftCms\Cms\Http\Controllers\Elements\ExportElementIndexController;
use CraftCms\Cms\Http\Controllers\Elements\ElementIndex\ElementIndexController;
use CraftCms\Cms\Http\Controllers\Elements\ElementIndex\ElementIndexSourcesController;
use CraftCms\Cms\Http\Controllers\Elements\ElementIndex\ExportElementIndexController;
use CraftCms\Cms\Http\Controllers\Elements\ElementIndex\SaveElementIndexElementsController;
use CraftCms\Cms\Http\Controllers\Elements\ElementSelectorModalController;
use CraftCms\Cms\Http\Controllers\Elements\ElementSourcesController;
use CraftCms\Cms\Http\Controllers\Elements\PerformElementActionController;
use CraftCms\Cms\Http\Controllers\Elements\SearchController as ElementSearchController;
use CraftCms\Cms\Http\Controllers\Entries\CreateEntryController;
use CraftCms\Cms\Http\Controllers\Entries\MoveEntryToSectionController;
use CraftCms\Cms\Http\Controllers\Entries\StoreEntryController;
Expand Down Expand Up @@ -235,8 +241,23 @@
});

// Elements
Route::post('element-indexes/source-path', [ElementIndexSourcesController::class, 'sourcePath']);
Route::post('element-indexes/source-attribute-info', [ElementIndexSourcesController::class, 'sourceAttributeInfo']);
Route::post('element-indexes/get-elements', [ElementIndexController::class, 'getElements']);
Route::post('element-indexes/get-more-elements', [ElementIndexController::class, 'getMoreElements']);
Route::post('element-indexes/count-elements', [ElementIndexController::class, 'countElements']);
Route::post('element-indexes/get-source-tree-html', [ElementIndexSourcesController::class, 'getSourceTreeHtml']);
Route::post('element-indexes/filter-hud', [ElementIndexController::class, 'filterHud']);
Route::post('element-indexes/element-table-html', [ElementIndexController::class, 'elementTableHtml']);
Route::post('element-indexes/save-elements', SaveElementIndexElementsController::class);
Route::post('element-indexes/export', ExportElementIndexController::class);
Route::post('element-indexes/perform-action', PerformElementActionController::class);
Route::post('element-search/search', ElementSearchController::class);
Route::post('element-selector-modals/body', ElementSelectorModalController::class);
Route::middleware([RequireAdminChanges::class])->group(function () {
Route::post('element-index-settings/get-customize-sources-modal-data', [ElementSourcesController::class, 'show']);
Route::post('element-index-settings/save-customize-sources-modal-settings', [ElementSourcesController::class, 'store']);
});

// Entries
Route::post('entries/create', CreateEntryController::class);
Expand Down
15 changes: 15 additions & 0 deletions routes/cp.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
use CraftCms\Cms\Http\Controllers\Auth\TwoFactorAuthenticationController;
use CraftCms\Cms\Http\Controllers\Auth\VerifyEmailController;
use CraftCms\Cms\Http\Controllers\Dashboard\DashboardController;
use CraftCms\Cms\Http\Controllers\Elements\ElementRedirectController;
use CraftCms\Cms\Http\Controllers\Elements\PreviewElementController;
use CraftCms\Cms\Http\Controllers\Entries\CreateEntryController;
use CraftCms\Cms\Http\Controllers\Entries\EntriesIndexController;
use CraftCms\Cms\Http\Controllers\FieldsController;
Expand Down Expand Up @@ -79,6 +81,19 @@
Route::view('settings/addresses', 'settings/addresses/_fields');
});

/**
* Elements
*/
Route::get('preview/{id}{slug}', PreviewElementController::class)->where([
'id' => '\d+',
'slug' => '(?:-[^\/]*)',
]);
Route::get('edit/{id}{slug}', ElementRedirectController::class)->where([
'id' => '\d+',
'slug' => '(?:-[^\/]*)',
]);
Route::get('edit/{uid}', ElementRedirectController::class);

/**
* Entries & Content
*/
Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/AddressLine1ConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/AddressLine2ConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/AddressLine3ConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/AdministrativeAreaConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseMultiSelectConditionRule;
use CraftCms\Cms\Cp\FormFields;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;
use CraftCms\Cms\Support\Facades\Addresses;
Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/CountryConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseMultiSelectConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;
use CraftCms\Cms\Support\Facades\Addresses;
Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/DependentLocalityConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/FieldConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseMultiSelectConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Conditions\HintableConditionRuleTrait;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;
use CraftCms\Cms\Field\Addresses;
Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/FullNameConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/LocalityConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/OrganizationConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/OrganizationTaxIdConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/PostalCodeConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
2 changes: 1 addition & 1 deletion src/Address/Conditions/SortingCodeConditionRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CraftCms\Cms\Address\Conditions;

use craft\base\ElementInterface;
use CraftCms\Cms\Address\Elements\Address;
use CraftCms\Cms\Condition\BaseTextConditionRule;
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface;
use CraftCms\Cms\Element\Contracts\ElementInterface;
use CraftCms\Cms\Element\Queries\AddressQuery;
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;

Expand Down
Loading
Loading