|
4 | 4 |
|
5 | 5 | - Fixed a bug where icons within secondary buttons were illegible when active.
|
6 | 6 |
|
| 7 | +## 4.5.0-beta.1 - 2023-08-10 |
| 8 | + |
| 9 | +### Content Management |
| 10 | +- Entry and category edit pages now show other authors who are currently editing the same element. ([#13420](https://github.com/craftcms/cms/pull/13420)) |
| 11 | +- Entry and category edit pages now display a notification when the element has been saved by another author. ([#13420](https://github.com/craftcms/cms/pull/13420)) |
| 12 | +- Entry and category edit pages now display a validation error summary at the top of the page, including a mention of errors from other sites. ([#11569](https://github.com/craftcms/cms/issues/11569), [#12125](https://github.com/craftcms/cms/pull/12125)) |
| 13 | +- Table fields can now have a “Row heading” column. ([#13231](https://github.com/craftcms/cms/pull/13231)) |
| 14 | +- Table fields now have a “Static Rows” setting. ([#13231](https://github.com/craftcms/cms/pull/13231)) |
| 15 | +- Table fields no longer show a heading row, if all heading values are blank. ([#13231](https://github.com/craftcms/cms/pull/13231)) |
| 16 | +- Element slideouts now show their sidebar content full-screen for elements without a field layout, rather than having an empty body. ([#13056](https://github.com/craftcms/cms/pull/13056), [#13053](https://github.com/craftcms/cms/issues/13053)) |
| 17 | +- Relational fields no longer track the previously-selected element(s) when something outside the field is clicked on. ([#13123](https://github.com/craftcms/cms/issues/13123)) |
| 18 | +- Element indexes now use field layouts’ overridden field labels, if all field layouts associated with an element source use the same label. ([#8903](https://github.com/craftcms/cms/discussions/8903)) |
| 19 | +- Element indexes now track souces’ filters in the URL, so they can be sharable and persisted when navigating back to the index page via the browser history. ([#13499](https://github.com/craftcms/cms/pull/13499)) |
| 20 | +- Users’ default thumbnails are now the user initials over a unique color gradient. ([#13511](https://github.com/craftcms/cms/pull/13511)) |
| 21 | +- Improved the styling and max height of Selectize inputs. ([#13065](https://github.com/craftcms/cms/discussions/13065), [#13176](https://github.com/craftcms/cms/pull/13176)) |
| 22 | +- Selectize inputs now support click-and-drag selection. ([#13273](https://github.com/craftcms/cms/discussions/13273)) |
| 23 | +- Selectize single-select inputs now automatically select the current value on focus. ([#13273](https://github.com/craftcms/cms/discussions/13273)) |
| 24 | +- It’s now possible to create new entries from entry select modals when a custom source is selected, if the source is configured to only show entries from one section. ([#11499](https://github.com/craftcms/cms/discussions/11499)) |
| 25 | +- The Entries index page now shows a primary “New entry” button when a custom source is selected, if the source is configured to only show entries from one section. ([#13390](https://github.com/craftcms/cms/discussions/13390)) |
| 26 | +- Invalid Dropdown fields now automatically select their default option and get marked as changed (if they have a default option). ([#13540](https://github.com/craftcms/cms/pull/13540)) |
| 27 | + |
| 28 | +### Accessibility |
| 29 | +- Image assets’ thumbnails and `<img>` tags generated via `craft\element\Asset::getImg()` no longer use the assets’ titles as `alt` fallback values. ([#12854](https://github.com/craftcms/cms/pull/12854)) |
| 30 | +- Element index pages now have visually-hidden “Sources” headings for screen readers. ([#12961](https://github.com/craftcms/cms/pull/12961)) |
| 31 | +- Element metadata fields now have visually-hidden “Metadata” headings for screen readers. ([#12961](https://github.com/craftcms/cms/pull/12961)) |
| 32 | +- Structure elements within element indexes now convey their levels to screen readers. ([#13020](https://github.com/craftcms/cms/pull/13020)) |
| 33 | +- Non-image asset thumbnails in the control panel now have `alt` attributes set to the file extension. ([#12724](https://github.com/craftcms/cms/pull/12724)) |
| 34 | +- Improved copy-text buttons for screen readers. ([#13073](https://github.com/craftcms/cms/pull/13073)) |
| 35 | +- Improved the contrast of asset file type icons. ([#13262](https://github.com/craftcms/cms/pull/13262)) |
| 36 | + |
| 37 | +### Administration |
| 38 | +- Added the “Slug Translation Method” setting to entry types. ([#8962](https://github.com/craftcms/cms/discussions/8962), [#13291](https://github.com/craftcms/cms/pull/13291)) |
| 39 | +- Added the “Show the Status field” setting to entry types. ([#12837](https://github.com/craftcms/cms/discussions/12837), [#13265](https://github.com/craftcms/cms/pull/13265)) |
| 40 | +- Added the `setup/message-tables` command, which can be run to set the project up for database-stored static translations via [DbMessageSource](https://www.yiiframework.com/doc/api/2.0/yii-i18n-dbmessagesource). ([#13542](https://github.com/craftcms/cms/pull/13542)) |
| 41 | +- Entry types created via the `entrify/global-set` command now have “Show the Status field” disabled by default. ([#12837](https://github.com/craftcms/cms/discussions/12837)) |
| 42 | +- Added the `defaultCountryCode` config setting. ([#13478](https://github.com/craftcms/cms/discussions/13478)) |
| 43 | +- Custom element sources can now be configured to only appear for certain sites. ([#13344](https://github.com/craftcms/cms/discussions/13344)) |
| 44 | +- The “My Account” page no longer shows a “Require a password reset on next login” checkbox. |
| 45 | +- The Asset Indexes utility no longer shows the “Cache remote images” option on ephemeral environments. ([#13202](https://github.com/craftcms/cms/issues/13202)) |
| 46 | +- It’s now possible to configure UK addresses to show a “County” field. ([#13361](https://github.com/craftcms/cms/pull/13361)) |
| 47 | +- The “Login Page Logo” and “Site Icon” general settings’ image previews now have checkered backgrounds. ([#13210](https://github.com/craftcms/cms/discussions/13210), [#13229](https://github.com/craftcms/cms/pull/13229)) |
| 48 | +- Empty field layout tabs are no longer pruned out. ([#13132](https://github.com/craftcms/cms/issues/13132)) |
| 49 | + |
| 50 | +### Development |
| 51 | +- Added a new `_globals` global Twig variable for front-end templates, which can be used to store custom values in a global scope. ([#13050](https://github.com/craftcms/cms/pull/13050), [#12951](https://github.com/craftcms/cms/discussions/12951)) |
| 52 | +- The `|replace` Twig filter now supports passing in a hash with regular expression keys. ([#12956](https://github.com/craftcms/cms/issues/12956)) |
| 53 | +- `{% exit %}` tags now support passing a message after the status code. ([#13166](https://github.com/craftcms/cms/discussions/13166)) |
| 54 | +- Built-in element types’ GraphQL queries now support passing `null` to `relatedToAssets`, `relatedToEntries`, `relatedToUsers`, `relatedToCategories`, `relatedToTags`, and `relatedToAll` arguments. ([#7954](https://github.com/craftcms/cms/issues/7954)) |
| 55 | +- Elements now include custom field values when being iterated over, and when being merged. ([#13009](https://github.com/craftcms/cms/issues/13009)) |
| 56 | +- Dropdown and Radio Buttons fields now have a “Column Type” setting, which will be set to `varchar` for existing fields, and defaults to “Automatic” for new fields. ([#13025](https://github.com/craftcms/cms/pull/13025), [#12954](https://github.com/craftcms/cms/issues/12954)) |
| 57 | +- Successful `users/login` JSON responses now include information about the logged-in user. ([#13374](https://github.com/craftcms/cms/discussions/13374)) |
| 58 | + |
| 59 | +### Extensibility |
| 60 | +- Filesystem types can now register custom file uploaders. ([#13313](https://github.com/craftcms/cms/pull/13313)) |
| 61 | +- When applying a draft, the canonical elements’ `getDirtyAttributes()` and `getDirtyFields()` methods now return the attribute names and field handles that were modified on the draft for save events. ([#12967](https://github.com/craftcms/cms/issues/12967)) |
| 62 | +- Admin tables can be configured to pass custom query params to the data endpoint. ([#13416](https://github.com/craftcms/cms/pull/13416)) |
| 63 | +- Admin tables can now be programatically reloaded. ([#13416](https://github.com/craftcms/cms/pull/13416)) |
| 64 | +- Native element sources can now define a `defaultFilter` key, which defines the default filter condition that should be applied when the source is selected. ([#13499](https://github.com/craftcms/cms/pull/13499)) |
| 65 | +- Added `craft\addresses\SubdivisionRepository`. ([#13361](https://github.com/craftcms/cms/pull/13361)) |
| 66 | +- Added `craft\base\Element::showStatusField()`. ([#13265](https://github.com/craftcms/cms/pull/13265)) |
| 67 | +- Added `craft\base\Element::thumbSvg()`. ([#13262](https://github.com/craftcms/cms/pull/13262)) |
| 68 | +- Added `craft\base\ElementInterface::getIsSlugTranslatable()`. |
| 69 | +- Added `craft\base\ElementInterface::getSlugTranslationDescription()`. |
| 70 | +- Added `craft\base\ElementInterface::getSlugTranslationKey()`. |
| 71 | +- Added `craft\base\ElementInterface::getThumbHtml()`. |
| 72 | +- Added `craft\base\ElementInterface::modifyCustomSource()`. |
| 73 | +- Added `craft\base\ElementInterface::setDirtyFields()`. |
| 74 | +- Added `craft\base\ElementInterface::setFieldValueFromRequest()`. ([#12935](https://github.com/craftcms/cms/issues/12935)) |
| 75 | +- Added `craft\base\FieldInterface::normalizeValueFromRequest()`. ([#12935](https://github.com/craftcms/cms/issues/12935)) |
| 76 | +- Added `craft\base\FieldLayoutProviderInterface`. ([#13250](https://github.com/craftcms/cms/pull/13250)) |
| 77 | +- Added `craft\base\FsInterface::getShowHasUrlSetting()`. ([#13224](https://github.com/craftcms/cms/pull/13224)) |
| 78 | +- Added `craft\base\FsInterface::getShowUrlSetting()`. ([#13224](https://github.com/craftcms/cms/pull/13224)) |
| 79 | +- Added `craft\base\FsTrait::$showHasUrlSetting`. ([#13224](https://github.com/craftcms/cms/pull/13224)) |
| 80 | +- Added `craft\base\FsTrait::$showUrlSetting`. ([#13224](https://github.com/craftcms/cms/pull/13224)) |
| 81 | +- Added `craft\behaviors\EventBehavior`. ([#13502](https://github.com/craftcms/cms/discussions/13502)) |
| 82 | +- Added `craft\controllers\AssetsControllerTrait`. |
| 83 | +- Added `craft\elements\db\ElementQuery::EVENT_BEFORE_POPULATE_ELEMENT`. |
| 84 | +- Added `craft\events\DefineAddressSubdivisionsEvent`. ([#13361](https://github.com/craftcms/cms/pull/13361)) |
| 85 | +- Added `craft\events\MoveElementEvent::$action`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 86 | +- Added `craft\events\MoveElementEvent::$targetElementId`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 87 | +- Added `craft\events\MoveElementEvent::getTargetElement()`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 88 | +- Added `craft\gql\GqlEntityRegistry::getOrCreate()`. ([#13354](https://github.com/craftcms/cms/pull/13354)) |
| 89 | +- Added `craft\helpers\Assets::iconSvg()`. |
| 90 | +- Added `craft\helpers\StringHelper::escapeShortcodes()`. ([#12935](https://github.com/craftcms/cms/issues/12935)) |
| 91 | +- Added `craft\helpers\StringHelper::unescapeShortcodes()`. ([#12935](https://github.com/craftcms/cms/issues/12935)) |
| 92 | +- Added `craft\models\FieldLayout::$provider`. ([#13250](https://github.com/craftcms/cms/pull/13250)) |
| 93 | +- Added `craft\services\Addresses::$formatter`, which can be used to override the default address formatter. ([#13242](https://github.com/craftcms/cms/pull/13242), [#12615](https://github.com/craftcms/cms/discussions/12615)) |
| 94 | +- Added `craft\services\Addresses::EVENT_DEFINE_ADDRESS_SUBDIVISIONS`. ([#13361](https://github.com/craftcms/cms/pull/13361)) |
| 95 | +- Added `craft\services\Addresses::defineAddressSubdivisions()`. ([#13361](https://github.com/craftcms/cms/pull/13361)) |
| 96 | +- Added `craft\services\Elements::collectCacheInfoForElement()`. |
| 97 | +- Added `craft\services\Elements::getRecentActivity()`. ([#13420](https://github.com/craftcms/cms/pull/13420)) |
| 98 | +- Added `craft\services\Elements::trackActivity()`. ([#13420](https://github.com/craftcms/cms/pull/13420)) |
| 99 | +- Added `craft\services\ProjectConfig::$cacheDuration`. ([#13164](https://github.com/craftcms/cms/issues/13164)) |
| 100 | +- Added `craft\services\Structures::ACTION_APPEND`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 101 | +- Added `craft\services\Structures::ACTION_PLACE_AFTER`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 102 | +- Added `craft\services\Structures::ACTION_PLACE_BEFORE`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 103 | +- Added `craft\services\Structures::ACTION_PREPEND`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 104 | +- Added `craft\services\Structures::EVENT_AFTER_INSERT_ELEMENT`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 105 | +- Added `craft\services\Structures::EVENT_BEFORE_INSERT_ELEMENT`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 106 | +- Added `craft\web\Controller::EVENT_DEFINE_BEHAVIORS`. ([#13477](https://github.com/craftcms/cms/pull/13477)) |
| 107 | +- Added `craft\web\Controller::defineBehaviors()`. ([#13477](https://github.com/craftcms/cms/pull/13477)) |
| 108 | +- Added `craft\web\CpScreenResponseBehavior::$errorSummary`, `errorSummary()`, and `errorSummaryTemplate()`. ([#12125](https://github.com/craftcms/cms/pull/12125)) |
| 109 | +- Added `craft\web\CpScreenResponseBehavior::$pageSidebar`, `pageSidebar()`, and `pageSidebarTemplate()`. ([#13019](https://github.com/craftcms/cms/pull/13019), [#12795](https://github.com/craftcms/cms/issues/12795)) |
| 110 | +- Added `craft\web\CpScreenResponseBehavior::$slideoutBodyClass`. |
| 111 | +- Added `craft\web\Response::$defaultFormatters`. ([#13541](https://github.com/craftcms/cms/pull/13541)) |
| 112 | +- `craft\elements\actions\NewChild` is no longer triggerable on elements that have a `data-disallow-new-children` attribute. ([#13539](https://github.com/craftcms/cms/discussions/13539)) |
| 113 | +- `craft\elements\actions\SetStatus` is no longer triggerable on elements that have a `data-disallow-status` attribute. |
| 114 | +- `craft\helpers\Cp::selectizeFieldHtml()`, `selectizeHtml()`, and `_includes/forms/selectize.twig` now support a `multi` param. ([#13176](https://github.com/craftcms/cms/pull/13176)) |
| 115 | +- `craft\helpers\Typecast::properties()` now supports backed enum values. ([#13371](https://github.com/craftcms/cms/pull/13371)) |
| 116 | +- `craft\services\Assets::getRootFolderByVolumeId()` now ensures the root folder actually exists, and caches its results internally, improving performance. ([#13297](https://github.com/craftcms/cms/issues/13297)) |
| 117 | +- `craft\services\Assets::getThumbUrl()` now has an `$iconFallback` argument, which can be set to `false` to prevent a file icon URL from being returned as a fallback for assets that don’t have image thumbnails. |
| 118 | +- `craft\services\Assets::getAllDescendantFolders()` now has an `$asTree` argument. ([#13535](https://github.com/craftcms/cms/discussions/13535)) |
| 119 | +- `craft\services\Structures::EVENT_BEFORE_MOVE_ELEMENT` is now cancellable. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 120 | +- `craft\validators\UniqueValidator` now supports setting an additional filter via the `filter` property. ([#12941](https://github.com/craftcms/cms/pull/12941)) |
| 121 | +- `craft\web\Response::setCacheHeaders()` now has `$duration` and `$overwrite` arguments. |
| 122 | +- `craft\web\Response::setNoCacheHeaders()` now has an `$overwrite` argument. |
| 123 | +- `craft\web\UrlManager` no longer triggers its `EVENT_REGISTER_CP_URL_RULES` and `EVENT_REGISTER_SITE_URL_RULES` events until the request is ready to be routed, making it safe to call `UrlManager::addRules()` from plugin/module constructors. ([#13109](https://github.com/craftcms/cms/issues/13109)) |
| 124 | +- Deprecated `craft\base\Element::EVENT_AFTER_MOVE_IN_STRUCTURE`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 125 | +- Deprecated `craft\base\Element::EVENT_BEFORE_MOVE_IN_STRUCTURE`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 126 | +- Deprecated `craft\base\Element::afterMoveInStructure()`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 127 | +- Deprecated `craft\base\Element::beforeMoveInStructure()`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 128 | +- Deprecated `craft\events\ElementStructureEvent`. ([#13429](https://github.com/craftcms/cms/pull/13429)) |
| 129 | +- Deprecated `craft\helpers\ArrayHelper::firstKey()`. `array_key_first()` should be used instead. |
| 130 | +- Deprecated `craft\helpers\Assets::iconPath()`. `craft\helpers\Assets::iconSvg()` or `craft\elements\Asset::getThumbHtml()` should be used instead. |
| 131 | +- Deprecated `craft\helpers\Assets::iconUrl()`. |
| 132 | +- Deprecated `craft\helpers\UrlHelper::buildQuery()`. `http_build_query()` should be used instead. |
| 133 | +- Deprecated `craft\services\Volumes::ensureTopFolder()`. `craft\services\Assets::getRootFolderByVolumeId()` should be used instead. |
| 134 | +- Added `Craft.BaseUploader`. ([#13313](https://github.com/craftcms/cms/pull/13313)) |
| 135 | +- Added `Craft.createUploader()`. ([#13313](https://github.com/craftcms/cms/pull/13313)) |
| 136 | +- Added `Craft.registerUploaderClass()`. ([#13313](https://github.com/craftcms/cms/pull/13313)) |
| 137 | +- Added `Craft.Tooltip`. |
| 138 | + |
| 139 | +### System |
| 140 | +- Added support for setting environmental values in a “secrets” PHP file, identified by a `CRAFT_SECRETS_PATH` environment variable. ([#13283](https://github.com/craftcms/cms/pull/13283)) |
| 141 | +- All generated URL param characters are now properly encoded. ([#12796](https://github.com/craftcms/cms/issues/12796)) |
| 142 | +- `migrate` commands besides `migrate/create` no longer create the migration directory if it doesn’t exist yet. ([#12732](https://github.com/craftcms/cms/pull/12732)) |
| 143 | +- When `content` table columns are resized, if any existing values are too long, all column data is now backed up into a new table, and the overflowing values are set to `null`. ([#13025](https://github.com/craftcms/cms/pull/13025)) |
| 144 | +- When `content` table columns are renamed, if an existing column with the same name already exists, the original column data is now backed up into a new table and then deleted from the `content` table. ([#13025](https://github.com/craftcms/cms/pull/13025)) |
| 145 | +- Plain Text and Table fields no longer convert emoji to shortcodes on PostgreSQL. |
| 146 | +- Improved GraphQL performance. ([#13354](https://github.com/craftcms/cms/pull/13354)) |
| 147 | +- Fixed a bug where Plain Text and Table fields were converting posted shortcode-looking strings to emoji. ([#12935](https://github.com/craftcms/cms/issues/12935)) |
| 148 | +- Fixed a bug where `craft\elements\Asset::getUrl()` was returning invalid URLs for GIF and SVG assets within filesystems without base URLs, if the `transformGifs` or `transformSvgs` config settings were disabled. ([#13306](https://github.com/craftcms/cms/issues/13306)) |
| 149 | +- Fixed a bug where the GraphQL API wasn’t enforcing schema site selections for the requested site. ([#13346](https://github.com/craftcms/cms/pull/13346)) |
| 150 | +- Updated Yii to 2.0.48.1. ([#13445](https://github.com/craftcms/cms/pull/13445)) |
| 151 | +- Loosened the Composer constraint to `^2.2.19`. ([#13396](https://github.com/craftcms/cms/discussions/13396)) |
| 152 | +- Internal Composer operations now use a bundled `composer.phar` file, rather than Composer’s PHP API. ([#13519](https://github.com/craftcms/cms/pull/13519)) |
| 153 | +- Updated Selectize to 0.15.2. ([#13273](https://github.com/craftcms/cms/discussions/13273)) |
| 154 | +- Fixed a bug where PM times were getting converted to AM for Greek locales. ([#9942](https://github.com/craftcms/cms/issues/9942)) |
| 155 | + |
7 | 156 | ## 4.4.17 - 2023-08-08
|
8 | 157 |
|
9 | 158 | - `meta.__names__` values in the project config are now updated throughout the process of applying incoming project config changes, rather than at the end of the request.
|
|
0 commit comments