|
21 | 21 | - Table views are no longer available for element indexes on mobile.
|
22 | 22 | - Address conditions now have “Address Line 1”, “Address Line 2”, “Administrative Area”, “Country”, “Dependent Locality”, “First Name”, “Full Name”, “Last Name”, “Locality”, “Organization Tax ID”, “Organization”, “Postal Code”, and “Sorting Code” rules.
|
23 | 23 | - Added live conditional field support to user edit pages. ([#14115](https://github.com/craftcms/cms/pull/14115))
|
| 24 | +- Earth icons are now localized based on the system time zone. |
24 | 25 |
|
25 | 26 | ### User Management
|
26 | 27 | - Added two-step verification support, with built-in “Authenticator App” (TOTP) and “Recovery Codes” methods. Additional methods can be provided by plugins.
|
|
42 | 43 | - Relational fields now use the proper list semantics.
|
43 | 44 | - Improved the accessibility of the login page, login modal, and elevated session modal.
|
44 | 45 | - Improved the accessibility of element indexes. ([#14120](https://github.com/craftcms/cms/pull/14120))
|
| 46 | +- Selected elements within relational fields now include “Move up/down” or “Move forward/backward” in their action menus. |
45 | 47 |
|
46 | 48 | ### Administration
|
| 49 | +- Added the “Icon” entry type setting. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 50 | +- Added the “Icon” field type. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
47 | 51 | - Field layouts can now designate an Assets field as the source for elements’ thumbnails. ([#12484](https://github.com/craftcms/cms/discussions/12484), [#12706](https://github.com/craftcms/cms/discussions/12706))
|
48 | 52 | - Field layouts can now choose to include previewable fields’ content in element cards. ([#12484](https://github.com/craftcms/cms/discussions/12484), [#6024](https://github.com/craftcms/cms/pull/6024))
|
49 | 53 | - Field layouts can now override custom fields’ handles.
|
|
92 | 96 | - All core element query param methods now return `static` instead of `self`. ([#11868](https://github.com/craftcms/cms/pull/11868))
|
93 | 97 | - Migrations that modify the project config no longer need to worry about whether the same changes were already applied to the incoming project config YAML files.
|
94 | 98 | - Selectize menus no longer apply special styling to options with the value `new`. The `_includes/forms/selectize.twig` control panel template should be used instead (or `craft\helpers\Cp::selectizeHtml()`/`selectizeFieldHtml()`), which will append an styled “Add” option when `addOptionFn` and `addOptionLabel` settings are passed. ([#11946](https://github.com/craftcms/cms/issues/11946))
|
95 |
| -- Added the `disclosureMenu()`, `elementCard()`, `elementChip()`, `elementIndex()`, and `siteMenuItems()` global functions for control panel templates. |
| 99 | +- Added the `chip()`, `disclosureMenu()`, `elementCard()`, `elementChip()`, `elementIndex()`, `iconSvg()`, and `siteMenuItems()` global functions for control panel templates. |
96 | 100 | - The `assets/move-asset` and `assets/move-folder` actions no longer include `success` keys in responses. ([#12159](https://github.com/craftcms/cms/pull/12159))
|
97 | 101 | - The `assets/upload` controller action now includes `errors` object in failure responses. ([#12159](https://github.com/craftcms/cms/pull/12159))
|
98 | 102 | - Element action triggers’ `validateSelection()` and `activate()` methods are now passed an `elementIndex` argument, with a reference to the trigger’s corresponding element index.
|
|
102 | 106 | - Added `craft\auth\methods\RecoveryCodes`.
|
103 | 107 | - Added `craft\auth\methods\TOTP`.
|
104 | 108 | - Added `craft\auth\passkeys\CredentialRepository`.
|
| 109 | +- Added `craft\base\Actionable`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
105 | 110 | - Added `craft\base\ApplicationTrait::getAuth()`.
|
| 111 | +- Added `craft\base\Chippable`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
106 | 112 | - Added `craft\base\Element::EVENT_DEFINE_ACTION_MENU_ITEMS`.
|
107 | 113 | - Added `craft\base\Element::EVENT_DEFINE_INLINE_ATTRIBUTE_INPUT_HTML`.
|
108 | 114 | - Added `craft\base\Element::crumbs()`.
|
|
133 | 139 | - Added `craft\base\FieldLayoutElement::isMultiInstance()`.
|
134 | 140 | - Added `craft\base\FieldLayoutProviderInterface::getHandle()`.
|
135 | 141 | - Added `craft\base\FieldTrait::$layoutElement`.
|
| 142 | +- Added `craft\base\Iconic`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 143 | +- Added `craft\base\Identifiable`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
136 | 144 | - Added `craft\base\InlineEditableFieldInterface`.
|
137 | 145 | - Added `craft\base\NestedElementInterface`, which should be implemented by element types which could be nested by other elements.
|
138 | 146 | - Added `craft\base\NestedElementTrait`.
|
| 147 | +- Added `craft\base\Statusable`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
139 | 148 | - Added `craft\base\ThumbableFieldInterface`.
|
| 149 | +- Added `craft\base\Thumbable`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
140 | 150 | - Added `craft\base\conditions\ConditionInterface::createConditionRule()`.
|
141 | 151 | - Added `craft\behaviors\EventBehavior`.
|
142 | 152 | - Added `craft\controllers\EntryTypesController`.
|
|
223 | 233 | - Added `craft\helpers\App::isWindows()`.
|
224 | 234 | - Added `craft\helpers\App::silence()`.
|
225 | 235 | - Added `craft\helpers\ArrayHelper::lastValue()`.
|
| 236 | +- Added `craft\helpers\Cp::CHIP_SIZE_LARGE`. |
| 237 | +- Added `craft\helpers\Cp::CHIP_SIZE_SMALL`. |
226 | 238 | - Added `craft\helpers\Cp::checkboxGroupFieldHtml()`.
|
227 | 239 | - Added `craft\helpers\Cp::checkboxGroupHtml()`.
|
| 240 | +- Added `craft\helpers\Cp::chipHtml()`. |
| 241 | +- Added `craft\helpers\Cp::customSelectFieldHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 242 | +- Added `craft\helpers\Cp::customSelectHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
228 | 243 | - Added `craft\helpers\Cp::disclosureMenu()`.
|
| 244 | +- Added `craft\helpers\Cp::earthIcon()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
229 | 245 | - Added `craft\helpers\Cp::elementCardHtml()`.
|
230 | 246 | - Added `craft\helpers\Cp::elementChipHtml()`.
|
231 | 247 | - Added `craft\helpers\Cp::elementIndexHtml()`.
|
| 248 | +- Added `craft\helpers\Cp::entryTypeSelectFieldHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 249 | +- Added `craft\helpers\Cp::entryTypeSelectHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 250 | +- Added `craft\helpers\Cp::fallbackIconSvg()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 251 | +- Added `craft\helpers\Cp::iconPickerFieldHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 252 | +- Added `craft\helpers\Cp::iconPickerHtml()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 253 | +- Added `craft\helpers\Cp::iconSvg()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 254 | +- Added `craft\helpers\Cp::menuItem()`. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
232 | 255 | - Added `craft\helpers\Cp::moneyFieldHtml()`.
|
233 | 256 | - Added `craft\helpers\Cp::moneyInputHtml()`.
|
234 | 257 | - Added `craft\helpers\Cp::normalizeMenuItems()`.
|
|
312 | 335 | - Renamed `craft\base\ElementInterface::getTableAttributeHtml()` to `getAttributeHtml()`.
|
313 | 336 | - Renamed `craft\base\FieldInterface::valueType()` to `phpType()`.
|
314 | 337 | - Renamed `craft\base\PreviewableFieldInterface::getTableAttributeHtml()` to `getPreviewHtml()`.
|
| 338 | +- Renamed `craft\base\UtilityInterface::iconPath()` to `icon()`, which can now return a system icon name. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
315 | 339 | - Renamed `craft\base\conditions\BaseCondition::EVENT_REGISTER_CONDITION_RULE_TYPES` to `EVENT_REGISTER_CONDITION_RULES`.
|
316 | 340 | - Renamed `craft\base\conditions\BaseCondition::conditionRuleTypes()` to `selectableConditionRules()`.
|
317 | 341 | - Renamed `craft\events\BatchElementActionEvent` to `MultiElementActionEvent`.
|
|
344 | 368 | - `craft\base\ElementInterface::setRevisionNotes()` no longer needs to specify a default value for the `notes` argument.
|
345 | 369 | - `craft\base\Field::inputHtml()` now has an `$inline` argument.
|
346 | 370 | - `craft\base\FieldInterface::getIsTranslatable()`, `getTranslationDescription()`, `getInputHtml()`, `normalizeValue()`, `normalizeValueFromRequest()`, and `serializeValue()` no longer need to specify a default value for the `$element` argument.
|
| 371 | +- `craft\base\WidgetInterface::icon()` can now return a system icon name. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
347 | 372 | - `craft\db\Connection::getSupportsMb4()` is now dynamic for MySQL installs, based on whether the `elements_sites` table has an `mb4` charset.
|
348 | 373 | - `craft\elemens\db\ElementQueryInterface::collect()` now has an `ElementCollection` return type, rather than `Collection`.
|
349 | 374 | - `craft\elements\Entry::getSection()` can now return `null`, for nested entries.
|
|
352 | 377 | - `craft\events\AuthenticateUserEvent::$password` can now be null, if the user is being authenticated with a passkey.
|
353 | 378 | - `craft\fields\BaseOptionsField::$multi` and `$optgroups` properties are now static.
|
354 | 379 | - `craft\fields\Matrix::$propagationMethod` now has a type of `craft\enums\PropagationMethod`.
|
| 380 | +- `craft\fields\fieldlayoutelements\BaseUiElement::selectorIcon()` can now return a system icon name. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
355 | 381 | - `craft\gql\mutations\Entry::createSaveMutations()` now accepts a `$section` argument.
|
356 | 382 | - `craft\helpers\Cp::fieldHtml()` now supports a `labelExtra` config value.
|
357 | 383 | - `craft\helpers\Db::parseParam()`, `parseDateParam()`, `parseMoneyParam()`, and `parseNumericParam()` now return `null` instead of an empty string if no condition should be applied.
|
358 | 384 | - `craft\helpers\Html::id()` and `Craft.formatInputId()` now retain colons and periods, and ensure the string begins with a letter.
|
359 | 385 | - `craft\helpers\Html::normalizeTagAttributes()` now supports a `removeClass` key.
|
| 386 | +- `craft\helpers\Html::svg()` now has a `$throwException` argument. |
360 | 387 | - `craft\helpers\Html::tag()` and `beginTag()` now ensure that the passed-in attributes are normalized.
|
361 | 388 | - `craft\helpers\StringHelper::toString()` now supports backed enums.
|
362 | 389 | - `craft\i18n\I18N::getPrimarySiteLocale()` is now deprecated. `craft\models\Site::getLocale()` should be used instead.
|
|
377 | 404 | - `craft\services\Users::unshunMessageForUser()` now has a `void` return type, and throws an `InvalidElementException` in case of failure.
|
378 | 405 | - `craft\services\Users::unsuspendUser()` now has a `void` return type, and throws an `InvalidElementException` in case of failure.
|
379 | 406 | - `craft\services\Users::verifyEmailForUser()` now has a `void` return type, and throws an `InvalidElementException` in case of failure.
|
380 |
| -- Deprecated the `_elements/element.twig` control panel template. `elementChip()` or `elementCard()` should be used instead. |
381 |
| -- Deprecated the `cp.elements.element` control panel template hook. |
| 407 | +- `craft\web\Controller::asModelSuccess()` now includes a `modelClass` key in the response data (and `modelId` if the model implements `craft\base\Identifiable`). |
382 | 408 | - Deprecated `craft\events\DefineElementInnerHtmlEvent`.
|
383 | 409 | - Deprecated `craft\events\SearchEvent::$siteId`.
|
| 410 | +- Deprecated `craft\helpers\Component::iconSvg()`. `craft\helpers\Cp::iconSvg()` and `fallbackIconSvg()` should be used instead. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
| 411 | +- Deprecated `craft\helpers\Cp::ELEMENT_SIZE_LARGE`. `CHIP_SIZE_LARGE` should be used instead. |
| 412 | +- Deprecated `craft\helpers\Cp::ELEMENT_SIZE_SMALL`. `CHIP_SIZE_SMALL` should be used instead. |
384 | 413 | - Deprecated `craft\helpers\Cp::elementHtml()`. `elementChipHtml()` or `elementCardHtml()` should be used instead.
|
| 414 | +- Deprecated the `_elements/element.twig` control panel template. `elementChip()` or `elementCard()` should be used instead. |
| 415 | +- Deprecated the `cp.elements.element` control panel template hook. |
385 | 416 | - Removed the `_includes/revisionmenu.twig` control panel template.
|
386 | 417 | - Removed `craft\base\ApplicationTrait::getMatrix()`.
|
387 | 418 | - Removed `craft\base\Element::$contentId`.
|
|
492 | 523 | - Removed `craft\web\CpScreenResponseBehavior::contextMenuHtml()`. `contextMenuItems()` should be used instead.
|
493 | 524 | - Removed `craft\web\CpScreenResponseBehavior::contextMenuTemplate()`. `contextMenuItems()` should be used instead.
|
494 | 525 | - Removed `craft\web\User::startElevatedSession()`. `login()` should be used instead.
|
| 526 | +- Removed `craft\web\twig\variables\Cp::getEntryTypeOptions()`. |
495 | 527 | - Added `Craft.BaseElementSelectInput::defineElementActions()`.
|
496 | 528 | - Added `Craft.CP::setSiteCrumbMenuItemStatus()`.
|
497 | 529 | - Added `Craft.CP::showSiteCrumbMenuItem()`.
|
|
520 | 552 | - Slugs are no longer required for elements that don’t have a URI format that contains `slug`.
|
521 | 553 | - Fixed a bug where multi-site element queries weren’t scoring elements on a per-site basis. ([#13801](https://github.com/craftcms/cms/discussions/13801))
|
522 | 554 | - Fixed an error that could occur if eager-loading aliases conflicted with native eager-loading handles, such as `author`. ([#14057](https://github.com/craftcms/cms/issues/14057))
|
| 555 | +- Added an SVG icon set based on Font Awesome 6.5.1. ([#14169](https://github.com/craftcms/cms/pull/14169)) |
523 | 556 | - Updated Monolog to v3.
|
524 | 557 | - Updated Axios to 1.6.5.
|
525 | 558 | - Updated D3 to 7.8.5.
|
|
0 commit comments