Skip to content

Releases: wintercms/winter

v1.0.466

07 Apr 14:30
9e64e63
Compare
Choose a tag to compare

UX/UI Improvements

  • Improved the disabled styling of the markdown, richeditor, mediafinder, & colorpicker FormWidgets.
  • Fixed long standing issue where on initial page load the backend nav bar would be an incorrect width until the JS loaded to correct it by switching to a flex layout for the backend nav bar.
  • Improved UX when an AJAX request is made while the application is in hard maintenance mode (php artisan down).
  • Added three preset buttons (Default, Full, & Minimal) to the backend richeditor toolbar settings to simplify the experience of selecting a custom richeditor toolbar.
  • Form tabs in the backend are now tracked in the URL bar by default making linking to specific tabs easier and retaining the place of the currently active tab across page reloads. Disable this behaviour by setting linkable: false on the form tab configuration.
  • Added button on backend user record pages that allows admins to unsuspend a user account that has been locked out due to failed login throttling.
  • Added new plugin:rollback Author.Plugin 1.2.3 command to rollback a specified plugin all the way to before it was installed or to the provided version.
  • Added new create:reportwidget Author.Plugin ReportWidgetName command to scaffold ReportWidget creation.
  • Added button on the Updates page in the backend to take users directly to the Install Themes page.
  • Update management page & dashboard status widget now list plugins that are missing their dependencies and what dependencies are missing specifically.

API Changes

  • Menu items controlled by NavigationManager are now objects, and $manager->getMainMenuItem($owner, $code) has been added to make it easier to manipulate existing menu items without having to deregister and reregister menu items to apply changes.
  • The postbackHandler property for DataTable form widgets now defaults to null - the widget will interpret a null value as to detect the save handler for the form that contains the widget (this is usually onSave, the old default value, but it will now detect other handlers such as those used by the relation controller).
  • The getParameter method in Cms\Classes\Router is now correctly type-hinted.
  • External parameters may now use dot notation to get a deeper-nested value when used for component parameters in a CMS object.
  • Added auth.throttle.* configuration options to configure the login throttling for the backend.
  • Added formGetRedirectUrl($context, $model) method to the FormController behavior, overrideable by the implementing controller. Used to get the redirect URL for a given context & model if a redirect is requested.
  • If uploaded files are missing an extension Winter will now try to automatically determine one based on the MIME type of the file.
  • Added support for the attributes property on the colorpicker, codeeditor, markdown, richeditor, mediafinder, & fileupload FormWidgets.
  • Added support for the placeholder attribute on the password field type.
  • Added support for defining custom values for the title and toolbarButtons labels of the RelationController behavior.
  • Added support for a badge property on main & side menu items in the backend to display string values as the menu item badge instead of the only numeric values already supported by the counter property.
  • Added a unique HTML id attribute to the Filter widget popups for targeting individual filter scopes in CSS.
  • Added usingSource($source, $closure) method to the Cms\Classes\AutoDatasource to force the AutoDatasource to only use the specified source for that closure.
  • Media items now only return an absolute URL if either cms.linkPolicy is set to force or the path property of the media storage disk starts with an absolute URL. This limits the breaking change from Build 1.0.444 to only installations using a force link policy.
  • Implemented the new Backend\Traits\UploadableWidget trait intended for Widgets that need to handle uploading files to the Media Library.
  • Added support for "soft" or "optional" components, a way for themes to include components only if they're present without breaking the theme if the relevant plugin is not installed and / or enabled. To make a component "soft" or "optional", prefix its name with @. Example: [@staticPage]
  • Added support for ignoreTimezone to date and daterange filter scope types.
  • Changed optional .htaccess line forcing HTTPS to default to returning a 301 response instead of 302.
  • Added ability to translate List column default values
  • Added ability to specify the filename of files uploaded directly via the AJAX framework and Blob objects.
  • Added new data-browser-validate option to trigger browser-based client side validation on AJAX requests within <form> elements.
  • Plugins & themes included as git submodules are now properly detected as valid git sources in the winter:util git pull command.
  • PluginManager->findMissingDependencies() now returns an array of arrays of missing plugin codes keyed by the plugin code that requires the missing plugins.
  • Added support for the trigger field property in the FieldParser.
  • Finished the implementation of the (array) $cssClasses property on the Filter widget.
  • Inspector dropdown properties now refresh dependent fields if the values are loaded remotely through the API (ie. through a getOptions method).
  • Inspector dropdown properties now support the emptyOption option as a synonym for placeholder, to show a value if no dropdown option is selected.

Bug Fixes

  • Fixed an issue where data in a DataTable widget inside a relation model popup form would not be saved on submit.
  • Record Finder widgets will now correctly save and load a record when using a column other than ID in the keyFrom configuration value, when the widget is not in relation mode.
  • Fixed issue where custom validation rule strings starting with unique would not register correctly.
  • Fixed propertyExists() method to correctly detect properties added through addDynamicProperty().
  • Fixed options support for checkboxlist and balloon-selector field types in the Syntax Parser
  • Fixed issues with properly quoting values when running winter:env
  • Fixed issue where Excel wouldn't properly detect the encoding of CSV files exported using the useList option
  • Asset files uploaded in the CMS will now take their default permissions from the value set in the configuration.
  • Repeaters will now trigger change.oc.formwidget when adding or removing items.
  • Fixed issue where the richeditor toolbar popups were z-index clashing with other form elements.
  • Fixed issue where mail layouts that didn't exist in the database but did exist in the filesystem weren't being loaded correctly.
  • Fixed issue where some browsers would incorrectly check off list checkboxes after a page reload through the autocomplete functionality which would cause visual & behavioural inconsistencies.
  • Fixed support for importing CSV files with encodings not supported by mb_convert_encoding() by using iconv() as a fallback.
  • Fixed issue where translations for related models managed by the RelationController behavior would not save when creating the related model, or updating a pivot model.
  • Fixed issue where model scopes applied by the relation FormWidget didn't support joins being used.
  • Fixed issue where php artisan theme:sync --target=database wouldn't properly sync to the specified target.
  • Improved the flexibility of the PluginManager in accepting plugin identifiers that are not perfectly matched to the desired plugin's casing (i.e. Rainlab.Blog would be considered an invalid plugin identifier prior to this change, it is now correctly identified as belonging to RainLab.Blog).
  • Fixed issue where pivot records being created or updated through the RelationController would not trigger the form field change events.
  • Update manager now respects the values of cms.pluginsPathLocal and cms.themesPathLocal when installing new plugins & themes.
  • Improved support for opcache when opcache.restrict_api is in effect.
  • Fixed issue where Lang::choice method would not use the plural form for a locale with a sublocale (ie. "English (United Kingdom)" / en-uk).
  • Fixed issue where theme:install Artisan command would throw an exception if the database templates feature was enabled.
  • Fixed issue where using the search query input in a filter for a relation list modal would throw a "not bound to controller" exception, due to the request not being tied to the relation list modal.
  • Fixed weird outline styling around :focused elements introduced in Build 1.0.465
  • Fixed bug that prevented the Purgeable database model behavior from being used with the SimpleTree & NestedTree traits.
  • Fixed error that would occur when using the Revisionable model trait with a date value that was null.
  • Fixed long standing problem where if a user attempts to use the list search feature on a list that has improperly configured (i.e. searchable: true set on a column that doesn't support DB searching) then that list would remain broken for the rest of the session's lifetime.
  • Fixed issue where model slugs weren't generated before model validation ran, meaning that autogenerated slugs would not be considered present when attempting to validate a slug attribute as required.
  • Fixed issue where creating records with the TagList would require the nameFrom attribute to be marked as fillable for mass assignment.
  • Fixed issue where having a filter config with no scopes defined would cause issues with the ListController behavior.
  • Fixed typos referencing the Halcyon library
  • Fixed IE11 support for deregistering service workers in the backend
  • Fixed issue where if a template was manually removed from cms_theme_templates when using databaseTemplates would cause an exceptio...
Read more

v1.0.465

07 Apr 14:30
3a577cb
Compare
Choose a tag to compare

UX/UI Improvements

  • The Event Log list now shows the entire first line of a logged error message, up to 500 characters maximum, in order to provide more context of errors in the list.
  • When searching for plugins to install in the backend plugin management screen author names are now included in the search results.
  • A consistent cross browser focus ring style is now utilized in the backend.
  • Fixed a small typo when using number range filters with no value provided for the minimum.
  • Removed excess space from tab titles when hovering over them.
  • Added styling to distinguish a disabled unchecked checkbox from a enabled unchecked checkbox.
  • Added ability to middle mouse click on list rows to open them in a new tab.
  • Added new style attribute for repeater widgets, which controls repeater item behaviour. Allows items to be expanded or collapsed on load, or allows a repeater to act as an "accordion" widget.
  • If a lazily loaded tab is the first tab or only tab displayed it will now be automatically loaded on page load instead of remaining empty.

API Changes

  • Type hint for registerSchedule method in PluginBase updated to correctly hint the Illuminate\Console\Scheduling\Schedule object that is passed to it.
  • Added exception.beforeReport and exception.report events
  • cms.backendForceSecure no longer supports the value of null (where it would be considered the inverse of app.debug) as this resulted in confusion when disabling debug mode while the application was behind a proxy causing an infinite loop. Ultimately it's the server's responsibility to handle forcing HTTPS.
  • User preferences for list widgets are now ignored if the list widget has disabled the setup modal via showSetup being false.
  • Return type hint documentation for PluginBase::boot method changed from array to void.
  • Re-added the db:seed artisan command

Bug Fixes

  • Fixed issue with the queueOn and laterOn methods of the Mail facade throwing an invalid argument exception due to queue name string being defined where the queue manager is meant to be defined. The queue name is now injected into the Mailable object that is created, and the default queue manager is used instead.
  • Implemented another fix for the temporary monkey patched LESS compilation to support PHP 7.4 until the Laravel 6 upgrade is completed.
  • Fixed a bug where attempting to set a simple value on a BelongsToMany relationship as a collection would produce a collection wrapped in an array instead of an array of values which would confuse the sync() command.
  • Fixed an issue with composer.json which could cause some installations to load a version of Laravel newer than actually supported.
  • Fixed issue where un-elevated plugins weren't being loaded on any routes starting with /combine (should have been /combine/)
  • Fixed a change in default behavior where a recent update to Dropzone.js (used for uploading files) added a timeout property that defaults to 30 seconds. Timeout has been set to 0 (infinite) to retain the previous behaviour of no timeout utilized on file uploads.
  • Fixed a bug where reloading a Lists widget with a custom search term applied would reset the pagination.
  • Improved error handling on invalid model attributes being used for form fields.
  • Improved preview mode support for type: number fields with 0 as their value.

Security Improvements

  • Improved escaping of option values provided to the dropdown field type

Translation Improvements

  • Improved Slovakian translation.
  • Improved French translation.
  • Improved Dutch translation.
  • Minor cleanup to English translation.

v1.0.464

07 Apr 14:31
Compare
Choose a tag to compare

Bug Fixes:

  • Fixed the trans() helper function to match the updated signature required by the Translator.

v1.0.463

07 Apr 14:31
Compare
Choose a tag to compare

UX/UI Improvements:

  • Fixed display of checkbox lists when quickselect is selected.
  • Added new winter:passwd Artisan command to change the password of a Backend user through the command-line.
  • Secondary branding colour is now applied to the active media filter in the MediaManager widget
  • Lists can now disable the click event by applying the nolink CSS class to table row (TR) elements in addition to table data elements (TD) elements.

API Changes:

  • System\Classes\PluginManager->sortByDependencies() is now deprecated as plugins are now sorted by key & dependencies by default.
  • Changed the Winter\Rain\Database\Builder->simplePaginate() signature to match paginate() ($perPage, $currentPage, $columns, $pageName)
  • Added engine => InnoDB to the default mysql database driver configuration
  • Added support for varcharmax to the mysql database driver configuration to specify the default length used for varchar / string columns when running migrations. If using utf8mb4 on MySQL < 5.7 or MariaDB < 10.2 this should be set to 191, newer versions can be safely set to 255 however.
  • Translator trans and transChoice method arguments have changed to match the Laravel 5.5 base package.

Bug Fixes:

  • Fixed the LESS compiler using PHP 7.4 that was previously throwing an error.
  • Added support for tab lazy loading to all forms of tabs, not just primary tabs.
  • Fixed hard coded Form widget alias in the recently added tab lazy-loading functionality.
  • Fixed support for Laravel's Builder::paginate() signature paginate($perPage, $columns, $pageName, $currentPage) in addition to Winter's paginate($perPage, $currentPage, $columns, $pageName). Additionally fixed support for Laravel's simplePaginate() signature.
  • Fixed issue where errors thrown during the page processing of the RelationController would be silently consumed without being reported to the user.
  • Fixed issue where popups can still be interacted with when they are in a loading state using data-popup-load-indicator.

Dependencies:

  • Updated minimum required PHP version for the installer to match Build 1.0.472's minimum of 7.0.8

v1.0.462

07 Apr 14:32
Compare
Choose a tag to compare

UX/UI Improvements:

  • Documented session.http_only config property in the default config/session.php

API Changes:

  • Event logs are now double-encoded for HTML characters before being displayed as both HTML and text in the event log viewer. This allows encoded HTML entities to be parsed and displayed correctly in the HTML view, but displayed exactly as entered in the text view.

Bug Fixes:

  • Fixed janky behaviour with the javascript sortable plugin when sorting items on a scrollable container (affected RainLab.Sitemap, RainLab.Pages, Menus, etc).
  • Fixed issue where linked data in singular relation controller (hasOne or belongsTo) would remain populated in the relation fields even after unlinking or deleting the linked record.

Dependencies

  • Changed Laravel dependency to require 5.5.40 as a minimum due to the breaking change Laravel made in that version, some composer installs were not recognizing anything newer than 5.5.38 so this bump makes it more obvious that a stale composer is the issue.

v1.0.461

07 Apr 14:33
Compare
Choose a tag to compare

UX/UI Improvements:

  • Set the CMS codeeditor field to readonly and added a warning message above it when safemode is enabled.

API Changes:

  • Bumped minimum required version of PHP from 7.0 to 7.0.8 to enable support for PHP 7.4.
  • Added support for the customViewPath configuration property in the RelationController when rendering lists to be able to override the partials used for rendering the Lists widget.
  • Using the ImportExportController's useList property will now pass the list header values through the backend.list.overrideHeaderValue event just like a regular list would.
  • ApplicationException are no longer logged if unhandled (they're meant as more of a validation / sanity check exception. SystemExceptions are logged instead.
  • All Artisan commands that are unusable in Winter (typically because they rely on a "Laravel" project structure) are no longer registered and thus no longer made available. Full list of removed commands here: wintercms/library#447
  • Added static method Cms\Helpers\Cms::safeModeEnabled() to check if safe mode is enabled.
  • Add support for lazy loading backend form tabs with the lazy configuration property that takes an array of tab names to apply lazy loading to.

Bug Fixes:

  • Fixed scrolling issue in the MediaManager that would occur on some browsers causing scrolled content to no longer become visible erratically.
  • Added smoother support for old serialized cookie data to retain sessions during the upgrade process.
  • Fixed issue where similarly-named repeaters in a CMS page or layout would conflict when checking for AJAX actions on a child repeater.

Translation Improvements:

  • Added Slovenian translation

Community Improvements:

Dependencies

  • Minimum PHP version bumped from 7.0.0 to 7.0.8
  • Support for PHP 7.4 added

v1.0.460

07 Apr 14:33
Compare
Choose a tag to compare

UX/UI Improvements:

  • Moved CodeEditor's full screen buttons to the bottom of the widget.
  • Fixed keyboard support for checkboxes
  • Added keyboard support to lists
  • Improved the UX of checkbox lists "Select All", "Select None" bulk actions
  • Changed the cursor to be a grab cursor when hovering over table headers to indicate that they are a scrollable container
  • Made the record "Delete" button consistent across the core backend controllers by replacing User Roles & User Groups delete buttons with the standard trash can icon button
  • Fixed issue where form tabs would initially be unstyled until the JS had loaded and initialized them
  • Added support for making radio fields display inline by adding cssClass: 'inline-options' to their properties
  • Added auto detection of the field required property for fields that have required_if model validation rules

API Changes:

  • Cookies are no longer serialized. This brings the behavior back in line with Laravel's default behavior as of the 5.5.42 update. IMPORTANT: If you are passing non-scalar values to Cookie::set() (i.e. objects & arrays) then you will need to change your code so that those values are JSON encoded / decoded before and after being stored in the cookie.
  • Added new System\Traits\ResponseMaker trait to the base Backend\Classes\Controller class (and the Cms\Classes\Controller controller). Adds the following methods: setStatusCode($code), getStatusCode(), setResponse($response), setResponseHeader($key, $values, $replace = true), setResponseCookie($cookie), getResponseHeaders(), and makeResponse($contents).
  • media.file.upload event now passes the $path argument by reference.
  • Added ability to specify a LESS file to be used as a default backend brand CSS override with the config item brand.customLessPath
  • Updated references to deprecated event.which and other methods of determining the selected keys to the new event.key
  • Added new method removePermission($owner, $code) to the BackendAuth manager class to enable plugins to dynamically remove permissions from the available list registered with the BackendAuth manager class.
  • Added support for SparkPost mail driver
  • Added support for a string option to be provided to Winter\Rain\Network\Http->setOption($option, $value) as long as it corresponds to a valid CURLOPT_ constant
  • Added getConfig($value, $default = null) method to the Backend\Classes\ListColumn class to mirror what's available on the Backend\Classes\FormField class
  • Added order option to the relation FormWidget to allow relation options to be ordered by a custom order statement.
  • Added email field type (type: email)
  • Documented newly available services.mailgun.endpoint config item in config/services.php
  • Replaced existing handling of disabling CloudFlare's rocket loader on backend scripts by adding a new event (system.assets.beforeAddAsset) that is listened to by the HeathDutton.CloudFlare plugin. Recommend any CloudFlare users using Rocket Loader to use that plugin going forward
  • Added support for permissions property on form fields, list columns, and list filter scopes. Property supports either a single string or an array of permissions that the current backend user must have access to at least one of in order to access the field / column / filter scope.
  • Added support for mode: switch to the Backend\FormWidgets\PermissionEditor FormWidget that defines permissions as either expliclity allowed (1) or denied (-1).
  • Added support for availablePermissions property to the Backend\FormWidgets\PermissionEditor FormWidget that accepts an array of permission codes to filter the list of permission codes to be managed by that widget instance down to.
  • Added clear-full, clear-left, and clear-right CSS classes that can be used to apply clearfixes to form fields by adding them to the field's cssClass property
  • Added support for the CURLOPT_POSTFIELDS cURL option to be manually overriden when using the Winter\Rain\Network\Http wrapper.
  • Added support for dependsOn to filter scopes of type: group. All current filter scopes (including their current values) will be passed to the options method as an array of scope objects to be used in redetermining the available options to provide when the scopes that are targeted with dependsOn are updated.
  • Added support for unregistered translation strings to still have the replacement engine run on them
  • Added support for minimum or maximum values in number range filter to be left unspecified - this is treated as an "at least" minimum value or "at most" maximum value filter.
  • Added getSortColumn() and getSortDirection() public methods to the Lists widget.
  • Added two more valid characters to filenames managed by the MediaLibrary, ' and &.
  • Added parseClean() method to Winter\Rain\Parse\Markdown that enables safe mode on the markdown parser used.

Bug Fixes:

  • Reverted improvements to table column width handling on Chrome (specifically for long unbroken text values in columns) introduced in Build 1.0.444 as it was causing other issues on mobile.
  • Reduced inconsistencies with results generated by \Winter\Rain\Database\Attach\Resizer class, specifically for .gif images by processing .gif images with imagescale() instead of imagecopyresampled()
  • Fixed an issue where attempting to modify the available Settings Items through the SettingsManager could fail if a user wasn't provided to filterItemPermissions() at that point in the request
  • Removed caching of Theme configuration, this is now handled by YAML::parseFile() caching which simplifies the Theme processing code and fixes some bugs related to cache invalidation
  • Fixed issue with trying to create multiple CMS templates at once
  • Fixed issue where the cached classes file would not be removed along with the cached services file when running php artisan clear-compiled
  • Fixed issue with PHP 7.0 compatibility introduced with new PreferenceMaker trait in Build 1.0.457
  • Fixed issue where message subjects set in Mail callback functions were not available to the system mail layouts because the layouts were generated before the callback was called. Note that this was accomplished by calling the callback before content is added to the message instead of after, so it could be considered a breaking change
  • Fixed styling for switch fields that are required
  • Fixed bug where '0' was returned as NULL from $this->param() but returned as '0' from {{ this.param.slug }}
  • Fixed issue where updating a record through a RelationController would not trigger a change event on the RelationController field like creating a record would by triggering the change event on successful update
  • Fixed issue where FormWidgets in Repeaters that made orphaned AJAX requests (AJAX requests fired on an element outside of the repeater's markup structure, ex. from a popup modal instead) were not being initialized which was causing the orphaned requests to fail
  • Fixed issue where the databaseTemplates feature from Build 1.0.456 wouldn't support templates in subfolders. Nesting limit is still 2 (/template-type/subfolder1/template.htm) but the issue where it was just 1 when databaseTemplates was enabled has been fixed.
  • Fixed issue where the change event was not triggered on removing a recordfinder's value with the clear button
  • Improved default email branding styles compatibility with Outlook mail clients by preventing harsh word breaks.
  • Fixed issue where the Model class would try to trim an attribute that was a PHP resource (pgsql:bytea) by simplifying the trim detection logic to just use is_string instead of checking if value wasn't every other type of variable available.
  • Fixed issue where an infinite loop could occur when trying to resolve a circular required_with or required_if validation rule chain.
  • Fixed issue where having no class lists configured for the RichEditor markup class options would break the RichEditor.
  • Fixed issue where the model.beforeSave event would be fired twice under some conditions when using a HasOneOrMany relationship.
  • Fixed PHP fatal error under some cases where argv is not available in the server variables.
  • Fixed issue where the FileUpload FormWidget was checking if the file model was protected before generating the URL to the file even though the File model itself handles that operation since Build 1.0.447.
  • Fixed issue where the mediafinder formwidget wouldn't work when the user didn't have access to the Media Manager by switching the formwidget to preview mode under those conditions
  • Fixed issue where text in an error message popup could not be selected for copy-pasting.
  • Fixed issue with parsing the select2 options format over AJAX requests introduced in Build 1.0.457.
  • Fixed conflict between input.trigger.js & filter.js that caused filter popup buttons to disappear when searching for records in a group filter popup.
  • Fixed faulty type cast for belongsToMany deferring bindings table when using PostgreSQL
  • Fixed support for mobile devices (touch screens) in the jquery.sortable.js plugin
  • Fixed issue introduced in Build 1.0.459 where some server configurations could cause the AssetCombiner to stop working
  • Fixed issue with number range filter not working with a value of 0 for either the minimum or maximum value.
  • Fixed issue where attempting to sort by a column that isn't actually supported as a sortable column by the database could cause the session to enter an invalid state where it would be impossible to remove that column sorting preference.
  • Fixed issue where changing just the "time" field on a datepicker FormWidget wouldn't trigger the JS change event on the field.
  • Fixed issue with the numberrange filter on PostgreSQL when attempting to filter the range by infinity in either direction.
  • Fixed issue w...
Read more

v1.0.459

07 Apr 14:34
Compare
Choose a tag to compare

UX/UI Improvements:

  • The theme Delete button is now hidden for the currently active theme as you cannot delete the active theme anyways.
  • Added a warning to the System Status dashboard ReportWidget when debug mode is enabled as debug should never be enabled in production.
  • Invalid menu items now throw a ValidationException when debug mode is enabled and log an error instead when debug is disabled.
  • Added support for Repeater item titles to be pulled from dropdown field types.
  • Added the Validation trait to model stubs when calling create:model.
  • Made the CodeEditor fullscreen button easier to see by increasing the contrast.

API Changes:

  • When setting relationship values model mutator methods ('set' . $attribute . 'Attribute') are now taken into account meaning that you can control how specific relationship values are set by defining a custom mutator method for the relationship.
  • Added getReportWidgets() method to Backend\Classes\WidgetManager to return the protected array of currently registered report widgets
  • Custom theme data stored in cms_theme_data is now removed when the theme it belongs to is deleted.
  • Added develop.decompileBackendAssets configuration flag to decompile the backend assets in order to simplify making changes to backend asset files for the purpose of making PRs to the Winter CMS core.
  • Switched parsing of stub files for the generator commands to use Twig instead of basic str_replace(), this will enable more complex stub files

Bug Fixes:

  • Fixed issue where the TagList FormWidget in mode: relation wasn't respecting relationship constraints (conditions and scope) set on the relationship definition.
  • Fixed issue where using the ::class magic constant in database migrations would cause them to break due to flawed parsing logic.
  • Fixed use of Storage::url() for local disks that haven't been configured correctly
  • Moved the translation for plugin's "By $author" text in the plugin update view to the System module instead of the CMS module to support installations without the CMS module enabled or installed.
  • Removed old "Holly Hack" for IE5-IE7 support, we don't support those browsers anymore.
  • Fixed Theme importing/exporting that was broken as of 457-458.
  • Fixed issue where the session expiring would throw a vague exception when attempting to check the CSRF token instead of just throwing a general CSRF invalid error message.
  • Fixed issue where multiple instances of the PermissionEditor could not exist on a single page.

Translation Improvements:

  • Improved Arabic translation

Performance Improvements:

  • The file extension has been added to the end of asset combiner URLs (ex. /combine/asqw3ljkqw421323.js or /combine/lkj23jlk13j1l.css) in order to allow CDNs to more easily identify the URL as cacheable to improve overall site performance.

Community Improvements:

  • Added documentation on keeping local forks of the Winter CMS codebase up to date with upstream.
  • Improved the CONTRIBUTING.md guide
  • Added security policy
  • Added documentation for testing pull requests

Dependencies

  • Updated to v1.8.0 of Spectrum.js (Note: Winter was already using 1.8.0, however jQuery API updates were made without the vendor tagging a new release)

v1.0.458

07 Apr 14:34
Compare
Choose a tag to compare

UX/UI Improvements:

  • The link to "Access Logs" in the System Dashboard Widget is now hidden when the user doesn't have access to view those logs.
  • Reverted 457's improvements for screen reader accessibility and keyboard navigation in the backend as they are not production ready. Will be considered for inclusion in 459.
  • Side panel header now styled with brand colors

API Changes:

  • Added cms.runMigrationsOnLogin configuration item to control whether the UpdateManager automatically runs any pending migrations on login to the backend. The default is now null which means that the value is pulled from app.debug; i.e. only enabled when the application is in debug mode.
  • Field labels are now added as model validation attribute names after the field is checked for inclusion in the current context which solves an issue where multiple fields for the same attribute but under different contexts would conflict with each other.

Bug Fixes:

  • Fixed support for tab icons in the Theme customization form
  • Fixed support for default values in nestedforms inside of repeaters in an update context
  • Fixed bug where a CSRF token mismatch would display an error twice in the CMS section
  • Removed support for the Priority Hints API in the {% framework %} tags as that broke existing themes that rely on a synchronous load order of the theme scripts
  • Fixed minor issue where the editable part of the RichEditor FormWidget didn't fully fill the height of the control
  • Fixed issue where calling isset() on CMS page codebase object properties wouldn't give the same result as actually accessing them.
  • Fixed "widget not bound to controller" error for nested repeaters.
  • Improved support for previewMode being passed down to Repeaters and NestedForms
  • Fixed an issue where using unsupported database drivers would thrown an incorrect exception

Translation Improvements:

  • Added Thai translation

Community Improvements:

  • Added documentation for the DataTable FormWidget
  • Added an issue template for marketplace issues

v1.0.457

07 Apr 14:35
Compare
Choose a tag to compare

UX/UI Improvements:

  • Now utilizing the selected secondaryColor brand setting for the border color on selected items in the Treeview control (pages list)
  • Added support for cms.databaseTemplates to the winter:env command
  • Added support for preview mode to the Taglist FormWidget
  • Improved the visibility of the code editor buttons in the CMS section by changing their colour to one with more contrast
  • Disabled the theme config cache when application is in debug mode
  • Improved the styling of the colour picker when allowEmpty: true
  • Improved screen reader accessibility for tabs and improved keyboard navigation in the backend

API Changes:

  • The Winter\Rain\Database\Attach\File model's getPath() now defines an optional $fileName parameter, any custom classes that extend this method must have their method signatures updated to match this change.
  • The Winter\Rain\Database\Attach\File model's getThumbFilename() method has been changed from protected to public, any custom classes that extend this method must have their method signatures updated to match this change.
  • The getDisk() method has been added to the Winter\Rain\Database\Attach\File model which enables running all storage related commands on the File's actual storage disk instead of the default storage disk.
  • Added new Backend\Traits\PreferenceMaker trait modelled after the SessionMaker trait that stores minor user preference changes (such as backend list configurations) in the user's preferences.
  • Added cms.enableBackendServiceWorkers (defaulting to false) to allow the use of Service Workers in the backend. They have been disabled by default for security purposes to prevent any frontend Service Workers from leaking into the backend.
  • Plugin dependencies defined in the plugin registration class $require property are now case insensitive.
  • Removed support for the invalid type: relation column configuration, previously this would warn that is was invalid in the system log and convert to type: text automatically. Recommended replacement is to use whatever type the data actually is and then use the relation: property to specify the relationship you want to get the value from.
  • Added a is_countable() polyfill to the library for PHP < 7.3
  • Disabled global jQuery AJAX events by default in favour of just the framework.js ones. Previously both would fire leading to conflicts between what parameters jQuery sends vs what the AJAX framework. If access to the jQuery AJAX events is required, pass ajaxGlobal: true to the options for $.request(handler, options) or add data-request-ajax-global for the Data Attributes AJAX API.
  • Third parameter $options added to Zip::make() that passes the options onto Zip->add(). In addition, the includeHidden option has been added which specifies that all hidden files (dot files) from the source should be included in the final Zip destination.
  • Added maxFilesize option to the FileUpload FormWidget, defaults to the upload_max_filesize from the server

Bug Fixes:

  • Fixed support for JS plugins extending the RichEditor
  • Improved the Halcyon addDynamicProperty test
  • Fixed issue where CMS Meta information wasn't populating correctly (breaking menus in RainLab.Pages)
  • Fixed issue where mainMenu counter's being set to false didn't properly disable them fully from displaying
  • Improved reliability of jsonable properties in models under conditions where they might be double de/encoded for one reason or another
  • Fixed broken path to the video thumbnail in the MediaManager widget
  • Fixed issue when attempting to interact with CMS assets in the backend caused by the recent addition of the databaseTemplates functionality
  • Fixed long standing issue where loading indicators would remain in a loading state when an error or flash message was returned from a response forcing the user to reload the page to get back to a usable state
  • Improved error message displayed when using a custom Halcyon model that does not have a dirName set
  • Fixed issue introduced with 447 when trying to get the thumbnail for private files without specifying any options by using default options when generating thumbnails for private files
  • Improved handling for error states in the RelationController behavior
  • Fixed support for files: true as an AJAX framework option in newer browsers
  • Fixed support for saving Repeater data in Static Pages when a repeater item is deleted
  • Fixed support for custom Select2 options via the AJAX framework, also added new format for custom options to be returned in to preserve their order
  • Fixed issue where CMS templates with the same filenames (i.e. a partial and a page both called contact.htm) would be unable to be selected in the list of templates in the CMS section.
  • Fixed the centering of no record message in lists when tree mode is enabled.
  • Stopped minifying CSS rules inside of parenthesis, fixes issue where calc() rules with pixel values were breaking after being run through the asset combiner.
  • Fixed support for ReportWidgets using the objectList property type for their properties.
  • Fixed support for Auth::id(), there was a typo in the method that rendered it unusable previously.
  • Fixed bug when attempting to sort by the any_template (Template) column in the CMS Theme Log. To sort by template, change the list setup to show the "Old Template" and "New Template" columns and sort by those instead.
  • Fixed inspector option values not being translated.
  • Fixed DataFeed support for Postgres
  • Fixed minor issues with poorly structured HTML from the dump() Twig function

Security Improvements

  • Backend ServiceWorkers have been disabled by default to prevent frontend ones from leaking into the backend unintentionally. See cms.enableBackendServiceWorkers

Translation Improvements:

  • Improved the Brazilian Portuguese translation
  • Improved the Chinese translation
  • Improved the Spanish translation
  • Improved the Russian translation

Performance Improvements:

  • When using Cloud storage drivers (ex. AWS or Rackspace) for Files that are marked as protected, the Backend\Controllers\Files controller's getDownloadUrl() and getThumbUrl() methods now return temporary URLs to the actual asset instead of a URL that proxies the entire asset through the framework to the browser. The amount of time the temporary URL is valid for is configurable by setting cms.storage.uploads.temporaryUrlTTL to a value in seconds (default 3600, an hour). This should dramatically improve performance of protected files that are located in storage drives that support the getTemporaryUrl() method - and it is recommended that if you heavily utilize that feature that you utilize a storage drive that supports that method.
  • Added support for the Priority Hints API supported in newer browsers for backend core assets and the {% framework %} tags

Community Improvements:

  • Various improvements (performance and otherwise) made to the TravisCI integration with the main repos to make contributing to PRs a nicer experience
  • Various improvements to the automated testsuite (including a new style checker, the existing code base has been cleaned up to conform to the style checker. It may be made more strict in the future, for now all PRs are required to adhere to it)
  • Added documentation for the theme:sync command and for the --relative option for the winter:mirror command

Dependencies