All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
4.34.0 - 2024-12-07
- [#8225] Drop Symfony < 6.4 (@VincentLanglet)
- [#8225] Drop PHP 8 (@VincentLanglet)
4.33.0 - 2024-12-04
- [#8219] Support editable mode on
FieldDescriptionInterface::TYPE_ENUM
(@onEXHovia)
- [#8218] Style fix for the version comparison page (@vityachis)
- [#8200] Allow delete permission to be voted on a specific subject. (@DenuxPlays)
4.32.0 - 2024-11-14
- [#8212] Enums implementing Symfony's
TranslatableInterface
are now correctly translated by theFieldDescriptionInterface::TYPE_ENUM
field type (@zyberspace)
4.31.0 - 2024-07-15
- [#8187] Symfony 7.1 deprecation about
Symfony\Component\HttpKernel\DependencyInjection\Extension
usage (@AirBair)
4.30.2 - 2024-05-07
4.30.1 - 2024-04-10
- [#8175]
Filter::getLabelTranslationParameters
implementation (@VincentLanglet)
4.30.0 - 2024-04-10
- [#8170] SearchHandlerInterface (@VincentLanglet)
- [#8172] Not implementing
FilterInterface::showFilter
(@VincentLanglet) - [#8172] Not implementing
FilterInterface::getLabelTranslationParameters
(@VincentLanglet) - [#8172] Not implementing
FilterInterface::withAdvancedFilter
(@VincentLanglet)
- [#8173] Active state in side menu for nested child admins (@VincentLanglet)
- [#8172]
label_translation_parameters
option usage (@VincentLanglet)
4.29.3 - 2024-01-22
4.29.2 - 2023-12-24
- [#8141] CRUDController::handleModelManagerException can now return a custom error message string for display in the flashbag instead of Sonata ones. Return type is removed from the signature (@wadjei)
4.29.1 - 2023-12-12
4.29.0 - 2023-11-25
- [#8127] Symfony 7 support (@VincentLanglet)
4.28.1 - 2023-11-20
- [#8125] Needing to submit form twice when using CRUDController::render() (@AntoineRoue)
4.28.0 - 2023-10-19
- [#8116] Deprecate
CRUDController::renderWithExtraParams
method (@core23) - [#8116] Deprecate
CRUDController::addRenderExtraParams
method (@core23) - [#8116] Deprecate
CRUDController::getBaseTemplate
method (@core23)
- [#8118] Allow AdminExtractor to be used for abstract admins (@core23)
- [#8115]
GroupMapper::removeTab
andGroupMapper::removeGroup
(@VincentLanglet)
4.27.1 - 2023-09-21
- [#8105] Allow to disable
icheck
and to be able to use still choice field mask with the expanded option (@goetas)
- [#8100] Logic to handle show / hide column of table html element (@nhung-le)
- [#8108] Add missing type button on ModelList form widget (@tdumalin)
- [#8099]
label_catalogue
configuration node deprecation message (@7ochem)
4.27.0 - 2023-09-07
4.26.1 - 2023-09-02
4.26.0 - 2023-07-29
- [#8082] Installing SonataAdminBundle without any persistence does not throw missing abstract argument definition (@jordisala1991)
4.25.0 - 2023-06-03
- [#8072] Support for SonataBlockBundle 5.0 (@jordisala1991)
- [#8070] "enum_translation_domain" and "use_value" options for fields of type
FieldDescriptionInterface::TYPE_ENUM
. (@phansys)
4.24.0 - 2023-05-13
- [#8064] Support for
sonata-project/form-extensions
2.0 (@jordisala1991) - [#7838] Stimulus dependency and initialization inside main
app.js
(@jordisala1991)
- [#8061] ExplainAdminCommand no longer complains about missing subject on admin (@VincentLanglet)
- [#8055] Child admins not related directly to a parent now handle show, edit and delete actions correctly. (@maMykola)
4.23.0 - 2023-04-24
- [#8041] Top nav bar menu for user is shown if there is a user logged in (@jordisala1991)
- [#8041] Top nav bar menu for creating admin entities is shown even is there is no user logged in (@jordisala1991)
- [#8044] Support for Symfony 4 (@jordisala1991)
- [#8044] Support for Twig 2 (@jordisala1991)
4.22.6 - 2023-04-12
4.22.5 - 2023-03-30
- [#8029] Use
symfony/string
instead ofdoctrine/inflector
to convert words from "snake_case" to "camelCase" (@jordisala1991)
- [#8026] Fix errors not being displayed in modal (@antoinemineau)
- [#8025] Message when the admin class declared on the container does not exist. (@jordisala1991)
4.22.4 - 2023-01-26
- [#8009] Fix response_item_callback option for
ModelAutocompleteType
form field. (@aleksvaganoff) - [#7891] Fix Sortable drag and drop for
ModelType
form field. (@jorrit)
4.22.3 - 2023-01-11
4.22.2 - 2023-01-05
- [#8001] Admin extension declaration with priority (@VincentLanglet)
4.22.1 - 2023-01-05
- [#7998] ExtensionCompilerPass usage with parameters class string. (@VincentLanglet)
4.22.0 - 2023-01-03
- [#7994] Added usage of ExporterInterface instead of Exporter class. (@pkameisha)
- [#7964] Ability to configure admin extension in the
sonata_admin.extensions
config with the admin class rather than the model class thanks toadmin_implements
,admin_instanceof
,admin_extends
andadmin_use
options. (@VincentLanglet) - [#7964]
excludes
,extends
,implements
,instanceof
,uses
,admin_implements
,admin_instanceof
,admin_extends
andadmin_use
options are now available directly when tagging an admin extension. (@VincentLanglet)
4.21.1 - 2022-12-08
- [#7985] Fixed an issue with integer indexed form children within
FormBuilderIterator
(@dmaicher) - [#7981]
data-sonata-select2-maximumSelectionLength
attribute (@sterrien)
4.21.0 - 2022-11-09
- [#7962] Made
AbstractAdmin::setSubject()
usegetModelClass()
instead ofgetClass()
to check is the subject is allowed (@7ochem)
- [#7963] Fix
appendFormFieldElement
on nested collection named the same as one of the parent fields (@fgueguen) - [#7961] Fixes ChoiceFieldMaskType behavior inside CollectionType (@Darkabso)
- [#7952] Fix an issue that an exception will be thrown by
Pool::getAdminByClass()
when the admin code is different from its service id. (@tamcy) - [#7952] Fix a typo in the deprecation message which is triggered when multiple
sonata.admin
tags are found in the same service definition. (@tamcy)
4.20.0 - 2022-10-20
- [#7941] Applying the service tag
sonata.admin
to a service more than once is deprecated. This is not meant to be supported and will not work as intended, as only one of the tag attributes will be applied to the service. (@tamcy)
- [#7949] Fix validation errors while editting many to one|many relations in a modal. (@jordisala1991)
- [#7948] Violations error handling (@ggabrovski)
- [#7940] Fix an issue that exception is thrown when the admin code is different from its service id. (@tamcy)
4.19.0 - 2022-09-27
- [#7922] [BC break] Change json error output for ajax calls to create or edit admin endpoints. (@jordisala1991)
- [#7927] BCLabelTranslatorStrategy (@VincentLanglet)
- [#7930]
ModelManager::getIdentifierValues
(@VincentLanglet) - [#7930]
ModelManager::getIdentifierFieldNames
(@VincentLanglet)
- [#7930] ModelToIdPropertyTransformer now supports composite identifiers (@VincentLanglet)
- [#7926] Fix missing default translation for actions label on list view. (@jordisala1991)
4.18.0 - 2022-08-21
- [#7913] Security attributes can be string or symfony expression language expressions (@VincentLanglet)
- [#7909] Added generics to the ProxyQueryInterface (@VincentLanglet)
4.17.0 - 2022-08-15
- [#7906] Added ProxyManagerInterface (@VincentLanglet)
- [#7906] Relying on doctrine
ClassUtils::getClass
to resolve proxy classes. The ModelManager have to implements the ProxyManagerInterface instead. (@VincentLanglet)
- [#7899] AdminMaker service option (@joerndyherrn)
4.16.0 - 2022-08-02
- [#7894] Support for twig-extensions 2 (@VincentLanglet)
- [#7887] Support for
sonata-project/doctrine-extensions
^2 (@VincentLanglet) - [#7886] Support for
sonata-project/exporter ^3
(@VincentLanglet)
- [#7885] Sidebar menu is now non-shared. (new instance is created everytime its requested) (@Warxcell)
- [#7893] Allow ChildAdmin for Unidirectional References (@VincentLanglet)
- [#7890] Do not try to check access for created object (@VincentLanglet)
4.15.0 - 2022-07-23
- [#7867] Added
AbstractAdmin::generateBaseRoutePattern()
(@VincentLanglet) - [#7867] Added
AbstractAdmin::generateBaseRouteName()
(@VincentLanglet)
- [#7878] Bump moment to 2.29.4 (@dependabot[bot])
- [#7867] Added
AbstractAdmin::$baseRoutePattern
property (@VincentLanglet) - [#7867] Added
AbstractAdmin::$baseRouteName
property (@VincentLanglet)
4.14.0 - 2022-07-12
- [#7841] Support for a FilterInterface::getFormOptions method. (@VincentLanglet)
- [#7841] FilterInterface::getRenderSettigns (@VincentLanglet)
- [#7841] All the
Sonata\AdminBundle\Form\Type\Filter\*Type
except the FilterDataType. (@VincentLanglet)
- [#7868] Batch action ProxyQueryInterface parameter don't have to be named $query anymore. (@mpoiriert)
4.13.1 - 2022-07-05
- [#7861] AdminInterface phpdoc (@VincentLanglet)
4.13.0 - 2022-06-25
- [#7819] Added support to batch action via another controller with 'controller' configuration (@mpoiriert)
- [#7819] BatchAction{actionName}IsRelevant will be remove in version 5.0. Move logic to your action. (@mpoiriert)
- [#7835] FormMapper::create() (@VincentLanglet)
- [#7851] Model Auto Complete failing in create flow of admin with subclasses (@mpoiriert)
- [#7847] AdminValueResolver does support generic AdminInterface type. (@mpoiriert)
- [#7845] Fix the subclass query parameter conflict in the sonata.admin.action.get_short_object_description controller. (@mpoiriert)
- [#7836] Command deprecations using Symfony 6.1 (@franmomu)
4.12.0 - 2022-05-21
- [#7824] Update jQuery to
^3.6
(@jordisala1991) - [#7809] Use datetime picker library from
sonata-project/form-extensions
. (@jordisala1991)
4.11.1 - 2022-04-29
- [#7803] Fix vulnerabilities on several frontend dependencies by upgrading them:
async
,minimist
,ansi-regex
andmoment
, (@jordisala1991)
4.11.0 - 2022-04-27
- [#7792] In preparation for SonataBlockBundle 5.0 we are not rendering block responses as private anymore (@dmaicher)
- [#7785] Correctly pass the class to the ModelHiddentType when using child admin without parentAssociationMapping. (@VincentLanglet)
4.10.1 - 2022-03-29
- [#7781] Correctly set the parent object in AdminType with CollectionType passed by reference (@VincentLanglet)
- [#7779] ProxyQueryInterface::setSortBy phpdoc (@VincentLanglet)
- [#7776] Fixed display of list items when there are no results and using an entity with inheritance (@jordisala1991)
4.10.0 - 2022-03-21
- [#7761] CrudController::handleModelManagerThrowable can now return a custom error message to display in the flashbag instead of the generic one from Sonata. (@VincentLanglet)
- [#7766] Reduced number of ModelManager::find calls (@VincentLanglet)
- [#7769] Improve detection of Symfony ACL bundle installation (@Buratinas)
4.9.0 - 2022-02-27
- [#7730]
TemplateType
to display custom data in the edit/create view. (@VincentLanglet)
- [#7749] Improve
make:sonata:admin
command, now it's passing modelClass and Controller in services tag. (@eerison) - [#7725] The default list mode is now the first one of the
getListModes
method. (@VincentLanglet) - [#7744] Some typehint from SourceIteratorInterface to \Iterator to allow using this library without deprecation (@VincentLanglet)
- [#7729] Use dynamic action variable to template (@core23)
- [#7714] Change if targetClass is instance of other className (@willemverspyck)
- [#7748]
sonata_admin.options.default_label_catalogue
in favor ofsonata_admin.options.default_translation_domain
(@VincentLanglet) - [#7748]
label_catalogue
attribute onsonata_admin
tag in favor oftranslation_domain
(@VincentLanglet) - [#7748]
catalogue
option on fieldDescription in favor ofchoice_translation_domain
for TYPE_CHOICE orvalue_translation_domain
for TYPE_TRANS. (@VincentLanglet) - [#7748]
label_catalogue
on group configuration in favor oftranslation_domain
(@VincentLanglet) - [#7748]
btn_catalogue
option on form type in favor ofbtn_translation_domain
(@VincentLanglet) - [#7725] Defining a list mode with a "class" setting, use the "icon" setting instead. (@VincentLanglet)
- [#7743] Passing '' for the
admin
key in an item of thesonata_admin.dashboard.groups
config (@VincentLanglet) - [#7743] Passing a
route
or alabel
when anadmin
is passed in an item of thesonata_admin.dashboard.groups
config (@VincentLanglet) - [#7743] The
item_adds
key when configuring thesonata_admin.dashboard.groups
config (@VincentLanglet) - [#7729]
tree.html.twig
template (@core23)
- [#7748]
translation_domain
attribute onsonata_admin
is used to set the admin translation domain. (Unlike thelabel_catalogue
attribute) (@VincentLanglet) - [#7757] Duplicate display of the help option for ModelListType (@VincentLanglet)
4.8.1 - 2022-01-31
- [#7716] Configure the admin with the
sonata_admin
tag before any customcall
provided in the service configuration. (@VincentLanglet) - [#7681] Disabling
global_search
for admin with non-default code. (@VincentLanglet)
4.8.0 - 2022-01-25
- [#7684]
code
,model_class
andcontroller
attribute to thesonata.admin
service tag (@VincentLanglet) - [#7708] Added support to display backed enums in lists and show templates (@franmomu)
- [#7684] Passing the code, the model class and the controller name as first, second and third argument of the Admin constructor. Use the
sonata.admin
attributes instead. (@VincentLanglet)
4.7.0 - 2022-01-05
- [#7685] Support for
symfony/translation-contracts
3.x (@jordisala1991) - [#7653] "export_format_xlsx" translations (@willemverspyck)
- [#7658]
AdminInterface::showInDashboard()
method (@VincentLanglet)
- [#7662] Twig extensions are now lazy (@VincentLanglet)
- [#7658]
AdminInterface::showIn()
method (@VincentLanglet)
- [#7674] Multiple choice field with predefined default values (@VincentLanglet)
- [#7673] Order of provided IDs at
ModelsToArrayTransformer::reverseTransform()
(@VincentLanglet)
4.6.1 - 2021-12-23
- [#7669] Model_autocomplete_type template (@VincentLanglet)
4.6.0 - 2021-12-23
- [#7661] ModelAutocompleteType quietMillis option (@Gasjki)
- [#7659] Passing an array of role to
AdminInterface::isGranted()
(@VincentLanglet) - [#7659] Passing an array of role to
AbstractAdmin::isGranted()
(@VincentLanglet) - [#7659] Passing an array of role to
SecurityHandlerInterface::isGranted()
(@VincentLanglet) - [#7659] Passing an array of role to
RoleSecurityHandler::isGranted()
(@VincentLanglet) - [#7659] Passing an array of role to
AclSecurityHandler::isGranted()
(@VincentLanglet)
- [#7666] DefaultRouterGenerator route name generation when full name is given (@VincentLanglet)
- [#7661] ModelAutocompleteType quietMillis option (@Gasjki)
4.5.1 - 2021-12-16
- [#7647] DefaultRouteGenerator Routes generation for nested admins (@Devristo)
- [#7636] Remove support for translation-contracts until it can be installed without relying on dev dependencies (@jordisala1991)
4.5.0 - 2021-12-03
- [#7626] Support for a nullable username in a Revision. (@VincentLanglet)
- [#7624] Support for ArrayAccess when accessing value in the appendFormFieldElement method. (@VincentLanglet)
4.4.0 - 2021-11-25
- [#7617] The ability to not add a
select
column when accessing to the List with AJAX. (@VincentLanglet)
- [#7617] Template
src/Resources/views/CRUD/base_list_flat_field.html.twig
(@VincentLanglet) - [#7617] Template
src/Resources/views/CRUD/base_list_flat_inner_row.html.twig
(@VincentLanglet)
4.3.2 - 2021-11-22
- [#7608] Accessing a non existing template variable in list_footer block when the list_table block is overriden (@VincentLanglet)
4.3.1 - 2021-11-22
- [#7609] Model Autocomplete template (@VincentLanglet)
4.3.0 - 2021-11-19
- [#7579] Added
AbstractAdminExtension::preBatchAction()
andAdminExtensionInterface::preBatchAction()
(as annotation for BC) to have an extension point on batch actions. (@7ochem) - [#7579] Added
AdminEventExtension::preBatchAction()
that dispatches asonata.admin.event.batch_action.pre_batch_action
event with a BatchActionEvent object containing the data (@7ochem) - [#7579] Added BatchActionEvent class as a transport for (newly introduced) batch action events (@7ochem)
- [#7604]
ModelManagerThrowable
(@VincentLanglet) - [#7604]
CRUDController::handleModelManagerThrowable()
(@VincentLanglet)
- [#7580]
FormTypeFieldExtension::getValueFromFieldDescription()
(@VincentLanglet) - [#7604]
CRUDController::handleModelManagerException()
(@VincentLanglet)
4.2.2 - 2021-11-08
- [#7599] French translations (@VincentLanglet)
- [#7598] Filter interface phpdoc (@VincentLanglet)
4.2.1 - 2021-10-31
- [#7576] Missing
merge
call in twig (@VincentLanglet)
4.2.0 - 2021-10-30
- [#7561] Make
AuditReaderInterface
generic (@VincentLanglet) - [#7563]
AbstractAdmin::removeExtension()
(@VincentLanglet) - [#7564] The ability to not add a
select
column when accessing to the list with AJAX (@VincentLanglet) - [#7568] Added support for
psr/log
3.0. (@jordisala1991) - [#7568] Added support for
psr/container
2.0. (@jordisala1991)
- [#7529] Setting a default order if it is not set in the field description (@franmomu)
- [#7530] Using multiple properties with
ModelAutocompleteType
with different order (@franmomu)
4.1.0 - 2021-10-27
- [#7558] Added more generic information (@core23)
- [#7555] Added support for Symfony 6 (@jordisala1991)
- [#7519]
Sonata\AdminBundle\Builder\BuilderInterface
(@VincentLanglet)
- [#7556] Set subject of $associationAdmin when collection is append to childs collections. (@Pasttaga)
- [#7537] Made
getBatchActions()
return an empty array when the admin does not have a batch route (@7ochem)
4.0.1 - 2021-10-01
- [#7506] Improved error message when a required option is not passed to the FormType. (@VincentLanglet)
- [#7514]
empty_boxes
option (@krubenrc) - [#7509] Do not display empty user-block on the navbar (@VincentLanglet)
- [#7483] Issue where
configureActionButtons()
is not being called in custom actions. (@toooni) - [#7487] Deprecations triggered with Symfony 5.4 (@franmomu)
4.0.0 - 2021-09-05
- [#7464] New role
ROLE_MYADMIN_HISTORY
to access to the history actions (@VincentLanglet) - [#7452]
AdminInterface::removeFieldFromShowGroup
method (@VincentLanglet) - [#7452]
AbstractAdmin::removeFieldFromShowGroup
method (@VincentLanglet)
- [#7458] Fail fast when using ACL as security handler without security.acl.provider service (@VincentLanglet)
- [#7454] The route used by search result is now
show
. (@VincentLanglet) - [#7454] The route used by
ListMapper::addIdentifier()
is nowshow
(@VincentLanglet) - [#7464]
AbstractAdmin::getAccessMapping
visibility (@VincentLanglet) - [#7450]
AclSecurityHandlerInterface::addObjectClassAces()
signature (@VincentLanglet) - [#7450]
AclSecurityHandler::addObjectClassAces()
signature (@VincentLanglet) - [#7450]
AdminAclManipulator::addAdminClassAces()
signature (@VincentLanglet) - [#7450]
AdminAclManipulatorInterface::addAdminClassAces()
signature (@VincentLanglet)
- [#7455] Missing translation on batch confirmation page. (@VincentLanglet)
- [#7452] Fix
CollectionType
for nested fields. (@VincentLanglet) - [#7452]
ShowMapper::remove
method now correctly remove the field from the groups. (@VincentLanglet) - [#7453] Add Font Awesome icon instead of the jQuery UI icon (@willemverspyck)
- [#7454]
AbstractAdmin::searchResultAction()
(@VincentLanglet) - [#7454]
AbstractAdmin::getSearchResultLink()
(@VincentLanglet) - [#7454]
AdminInterface::getSearchResultLink()
(@VincentLanglet) - [#7464] Access to the history actions with the role
ROLE_MYADMIN_EDIT
(@VincentLanglet) - [#7464]
AdminInterface::getAccessMapping
method (@VincentLanglet)
4.0.0-rc.2 - 2021-08-24
- [#7449]
Revision
class (@VincentLanglet)
- [#7449]
AuditReaderInterface::findRevision()
return type (@VincentLanglet)
- [#7448] Display of list when a field is called
elements
. (@VincentLanglet) - [#7433] Make Select2 use the locale. (@vindert)
- [#7445] Display of the
base_show_compare
template (@VincentLanglet) - [#7386] Display of nested form fields by the FormMapper (@VincentLanglet)
- [#7386]
AbstractAdmin::configureActionButtons()
phpdoc for phpstan (@VincentLanglet) - [#7388] Do not throw error when trying to inject an admin as a service in an action. (@VincentLanglet)
- [#7393] Bump yarn dependencies (@VincentLanglet)
4.0.0-rc.1 - 2021-08-08
- [#7364]
FormMapper
now implements theBlockBundle/FormMapper
interface (@VincentLanglet) - [#7348] Support for POST request to deleteAction. (@VincentLanglet)
- [#7351] Added second parameter to
AdminInterface::getPersistentParameter()
(@VincentLanglet) - [#7205] Added missing generic phpdoc for
AdminInterface::getSubject()
method (@franmomu)
- [#7358] Icon for filters (@VincentLanglet)
- [#7310] Remove unused code and add some
final
keyword (@VincentLanglet) - [#7252] Add final to multiple method of CRUDController (@VincentLanglet)
- [#7345] Make
getPreviousFilter()
non nullable (@VincentLanglet) - [#7347] Block_search_result.html.twig now display all the possible filter and not only the matching ones. (@VincentLanglet)
- [#7238]
isXmlHttpRequest()
,redirectTo()
,isPreviewApproved()
,isInPreviewMode()
,isPreviewDeclined()
,validateCsrfToken()
signatures. They now require to pass the request as first argument. (@VincentLanglet) - [#7241] Changed argument 1 of
SessionFilterPersister::__construct()
fromSessionInterface
toRequestStack
(@franmomu) - [#7220] All the protected property of the AsbtractAdmin with a specific setter are now private. (@VincentLanglet)
- [#7350] Fixed behavior of placeholder (empty value) for select2 choice fields (@dmaicher)
- [#7330] Fix for not showing placeholder when using Select2 with ChoiceType (@VincentLanglet)
- [#7342] Fixed broken javascript using
select2
(@franmomu) - [#7193] Scroll lag on Safari due to refreshNavbarStuckClass call. (@moostrich)
- [#7253] Allow relative path to resources (@jderusse)
- [#7249] "multiple" option of AutocompleteType (@willemverspyck)
- [#7219] Fix the css of sort arrows in lists. (@Laffesz)
- [#7224] Focus on Select2 or CKEditor in modal dialog (@willemverspyck)
- [#7208] Fixed
keep_open
option to always keep open a group menu (@franmomu) - [#7202] Missing comma & bracket (@cecicifu)
- [#7198] Pagination results per page selector (@1ed)
- [#7354] Removed support for Symfony 5.2 (@jordisala1991)
- [#7354] Removed support for SensioFrameworkExtraBundle < 6.1 (@jordisala1991)
- [#7319] Properties and getters validation from ExplainAdminCommand. (@VincentLanglet)
- [#7238]
CRUDController::getRequest()
method (@VincentLanglet)
4.0.0-alpha-2 - 2021-05-14
- [#7131] Add Source Sans Pro font source files (@jordisala1991)
- [#7022] Added
FilterData
to model the data from a filter (@franmomu) - [#7034] Added integration with webpack encore (@jordisala1991)
- [#7034] Npm as a package manager for internal assets (@jordisala1991)
- [#7133] Upgrade to Font Awesome 5 maintaining compatibility with version 4 icons (@jordisala1991)
- [#7109] Move public images to
src/Resources/public/images
directory (@jordisala1991) - [#7106] Unify js files into a single
app.js
file (@jordisala1991) - [#7022] Changed
FilterInterface::apply()
to accept aFilterData
instance instead ofarray
in argument 4 (@franmomu) - [#7098] Unify vendor js files into a single
app.js
file (@jordisala1991) - [#7084] Unify css files into a single
app.css
file (@jordisala1991) - [#7084] Move remaining third party assets from
src/Resources/public
toassets
directory. Only necessary assets are exposed to thepublic
dir (@jordisala1991) - [#7073] Move css files to root assets directory and only expose the minified
app.css
(@jordisala1991) - [#7067] Upgrade all npm packages to their latest patch release (@jordisala1991)
- [#7067] Upgrade
jquery-form
to v4 (@jordisala1991) - [#7067] Upgrade
jquery.scrollto
to v2 (@jordisala1991) - [#7048] Upgrade to Select2 ^4.0. (@jordisala1991)
- [#7034] Changed paths of javascript and css files (@jordisala1991)
- [#7147] Support for phpcr (@VincentLanglet)
- [#7067] Removed Ionicons dependency (@jordisala1991)
- [#7034] Bower as a package manager (@jordisala1991)
4.0.0-alpha-1 - 2021-04-11
See UPGRADE-4.0.md
3.107.2 - 2022-01-19
- [#7705] Catch AccessException in AbstractAdmin::appendParentObject() to prevent an error when the property for the parent object is uninitialised. (@7ochem)
3.107.1 - 2022-01-01
- [#7641] Fixed batch confirmation translations to include mentioning the selected action or object (@7ochem)
- [#7641] Fixed (other) Dutch translations that were missing a placeholder compared to the English file (@7ochem)
3.107.0 - 2021-11-15
- [#7602]
ModelManagerThrowable
(@VincentLanglet) - [#7602]
CRUDController::handleModelManagerThrowable()
(@VincentLanglet)
- [#7602]
CRUDController::handleModelManagerException()
(@VincentLanglet)
3.106.1 - 2021-10-31
- [#7574] Missing
merge
call in twig (@VincentLanglet)
3.106.0 - 2021-10-30
- [#7563]
AbstractAdmin::removeExtension()
(@VincentLanglet) - [#7564] The ability to not add a
select
column when accessing to the list with AJAX (@VincentLanglet) - [#7567] Final information to
AbstractAdmin::getAccess()
(@core23)
- [#7529] Setting a default order if it is not set in the field description (@franmomu)
- [#7530] Using multiple properties with
ModelAutocompleteType
with different order (@franmomu)
3.105.3 - 2021-10-07
- [#7524] HTML icon rendering in the menu (@VincentLanglet)
3.105.2 - 2021-10-05
- [#7521] Correctly display the default icon in the admin menu if none are provided (@VincentLanglet)
3.105.1 - 2021-09-08
- [#7387] Do not throw error when trying to inject an admin as a service in an action. (@VincentLanglet)
- [#7376] Information about the matching filters in the search results, because it does not work for cascaded oneToMany filters. (@core23)
3.105.0 - 2021-08-07
- [#7356] Added support for
psr/log
^2.0. (@jordisala1991)
- [#7363] Requesting a non existent service "sonata.admin.exporter.do-not-use". (@VincentLanglet)
- [#7360]
RetrieveAutocompleItemsAction
when used with an array of property (@VincentLanglet)
3.104.0 - 2021-07-20
- [#7325] Option
list_action_button_content
(@VincentLanglet) - [#7299] Added support for non admin prefixed
ROLE_*
roles by the RoleSecurityHandler (@VincentLanglet) - [#7306] New
block
twig in order to override the button display by the admin in the base_edit_form (@VincentLanglet)
- [#7320]
response_item_callback
callback signature (@VincentLanglet)
- [#7325] Option
title_mode
. Uselogo_content
instead (@VincentLanglet) - [#7290] Passing
admin
in the request of search action (@VincentLanglet)
- [#7335] Crash on choice field inline edition with a 0 value (@soullivaneuh)
- [#7332] Accessing on non existent array keys
translation_domain
(@VincentLanglet) - [#7320]
response_item_callback
option of ModelAutocompleteFilter (@VincentLanglet)
3.103.0 - 2021-07-11
- [#7308]
ChainableFilterInterface
(@VincentLanglet) - [#7285] Added deprecated annotation to AbstractAdmin validate() method. (@7ochem)
- [#7275] SearchableFilterInterface (@VincentLanglet)
- [#7283] Added
IconExtension
twig extension. (@VincentLanglet) - [#7283] Added
parse_icon
filter. (@VincentLanglet) - [#7279] Add generic to MapperInterface and all extending classes. (@VincentLanglet)
- [#7279] Added generic to ConfigureEvent and PersistenceEvent. (@VincentLanglet)
- [#7301] Not passing argument 2 of
Symfony\Component\Form\FormRegistryInterface
toAbstractFormContractor::__construct
(@dmaicher) - [#7275] Passing
global_search
option to a filter which does not implementsSearchableFilterInterface
. (@VincentLanglet) - [#7275]
sonata_admin.global_search.case_sensitive
configuration. (@VincentLanglet) - [#7282]
AbstractAdmin::addParentAssociationMapping()
method. (@VincentLanglet) - [#7282] Calling
AdminInterface::setParent()
without second argument. (@VincentLanglet) - [#7282] Calling
AdminInterface::getParentAssociationMapping()
for a non parent admin. (@VincentLanglet) - [#7265] Passing a FieldDescriptionInterface as first argument of method
ListMapper::add
. (@VincentLanglet) - [#7265] Passing a FieldDescriptionInterface as first argument of method
ShowMapper::add
. (@VincentLanglet) - [#7265] Passing a FieldDescriptionInterface as first argument of method
DatagridMapper::add
. (@VincentLanglet) - [#7265] Passing a FormBuilderInterface as first argument of method
FormMapper::add
. (@VincentLanglet) - [#7265]
FieldDescriptionInterface::mergeOptions()
. (@VincentLanglet) - [#7265]
BaseFieldDescription::mergeOptions()
. (@VincentLanglet) - [#7283] Passing an
icon
option with the formatfa-plus
orplus
, use the formatfa fa-plus
or pass directly the<i>
html instead. (@VincentLanglet) - [#7267] Deprecated passing
collection
as argument 2 ofFormMapper::add()
method (@franmomu)
- [#7301] Default options are added correctly to form types that use the Symfony way of extending Sonata's default types (@dmaicher)
- [#7287]
FieldCollection::reorder()
andDatagrid::reorderFilter()
methods. (@VincentLanglet) - [#7254] Filters are correctly updated if only default values are submitted. (@VincentLanglet)
- [#7277] Respect
false
as translation_domain for tab and action buttons. (@VincentLanglet) - [#7264]
Max_per_page
drowpdown propagate correctly thesort_by
filter value (@VincentLanglet) - [#7271] Do not try to translate fieldDescription label when false is provided as translation domain. (@VincentLanglet)
3.102.0 - 2021-06-21
- [#7266] Overriding
AbstractAdmin::getDataSourceIterator()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::create()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::delete()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFilterParameters()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getParentAssociationMapping()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getBaseRoutePattern()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getBaseRouteName()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getClass()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getSubClasses()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setSubClasses()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasSubClass()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasActiveSubClass()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getActiveSubClass()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getActiveSubclassCode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getBatchActions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getRoutes()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasRoute()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::isCurrentRoute()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::generateObjectUrl()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::generateUrl()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::generateMenuUrl()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormBuilder()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::defineFormBuilder()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::attachAdminClass()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getForm()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getList()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getDatagrid()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getSideMenu()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getRootCode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getRoot()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setBaseControllerName()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getBaseControllerName()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getMaxPerPage()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setMaxPageLinks()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getMaxPageLinks()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormGroups()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setFormGroups()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::removeFieldFromFormGroup()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::reorderFormGroup()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormTabs()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setFormTabs()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getShowTabs()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setShowTabs()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getShowGroups()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setShowGroups()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::reorderShowGroup()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setParentFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getParentFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasParentFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setSubject()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getSubject()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasSubject()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormFieldDescriptions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasFormFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addFormFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getShowFieldDescriptions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getShowFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasShowFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addShowFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::removeShowFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getListFieldDescriptions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasListFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addListFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::removeListFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFilterFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasFilterFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addFilterFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::removeFilterFieldDescription()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFilterFieldDescriptions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getChildren()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::isChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasChildren()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setUniqid()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getUniqid()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getClassnameLabel()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getPersistentParameter()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setCurrentChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::isCurrentChild()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getCurrentChildAdmin()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setTranslationDomain()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getTranslationDomain()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getTranslationLabel()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setRequest()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getRequest()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasRequest()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getCode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getBaseCodeRoute()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::showIn()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::createObjectSecurity()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::isGranted()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getUrlSafeIdentifier()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getNormalizedIdentifier()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getShow()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setFormTheme()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFormTheme()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setFilterTheme()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getFilterTheme()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::addExtension()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getExtensions()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::supportsPreviewMode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::determinedPerPageValue()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::isAclEnabled()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::setListMode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getListMode()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getAccessMapping()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::checkAccess()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::hasAccess()
(@VincentLanglet) - [#7266] Overriding
AbstractAdmin::getActionButtons()
(@VincentLanglet) - [#7263] Overriding
renderWithExtraParams()
,renderJson()
,isXmlHttpRequest()
,isPreviewRequested()
,isPreviewApproved()
,isInPreviewMode()
,isPreviewDeclined()
,validateCsrfToken()
,escapeHtml()
,getCsrfToken()
methods inCRUDController
(@VincentLanglet)
- [#7247] Correctly propagate the group translation domain to field description even if it's
false
(@VincentLanglet) - [#7247] Field description stop to use the admin translation domain if the value was set to
false
(@VincentLanglet) - [#7262] Conflicts with other libraries using the
$
variable (@phansys)
3.101.0 - 2021-06-13
- [#7240]
strict
param toCRUDController::assertObjectExists()
in order to check for the existence of the id in the request (@VincentLanglet)
- [#7239] Display of
history_revision_timestamp.html.twig
(@VincentLanglet)
3.100.2 - 2021-05-27
- [#7223] Reverted the changes of #7196, because they only work for Select2 version 4, that is used on the Master branche. Branche 3.x uses Select2 version 3. (@willemverspyck)
- [#7211] ChildId are not lost anymore when using multiple times the appendFormFieldAction and similar actions. (@VincentLanglet)
- [#7214]
FieldDescriptionInterface::getMappingType()
return type (@VincentLanglet) - [#7206] Fixed type of
sortable
option inFieldDescriptionOptions
(@franmomu)
3.100.1 - 2021-05-18
- [#7203]
edit_many_script.html.twig
rendering (@VincentLanglet)
3.100.0 - 2021-05-18
- [#7191] Passing a
code
value in the request of AppendFormFieldElementAction, GetShortObjectDescriptionAction, RetrieveAutocompleteItemsAction, RetrieveFormFieldElementAction and SetObjectFieldValueAction. Pass_sonata_admin
instead. (@VincentLanglet) - [#7191] Passing a
Pool
argument to the constructor of AppendFormFieldElementAction, GetShortObjectDescriptionAction, RetrieveAutocompleteItemsAction, RetrieveFormFieldElementAction and SetObjectFieldValueAction. Pass an AdminFetcher instead. (@VincentLanglet)
- [#7191] AppendFormFieldElementAction, GetShortObjectDescriptionAction, RetrieveAutocompleteItemsAction, RetrieveFormFieldElementAction and SetObjectFieldValueAction now set the childAdmin subjects to the childAdmin. (@VincentLanglet)
- [#7196] Changed .select2() to .attr() (@cecicifu)
- [#7196] Set id in the value attribute of hidden input after save (@cecicifu)
3.99.1 - 2021-05-11
- [#7181] Fix SimplePager pagination (@VincentLanglet)
3.99.0 - 2021-05-09
- [#7077] Added
default_admin_services
config key to overwrite the default services provided to all the admin (@VincentLanglet) - [#7144] Added
AdminExtensionInterface::configure()
method (@yann-eugone) - [#7144] Added
AbstractAdminExtension::configure()
method with no content (@yann-eugone) - [#6950] Added
AdminFetcher
to fetch theAdmin
service associated to a request (@franmomu) - [#6950] Added
AdminParamConverter
to be able to inject an Admin service in a controller (@franmomu) - [#7108]
final
for method of every abstract classes (@VincentLanglet)
- [#7144] Changed
AbstractAdmin::initialize()
and callAdminExtensionInterface::configure()
on each extension (@yann-eugone)
- [#7077] Deprecated
admin_services
config key (@VincentLanglet)
- [#7162] Fix font route to be relative and not absolute (@jordisala1991)
- [#7149]
ProxyQuery::execute()
return type; it doesn't require to be an instance ofCountable
(@VincentLanglet)
3.98.2 - 2021-05-01
- [#7132] Fixed inclusion of Source Sans Pro as main font (@jordisala1991)
- [#7127]
AdminInterface::initialize()
is the last method called (@dmaicher) - [#7127]
admin_services.templates.form
is correctly set (@dmaicher) - [#7127]
admin_services.templates.filter
is correctly set (@dmaicher) - [#7127] Default service setter calls on
AdminInterface
are only added if there are no calls defined yet (@dmaicher) - [#7135] Remove
do-not-use
alias for exporter service. (@eerison) - [#7130] Fix
display_url.html.twig
template (@VincentLanglet)
3.98.1 - 2021-04-27
- [#7125] Unclosed "{" on src/Resources/views/CRUD/Association/edit_one_to_one.html.twig (@VincentLanglet)
- [#7128] Fix displays of the link to go to page 1 when accessing on a non-existent List page (@VincentLanglet)
3.98.0 - 2021-04-27
- [#7118] Added
FilterData
to use it for forward compatibility with4.0
(@franmomu) - [#7115]
TaggedAdmin::setListModes()
(@VincentLanglet) - [#7092] Generic template for DatagridBuilderInterface (@VincentLanglet)
- [#7092] Generic template for LockInterface (@VincentLanglet)
- [#7088] Added
render_breadcrumbs
andrender_breadcrumbs_for_title
Twig functions to render breadcrumbs (@franmomu)
- [#7112] Restrict return type of
ProxyQuery::execute()
method toarray<object>|(\Traversable<object>&\Countable)
(@VincentLanglet)
- [#7115]
TaggedAdmin::showMosaicButton()
(@VincentLanglet) - [#7110]
_email_link.html.twig
template, usedisplay_email.html.twig
instead (@VincentLanglet) - [#7110] Using
display_*
templates passing a field_description, you SHOULD pass the option directly instead (@VincentLanglet) - [#7088] Deprecated overriding the
breadcrumbs_builder
variable passed to Twig templates (@franmomu)
- [#7103] FieldDescriptions options phpdoc to keep only common options (@VincentLanglet)
- [#7121] Calling foreach on
ArrayAccess
in ModelToIdPropertyTransformer (@VincentLanglet) - [#7065] Fixed "Field "FIELD" has already been rendered" error message when using ModelType (@epci)
- [#7092]
DatagridBuilderInterface::addFilter
phpdoc: The$type
MUST be a class-string (@VincentLanglet) - [#7092] Missing generic template for ModelManagerInterface (@VincentLanglet)
- [#7110] Stop throwing an error when using
display_*
templates without passing a field_description (@VincentLanglet) - [#7093] URLs generated at global search results for the list filtering, which were missing the
value
dimension (@phansys) - [#7093] Layout for the filter links generated at global search results (@phansys)
- [#7100] Remove deprecation for
AbstractAdmin::preValidate()
method (@VincentLanglet)
3.97.0 - 2021-04-19
- [#7033] Added "block.admin_preview" block in order to show a preview for admin lists in dashboard (@phansys)
- [#7078] Added
DatagridInterface::SORT_ORDER
constant to use it instead of_sort_order
string (@franmomu) - [#7078] Added
DatagridInterface::SORT_BY
constant to use it instead of_sort_by
string (@franmomu) - [#7078] Added
DatagridInterface::PAGE
constant to use it instead of_page
string.(@franmomu) - [#7078] Added
DatagridInterface::PER_PAGE
constant to use it instead of_per_page
string (@franmomu) - [#7066] Added generic for ModelManager class (@VincentLanglet)
- [#7063] Added
XEditableExtension::FIELD_DESCRIPTION_MAPPING
to expose mapping between FieldDescription types and xEditable types (@franmomu) - [#7039] Added
MapperInterface
(@VincentLanglet) - [#7037] Generics for Datagrid and DatagridInterface (@VincentLanglet)
- [#7005] Information about the matching filters in the search results (@phansys)
- [#7074] Changed
TemplateRegistryExtension
constructor to@internal
(@franmomu) - [#7038] Calls to
FieldDescriptionInterface::getOptions()
by calls toFieldDescriptionInterface::getOption()
in views (@phansys) - [#7044] Calls to
Filter::getOptions()
byFilterInterface::getOption()
in views (@phansys) - [#7032] Update to AdminLTE 2.4.15 (@core23)
- [#7085] Fixed main sidebar toggling (@jordisala1991)
- [#7079] AddIdentifierToQuery phpdoc to reflect the fact that it shouldn't be called with an empty array of identifier (@VincentLanglet)
- [#7080] Using a non existing
Session
instance from theRequest
object atAbstractAdmin::getListMode()
(@phansys) - [#7021] Fixed using the admin translation domain as default for
form_help
twig block (@franmomu) - [#7055] Fixed using the hardcode
id
parameter instead of callingAdminInterface::getIdParameter()
method (@franmomu) - [#7007] Fixed using invalid values in
field_options
of filters (@franmomu)
3.96.0 - 2021-04-06
- [#7008] Names of variables in the skeleton (@axzx)
- [#7003] Compiler Pass classes have been marked as
@internal
. (@franmomu)
- [#7010] Deprecated
Sonata\AdminBundle\Admin\AdminHelper
service alias. (@franmomu) - [#7010] Deprecated
Sonata\AdminBundle\SonataConfiguration
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Command\ExplainAdminCommand
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Command\GenerateObjectAclCommand
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Command\ListAdminCommand
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Command\SetupAclCommand
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Admin\BreadcrumbsBuilder
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Event\AdminEventExtension
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Filter\FilterFactory
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Filter\Persister\SessionFilterPersister
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Model\AuditManager
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Search\SearchHandler
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Templating\TemplateRegistry
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\BCLabelTranslatorStrategy
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\Extractor\AdminExtractor
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\FormLabelTranslatorStrategy
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\NativeLabelTranslatorStrategy
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\NoopLabelTranslatorStrategy
service alias. (@franmomu) - [#7001] Deprecated
Sonata\AdminBundle\Translator\UnderscoreLabelTranslatorStrategy
service alias. (@franmomu) - [#6998] Deprecated
sonata.admin.validator.inline
service. (@franmomu)
- [#7002] Fixed allowing avoid deprecation using
DatagridManagerInterface::getDefaultSortValues()
. (@franmomu) - [#6987] Allow
TypeGuesserInterface::guess()
to returnnull
(@VincentLanglet) - [#6988] Fixed removing deprecations having audit readers tagged. (@franmomu)
- [#6997] Extra calls to
Pager::getCurrentPageResults()
,Pager::countResults()
,Pager::getNbResults()
andPager::getResults()
made atblock_search_result.html.twig
. (@phansys)
3.95.0 - 2021-03-29
- [#6983] Added
sonata.admin.audit_reader
tag for Audit readers. (@franmomu) - [#6965] Added
FieldDescriptionInterface::describesAssociation
,FieldDescriptionInterface::describesSingleValuedAssociation
,FieldDescriptionInterface::describesCollectionValuedAssociation
to abstract the association mapping types. (@franmomu) - [#6965] Added
AbstractFormContractor
base class to centralize association form option validation & defaults. (@franmomu) - [#6946] Added
Sonata\AdminBundle\FieldDescription\BaseFieldDescription
class. (@franmomu) - [#6946] Added
Sonata\AdminBundle\FieldDescription\FieldDescriptionCollection
class. (@franmomu) - [#6946] Added
Sonata\AdminBundle\FieldDescription\FieldDescriptionInterface
interface. (@franmomu) - [#6946] Added
Sonata\AdminBundle\FieldDescription\FieldDescriptionRegistryInterface
interface. (@franmomu)
- [#6978] Deprecated constructing
AdminPoolLoader
passing more than one argument. (@franmomu) - [#6978] Deprecated
AdminPoolLoader
service alias. (@franmomu) - [#6983] Deprecated not tagging an audit reader with the tag
sonata.admin.audit_reader
. (@franmomu) - [#6976] Deprecated not registering filters as a service. (@franmomu)
- [#6979]
MenuBuilderInterface
interface. (@VincentLanglet) - [#6979]
AbstractAdmin::buildSideMenu()
(@VincentLanglet) - [#6979]
AbstractAdmin::buildTabMenu()
(@VincentLanglet) - [#6946] Deprecated
Sonata\AdminBundle\Admin\BaseFieldDescription
class. (@franmomu) - [#6946] Deprecated
Sonata\AdminBundle\Admin\FieldDescriptionCollection
class. (@franmomu) - [#6946] Deprecated
Sonata\AdminBundle\Admin\FieldDescriptionInterface
interface. (@franmomu) - [#6946] Deprecated
Sonata\AdminBundle\Admin\FieldDescriptionRegistryInterface
interface. (@franmomu)
- [#6944] Optimize performance of checking is can access object in
AbstractAdmin::configureActionButtons()
(@peter-gribanov)
3.94.0 - 2021-03-27
- [#6960]
AbstractAdmin::configureDashboardActions()
(@VincentLanglet) - [#6960]
AdminExtension::configureDashboardActions()
(@VincentLanglet) - [#6960]
AdminExtensionInterface::configureDashboardActions()
(@VincentLanglet) - [#6957] Added constant
ListMapper::NAME_ACTIONS
to use instead of_action
(@VincentLanglet) - [#6957] Added constant
ListMapper::NAME_SELECT
to use instead ofselect
(@VincentLanglet) - [#6957] Added constant
ListMapper::NAME_BATCH
to use instead ofbatch
(@VincentLanglet)
- [#6960]
AbstractAdmin::configureDashboardButtons()
(@VincentLanglet) - [#6960]
AdminExtension::configureDashboardButtons()
(@VincentLanglet) - [#6960]
AdminExtensionInterface::configureDashboardButtons()
(@VincentLanglet) - [#6957] Relying on the code
_select
or_batch
to determine if a field description is aselect
or abatch
one. You should rely on the nameListMapper::NAME_SELECT
orListMapper::NAME_BATCH
instead. (@VincentLanglet)
- [#6967] Return typehint of DataSourceInterface::createIterator (@VincentLanglet)
- [#6901] Global search on admins with default filter parameters. (@jorrit)
3.93.0 - 2021-03-15
- [#6937]
ModelManager::reverseTransform()
(@VincentLanglet) - [#6939]
AbstractAdmin::configureActionButtons()
(@VincentLanglet) - [#6939]
AdminExtensionInterface::configureActionButtons()
(@VincentLanglet) - [#6939]
AbstractAdminExtension::configureActionButtons()
(@VincentLanglet)
- [#6937]
ModelManager::modelReverseTransform()
(@VincentLanglet) - [#6939] Overriding
AbstractAdmin::getActionButtons()
(@VincentLanglet)
3.92.0 - 2021-03-13
- [#6922] Added extension point
AbstractAdmin::configureFilterParameters()
to configure/modify filter parameters (@dmaicher) - [#6854] Added
FieldDescriptionFactoryInterface
to create FieldDescription instances (@franmomu) - [#6854] Added
TypeGuesserInterface
to guess the proper FieldDescription type based on its properties (@franmomu) - [#6913] Route parameters "baseRevision" and "compareRevision" for
CRUDController::historyCompareRevisionsAction()
(@phansys)
- [#6885]
AbstractAdmin::buildForm()
(@VincentLanglet) - [#6885]
AbstractAdmin::buildDatagrid()
(@VincentLanglet) - [#6885]
AbstractAdmin::buildShow()
(@VincentLanglet) - [#6885]
AbstractAdmin::buildList()
(@VincentLanglet) - [#6885]
AbstractAdmin::canAccessObject()
in favor ofAbstractAdmin::hasAccess()
(@VincentLanglet) - [#6885]
AdminInterface::canAccessObject()
(@VincentLanglet) - [#6885]
AdminInterface::configureActionButtons()
andAbstractAdmin::configureActionButtons()
will become protected (@VincentLanglet) - [#6854] Deprecated
ModelManagerInterface::getNewFieldDescriptionInstance()
(@franmomu) - [#6913] Route parameters "base_revision" and "compare_revision" for
CRUDController::historyCompareRevisionsAction()
(@phansys)
- [#6928] Fix wrong phpstan param on
FilterInterface::filter() method
(@core23) - [#6920] Issue "Right side of && is always true" detected by PHPStan (@phansys)
3.91.1 - 2021-03-06
3.91.0 - 2021-03-02
- [#6878] Passing a fieldDescription option
name
(@VincentLanglet)
- [#6895] Fix computing changed filter values (@kirya-dev)
3.90.0 - 2021-02-25
- [#6877] Added
AbstractAdmin::mergeParameters()
to merge parameters but replace them when it's a subarray. (@willemverspyck) - [#6864] Added
AbstractAdmin::alterObject()
(@VincentLanglet) - [#6882] Add generic information for child admins (@core23)
- [#6883] Added
AbstractAdmin::createNewInstance()
to allow the user to customize how to create their objects. (@franmomu) - [#6873]
AbstractAdmin::configurePersistentParameters()
(@VincentLanglet) - [#6873]
AdminExtensionInterface::configurePersistentParameters()
(@VincentLanglet)
- [#6864] Overriding
AbstractAdmin::getObject()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::preUpdate()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::preCreate()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::preDelete()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::postUpdate()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::postCreate()
(@VincentLanglet) - [#6869]
LifecycleHookProviderInterface::postDelete()
(@VincentLanglet) - [#6883] Deprecated
ModelManagerInterface::getModelInstance()
method in favor ofAbstractAdmin::createNewInstance()
. (@franmomu) - [#6873] Overriding
AbstractAdmin::getPersistentParameters()
(@VincentLanglet) - [#6873]
AdminExtensionInterface::getPersistentParameters()
(@VincentLanglet)
- [#6877] Fix merge problem for filters with array value (@willemverspyck)
- [#6889] Show XHR errors on "one to many" and "many to many" forms (@phansys)
- [#6411] Prevent false deprecation notice when accessing an item in a child admin that has a Many to Many relationship with the parent item. (@jorrit)
- [#6871] Fix lost filter value when only type submitted (@kirya-dev)
- [#6871] Allow submit empty value when default filter non empty (@kirya-dev)
- [#6871] Invisible disabling filters (using remove name) (@kirya-dev)
3.89.1 - 2021-02-16
- [#6867] Handle case when
attachAdminClass()
does not find an admin to attach (@VincentLanglet)
3.89.0 - 2021-02-16
- [#6821]
Pool::getAdminByFieldDescription()
(@VincentLanglet) - [#6821]
AdminClassNotFoundException
(@VincentLanglet) - [#6821]
AdminCodeNotFoundException
(@VincentLanglet) - [#6821]
TooManyAdminClassException
(@VincentLanglet) - [#6821] A tag attribute
default: true
for the tagsonata.admin
to define a default admin for a specific class (@VincentLanglet) - [#6776] Added
RouteCollection::getRouteName
(@VincentLanglet) - [#6776] Added
RouteCollectionInterface::getRouteName
(@VincentLanglet) - [#6814] Added some
Sonata\AdminBundle\Admin\AbstractAdmin::configureFormOptions()
to do great stuff. (@rgrassian) - [#6817] A block
table
to override the whole datagrid table in thebase_list.html.twig
(@VincentLanglet) - [#6789] A callback with a possibility to modify each individual item in the response. (@keshancs)
- [#6789] A way to customize any autocomplete select2 properties in js via adding sonata_type_model_autocomplete_select2_options_js block before initializing select2 element because select2 doesn't allow modification of several options after it has been initialized, you can only destroy it and initialize again from scratch. (@keshancs)
- [#6789] Set error bubbling to false - prevent passing error to parent form elements, which occurs by default for compound form types. (@keshancs)
- [#6837]
FieldDescription
accessor
option (@VincentLanglet) - [#6850] Added
AbstractAdmin::alterNewInstance()
(@VincentLanglet)
- [#6789] The autocomplete item list is now independent of filters set in the corresponding list via removing its filters. Before these changes, it returned only items that matched the selected filter. (@keshancs)
- [#6844] From
DatagridMapper::add($name, $type, $filterOptions = [], $fieldType = null, $fieldOptions = null, $fieldDescriptionOptions = [])
toDatagridMapper::add($name, $type, $filterOptions = [], $fieldDescriptionOptions = [])
(@VincentLanglet) - [#6827]
ProxyQueryInterface::execute(array $params = [], ?int $hydrationMode = null)
signature toProxyQueryInterface::execute()
(@VincentLanglet)
- [#6821]
Pool::hasSingleAdminByClass()
(@VincentLanglet) - [#6798] FieldDescription
parameters
option. (@VincentLanglet) - [#6814] Deprecated
Sonata\AdminBundle\Admin\AbstractAdmin::formOptions
property. (@rgrassian) - [#6837]
FieldDescription
code
option (@VincentLanglet) - [#6850] Overriding
AbstractAdmin::getNewInstance()
(@VincentLanglet) - [#6794] Deprecated
Pool::setTemplateRegistry()
method. (@franmomu)
- [#6856] Handling of JSON responses at
Admin.setup_xeditable()
. (@phansys) - [#6783] Fixed phpdoc for
Sonata\AdminBundle\Form\DataTransformer\ModelToIdPropertyTransformer::$property
which can bestring[]
as well (@dmaicher) - [#6818] Stop displaying the filter dropdown with no usable filters (@VincentLanglet)
- [#6824] Do not add a '-' between the export button and the pager results if there is no pager results. (@VincentLanglet)
- [#6778] How
AdminHelper::appendFormFieldElement
renders nested forms. (@vladyslavstartsev) - [#6784] Default "show" template for type "float" from SonataIntlBundle. (@phansys)
3.88.0 - 2021-01-18
- [#6767] Allow PHP 8 (@VincentLanglet)
- [#6766] Added
Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface::setTemplate()
(@wbloszyk) - [#6766] Added
Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface::setTemplates()
(@wbloszyk) - [#6769] Translation file for
bs
(Bosnian) (@tambait) - [#6769] Translation files for
sr_Latn
&sr_Cyrl
(Serbian Latin & Cyrillic script) (@tambait)
- [#6766] Removed deprecations for
Sonata\AdminBundle\Admin\AbstractAdmin::setTemplate()
(@wbloszyk) - [#6766] Removed deprecations for
Sonata\AdminBundle\Admin\AbstractAdmin::setTemplates()
(@wbloszyk)
3.87.0 - 2021-01-12
- [#6676] Added
Sonata\AdminBundle\Twig\Extension\SecurityExtension
(@tambait) - [#6676] Added
Sonata\AdminBundle\Twig\Extension\CanonicalizeExtension
(@tambait) - [#6676] Added
Sonata\AdminBundle\Twig\Extension\XEditableExtension
(@tambait) - [#6676] Added
Sonata\AdminBundle\Twig\Extension\RenderElementExtension
(@tambait) - [#6760] Added
PagerInterface::getCurrentPageResults()
(@VincentLanglet) - [#6759] Add generics to
PagerInterface
. (@VincentLanglet) - [#6729] Added
default_controller
to configure the default controlled used by the admins. (@franmomu)
- [#6676] Deprecated
SonataAdminExtension::MOMENT_UNSUPPORTED_LOCALES
constant (@tambait) - [#6676] Deprecated
SonataAdminExtension::setXEditableTypeMapping()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getXEditableType()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getXEditableChoices()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getCanonicalizedLocaleForMoment()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getCanonicalizedLocaleForSelect2()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::isGrantedAffirmative()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::renderListElement()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::renderViewElement()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::renderViewElementCompare()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::renderRelationElement()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getTemplate()
method (@tambait) - [#6676] Deprecated
SonataAdminExtension::getTemplateRegistry()
method (@tambait) - [#6734] Deprecate
DateOperatorType::TYPE_NULL
andDateOperatorType::TYPE_NOT_NULL
(@VincentLanglet) - [#6760] Added
PagerInterface::getResults()
(@VincentLanglet)
- [#6764] Added missing phpdoc type declarations. (@franmomu)
- [#6758] Fixed
Pool
definition arguments. (@franmomu)
3.86.0 - 2021-01-09
- [#6732] Added
PagerInterface::countResults
(@dmaicher) - [#6700] Added
AbstractAdmin::getDefaultFilterParameters()
to get default filter parameters (@kirya-dev) - [#6746]
Added BaseGroupMapper::removeGroup()
(@VincentLanglet) - [#6746]
Added BaseGroupMapper::removeTab()
(@VincentLanglet)
- [#6700] Only changed (non default, non empty) filters will be submitted (@kirya-dev)
- [#6732]
PagerInterface::getNbResults()
in favour ofcountResults()
(@dmaicher) - [#6732]
PagerInterface::setNbResults(...)
(@dmaicher) - [#6732]
PagerInterface::$nbResults
(@dmaicher) - [#6735] Deprecated
Pool::setAdminServiceIds
in favor of passing service ids as argument 2 to the constructor (@franmomu) - [#6735] Deprecated
Pool::setAdminGroups
in favor of passing service ids as argument 3 to the constructor (@franmomu) - [#6735] Deprecated
Pool::setAdminClasses
in favor of passing service ids as argument 4 to the constructor (@franmomu) - [#6751] Deprecated
CRUDController::configure()
method, to configure the associated admin, you should callCRUDController::configureAdmin()
instead (@franmomu) - [#6752] Deprecated
TemplateRegistryInterface::TYPE_*
constants, they have been moved toFieldDescriptionInterface
(@franmomu)
3.85.0 - 2021-01-02
- [#6727] Variable "admin" does not exist in
CRUD/Association/edit_many_script.html.twig
(@ggabrovski)
3.84.0 - 2021-01-02
- [#6724] Added support for fieldName with dot for
BaseFieldDescription::getFieldValue()
(@VincentLanglet) - [#6713] Added
AbstractTaggedAdmin::getListModes()
(@VincentLanglet) - [#6713] Added
TaggedAdminInterface::getListModes()
(@VincentLanglet) - [#6699] Added
RouteCollectionInterface
imported from4.x
to ease upgrading process (@franmomu) - [#6720] One argument to
BaseFieldDescription::construct()
to set the field name (@VincentLanglet) - [#6541]
getPage()
to the PagerInterface (@VincentLanglet) - [#6541]
getFirstPage()
to the PagerInterface (@VincentLanglet) - [#6541]
getLastPage()
to the PagerInterface (@VincentLanglet) - [#6541]
getNextPage()
to the PagerInterface (@VincentLanglet) - [#6541]
getPreviousPage()
to the PagerInterface (@VincentLanglet) - [#6541]
isFirstPage()
to the PagerInterface (@VincentLanglet) - [#6541]
isLastPage()
to the PagerInterface (@VincentLanglet) - [#6541]
getNbResults()
to the PagerInterface (@VincentLanglet) - [#6541]
getLinks()
to the PagerInterface (@VincentLanglet) - [#6541]
haveToPaginate()
to the PagerInterface (@VincentLanglet) - [#6541]
getQuery()
to the PagerInterface (@VincentLanglet) - [#6614] Added
TaggedAdminInterface
(@VincentLanglet) - [#6614] Added
AbstractTaggedAdmin
(@VincentLanglet) - [#6614] Added
AbstractAdmin::hasFilterPersister()
method (@VincentLanglet) - [#6654] Added
Sonata\AdminBundle\Filter\Filter::active
property (@VincentLanglet)
- [#6716]
FieldDescriptionInterface::getFieldValue()
(@VincentLanglet) - [#6720]
FieldDescriptionInterface::setFieldMapping()
(@VincentLanglet) - [#6720]
BaseFieldDescription::setFieldMapping()
(@VincentLanglet) - [#6541]
AbstractPager::getCurrentMaxLink()
(@VincentLanglet) - [#6541]
AbstractPager::getMaxRecordLimit()
(@VincentLanglet) - [#6541]
AbstractPager::setMaxRecordLimit()
(@VincentLanglet) - [#6541]
AbstractPager::getCursor()
(@VincentLanglet) - [#6541]
AbstractPager::setCursor()
(@VincentLanglet) - [#6541]
AbstractPager::getObjectByCursor()
(@VincentLanglet) - [#6541]
AbstractPager::getCurrent()
(@VincentLanglet) - [#6541]
AbstractPager::getNext()
(@VincentLanglet) - [#6541]
AbstractPager::getPrevious()
(@VincentLanglet) - [#6541]
AbstractPager::getFirstIndex()
(@VincentLanglet) - [#6541]
AbstractPager::getLastIndex()
(@VincentLanglet) - [#6541]
AbstractPager::getParameters()
(@VincentLanglet) - [#6541]
AbstractPager::getParameter()
(@VincentLanglet) - [#6541]
AbstractPager::hasParameter()
(@VincentLanglet) - [#6541]
AbstractPager::setParameter()
(@VincentLanglet) - [#6614] Deprecate instantiating a new
AbstractAdmin
class withnull
as third argument (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getManagerType()
when no manager type is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getFilterPersister()
when no filter persister is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getModelManager()
when no model manager is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getDataSource()
when no data source is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getFormContractor()
when no form contractor is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getShowBuilder()
when no show builder is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getListBuilder()
when no list builder is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getDatagridBuilder()
when no datagrid builder is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getTranslator()
when no translator is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getConfigurationPool()
when no pool is set (@VincentLanglet) - [#6614] Deprecate
AbstractAdmin::setValidator()
(@VincentLanglet) - [#6614] Deprecate
AbstractAdmin::getValidator()
(@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getSecurityHandler()
when no security handler is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getMenuFactory()
when no menu factory is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getRouteBuilder()
when no route builder is set (@VincentLanglet) - [#6614] Deprecate calling
AbstractAdmin::getLabelTranslatorStrategy()
when no label translator strategy is set (@VincentLanglet) - [#6694] Deprecated passing other type than
string
ornull
as argument 2 constructingFormBuilderIterator
(@franmomu) - [#6654]
Sonata\AdminBundle\Filter\Filter::getValue()
(@VincentLanglet) - [#6654]
Sonata\AdminBundle\Filter\Filter::setValue()
(@VincentLanglet)
- [#6702] Stop throwing an exception when the
_per_page
filter parameter is not set (@VincentLanglet) - [#6722] Replaced 'array[0]' by 'array|first' to fix edit_many_to_many template when children index does not start with 0 (@nws-jstorm)
- [#6677] Fixed using
admin_pool
to fetch an option instead ofsonata_config
(@franmomu) - [#6694] Fixed iterating over children names in
AdminHelper::getChildFormBuilder
recursively (@franmomu) - [#6675] Fixed disallowing sorting in a field defined with a closure in
associated_property
(@franmomu)
3.83.0 - 2020-12-08
- [#6651] Add support for global admin extensions via config (@core23)
- [#6640] Added
SonataConfiguration
class to handle sonata global configuration. (@franmomu) - [#6640] Added global Twig
sonata_config
to access global configuration from Twig. (@franmomu) - [#6648] Added 3 new arguments to
BaseFieldDescription::__construct()
to do create a FieldDescription with the mapping. (@franmomu)
- [#6659] Deprecated
Pool::getGroups()
method. (@franmomu) - [#6659] Deprecated
Pool::hasGroup()
method. (@franmomu) - [#6659] Deprecated
Pool::getAdminsByGroup()
method. (@franmomu) - [#6633]
AbstractAdmin::$validator
property (@tambait) - [#6633]
AdminInterface::getValidator
method specification (@tambait) - [#6633]
AdminInterface::setValidator
method specification (@tambait) - [#6633]
AbstractAdmin::getValidator
method implementation (@tambait) - [#6633]
AbstractAdmin::setValidator
method implementation (@tambait) - [#6633]
AddDependencyCallsCompilerPass
- validator related keys (@tambait) - [#6633]
DependencyInjection/Configuration
- validator related config option (@tambait) - [#6640] Deprecated
Pool::getTitle()
method. (@franmomu) - [#6640] Deprecated
Pool::getTitleLogo()
method. (@franmomu) - [#6640] Deprecated
Pool::getOption()
method. (@franmomu) - [#6640] Deprecated global Twig
sonata_admin
variable. (@franmomu) - [#6648] Deprecated
FieldDescriptionInterface::setFieldMapping()
method. (@franmomu) - [#6648] Deprecated
FieldDescriptionInterface::setAssociationMapping()
method. (@franmomu) - [#6648] Deprecated
FieldDescriptionInterface::setParentAssociationMappings()
method. (@franmomu) - [#6648] Deprecated
FieldDescriptionInterface::setMappingType()
method. (@franmomu) - [#6648] Deprecated
BaseFieldDescription::setMappingType()
method. (@franmomu)
- [#6665] Fixed triggering a deprecation in a check. (@franmomu)
- [#6662] Incorrect object being passed to the view when rendering the history compare action (@tamcy)
3.82.0 - 2020-12-05
- [#6643] Added generics to
CRUDController
(@VincentLanglet) - [#6631] Option to globally override the data source of all the admin (@VincentLanglet)
- [#6547] Added
row_attr
to the form_row container. (@nieuwenhuisen) - [#6609]
AdminSearchCompilerPass
in order to configure which admins must support search. (@phansys) - [#6609] Support for
global_search
attribute insonata.admin
tags, which admits boolean values. (@phansys)
- [#6559] Removed alias from
ModelManagerInterface::createQuery
method (@neok) - [#6214]
CRUDController::handleXmlHttpRequestSuccessResponse
method is now protected (@nieuwenhuisen) - [#6214]
CRUDController::handleXmlHttpRequestErrorResponse
method is now protected (@nieuwenhuisen) - [#6630] Replaced jQuery "load()" with "on()" in Admin.js (@timwentzell)
- [#6632] Twig templates: "list_percent", "show_percent", "list_currency" and "show_currency" (@willemverspyck)
- [#6618]
AdminInterface::validate
method specification (@tambait) - [#6618]
AbstractAdmin:validate
method implementation (@tambait) - [#6618]
AbstractAdmin::attachInlineValidator()
method (@tambait) - [#6618]
AdminExtensionInterface::validate()
method specification (@tambait) - [#6618]
AbstractAdminExtension::validate()
method implementation (@tambait) - [#6622] Referencing to DashboardAction and SearchAction by FQCN class instead of id. (@VincentLanglet)
- [#6634] Deprecated
Pool::getPropertyAccessor()
method. (@franmomu) - [#6634] Deprecated not passing and instance of
PropertyAccessor
as argument 1 toSonata\AdminBundle\Admin\AdminHelper
constructor. (@franmomu) - [#6634] Deprecated not passing and instance of
PropertyAccessor
as argument 5 toSonata\AdminBundle\Action\SetObjectFieldValueAction
constructor. (@franmomu) - [#6634] Deprecated not passing and instance of
PropertyAccessor
as argument 5 toSonata\AdminBundle\Twig\Extension\SonataAdminExtension
constructor. (@franmomu)
- [#6529] Explicitly cast types in
CRUDController::batchAction()
(@peter-gribanov)
3.81.1 - 2020-11-21
- [#6597]
AdminInterface
extendsMutableTemplateRegistryAwareInterface
instead ofTemplateRegistryAwareInterface
(@VincentLanglet)
3.81.0 - 2020-11-15
- [#6593] Not passing 'show', 'hide' or 'fade' as argument 4 to
Sonata\AdminBundle\Block\AdminSearchBlockService()
(@VincentLanglet)
- [#6591] Apply filter even if the operator is not provided (@VincentLanglet)
3.80.0 - 2020-11-13
- [#6585]
NOT_EQUAL
operator forStringOperatorType
(@VincentLanglet)
- [#6402] Delegate filter query by empty value to filters (@peter-gribanov)
3.79.0 - 2020-11-09
- [#6565] Added
collection_by_reference
option for AdminType (@VincentLanglet) - [#6556] Added
Sonata\AdminBundle\Templating\AbstractTemplateRegistry
(@wbloszyk) - [#6556] Added
Sonata\AdminBundle\Templating\MutableTemplateRegistry
(@wbloszyk) - [#6556] Added
Sonata\AdminBundle\Templating\MutableTemplateRegistryAwareInterface
(@wbloszyk) - [#6463] Added DataSourceInterface (@VincentLanglet)
- [#6565]
collection_by_reference
is used instead ofby_reference
inAdminType in order to know which call should be used between
ObjectManipulator::addInstance()and
ObjectManipulator::setObject()` (@VincentLanglet) - [#6556] Changed
Sonata\AdminBundle\Templating\TemplateRegistryAwareInterface
to handle instances ofTemplateRegistryInterface
. (@wbloszyk) - [#6548] Prevent load entities when pass empty choices for
ModelType
, use null for native loading (@kirya-dev)
- [#6556] Deprecated
Sonata\AdminBundle\Templating\TemplateRegistry:setTemplate()
(@wbloszyk) - [#6556] Deprecated
Sonata\AdminBundle\Templating\TemplateRegistry:setTemplates()
(@wbloszyk) - [#6458]
DatagridManagerInterface
with no replacement (@VincentLanglet) - [#6463] Deprecated not setting a DataSourceInterface to an Admin (@VincentLanglet)
- [#6463] Deprecated
ModelManagerInterface::getDataSourceIterator()
(@VincentLanglet)
- [#6571] If no label is provided to the filter, the default label is used following the label translator strategy (@VincentLanglet)
- [#6574] Showing toggle filter button when the filter is hidden in the admin list (@phansys)
- [#6534] Allow usage object properties to get/set instance in
ObjectManipulator
(@peter-gribanov)
3.78.1 - 2020-10-28
- [#6530] Added the ability to scroll the filter list dropdown (@VincentLanglet)
3.78.0 - 2020-10-23
- [#6486] Added
Pool::hasSingleAdminByClass()
(@VincentLanglet) - [#6468] Add phpdoc to array returns (@core23)
- [#6513] Html with a links in no_result_content (@axzx)
- [#6500] When accessing on a non-existent List page, it displays a link to go to page 1 instead of a button to create a new entity (@VincentLanglet)
- [#6497] Setting default values for filters and sorting even without a request (@VincentLanglet)
- [#6503] Instantiate a FieldDescription without passing the name as first argument (@VincentLanglet)
- [#6515] Deprecate
FilterInterface::filter()
method (@VincentLanglet) - [#6510] Method
Validators::validateEntityName()
(@phansys) - [#6320] Deprecated
Sonata\AdminBundle\Controller\CRUDController::getRestMethod()
method in favor ofSymfony\Component\HttpFoundation\Request::getMethod()
(@phansys) - [#6480] Deprecated not configuring
acl_user_manager
service explicitly when usingfriendsofsymfony/user-bundle
(@franmomu) - [#6480] Deprecated configuring
acl_user_manager
service without implementingAdminAclUserManagerInterface
(@franmomu)
- [#6509] Passing an empty array as argument 3 for implementations of
ModelManagerInterface::addIdentifiersToQuery()
(@phansys) - [#6507] Pool support of group without admin (@VincentLanglet)
- [#6320] Fixed return value from
CRUDController::getRestMethod()
respectingRequest::getHttpMethodParameterOverride()
(@phansys) - [#6498] Call \Knp\Menu\MenuItem::getLabel() method directly in twig template to avoid a possible side effect from \ArrayAccess (@VincentLanglet)
- [#6525] Missing ellipsis in some truncated word (@phansys)
- [#6523] fixed BC break with getting the translation domain for nested fields on a one-to-many inline edit table view (@dmaicher)
- [#6438] AdminType with CollectionType passed by reference (@VincentLanglet)
3.77.0 - 2020-10-16
- [#6315]
Changed multiple calls to
ModelManagerInterface::find()
withModelManagerInterface::findBy()
in order to avoid multiple transactions. (@phansys) - [#6435] Default mosaic background is now a file instead of a data URI. (@jorrit)
- [#6451] Moved confirmExit to window.load (@fastnloud)
- [#6420]
Deprecate Passing a third argument to
GenerateObjectAclCommand::__construct()
(@VincentLanglet) - [#6475]
Deprecated
Pool::getContainer()
method. (@franmomu) - [#6350] Deprecate usage of a null groupItem label (@VincentLanglet)
- [#6413]
Deprecate using shortcut notation for user_model in favor of FQCN in
GenerateObjectAclCommand
(@franmomu)
- [#6466] Solve problem with unset batch checkbox`s after back via browser history (@kirya-dev)
- [#6401] Fixed incorrect inline table / tabs collection translation domain (@EmmanuelVella)
- [#6350] Keep support for a null groupItem label (@VincentLanglet)
- [#6429]
Superfluous deprecation notice in
getCurrentChild()
when callinggetCurrentChildAdmin()
. (@jorrit) - [#6414]
Remove calls to deprecated method
ModelInterface::getPaginationParameters()
. (@franmomu) - [#6414]
Remove calls to deprecated method
ModelInterface::getSortParameters()
. (@franmomu) - [#6421] Call
to deprecated
getTargetEntity
(@jordisala1991) - [#6412]
Deprecation notice in
MergeCollectionListener
when using theModelType
form type with themodel_manager
option set. (@jorrit)
- [#6437] Removed several large unnecessary resources from public/bundles/sonatacore/vendor. (@jorrit)
3.76.0 - 2020-09-20
- [#6390]
Sonata\AdminBundle\Templating\TemplateRegistryAwareInterface
withgetTemplateRegistry()
,hasTemplateRegistry()
andsetTemplateRegistry()
methods (@wbloszyk) - [#6378] Added option to load different Admin LTE skins (@fastnloud)
- [#6381] Added
ModelManagerInterface::supportsQuery()
(@VincentLanglet) - [#6387]
Sonata\AdminBundle\Admin\AbstractAdmin::hasTemplateRegistry(): bool
(@wbloszyk) - [#6377] Add type hints to data transformers (@core23)
- [#6377] Add type hints to util classes (@core23)
- [#6348] Add
AbstractAdmin::configureExportFields
extension point (@core23) - [#6361] Added generic type hints to (nearly) all admin interfaces (@core23)
- [#6369] Added support for
symfony/config
5.1. (@franmomu) - [#6369] Added support for
symfony/dependency-injection
5.1. (@franmomu) - [#6369] Added support for
symfony/routing
5.1. (@franmomu) - [#6363] Allow
symfony/security-csrf
andsymfony/asset
^5.1 (@jordisala1991) - [#6344] Support for symfony/http-foundation and symfony/validator 5.1 (@dmaicher)
- [#6349] Add generics to
ModelManagerInterface
(@core23)
- [#6364] Prevent
addFormFieldDescription
if field role no granted (@kirya-dev)
- [#6381] Create a new instance of ModelChoiceLoader with a query unsupported by the modelManager (@VincentLanglet)
- [#6387]
Sonata\AdminBundle\Admin\AbstractAdmin::setTemplates()
(@wbloszyk) - [#6387]
Sonata\AdminBundle\Admin\AbstractAdmin::setTemplate()
(@wbloszyk) - [#6386] Deprecated
ProxyQueryInterface::getUniqueParameterId
. (@franmomu) - [#6386] Deprecated
ProxyQueryInterface::entityJoin
. (@franmomu) - [#6311] Passing another type than
object
toAbstractAdmin::toString
(@VincentLanglet) - [#6311] Passing
null
toAbstractAdmin::getUrlSafeIdentifier
,AbstractAdmin::getNormalizedIdentifier
,AbstractAdmin::getId
(@VincentLanglet) - [#6311] Using
GetShortObjectDescriptionAction
with an empty objectId. (@VincentLanglet)
- [#6394] Fixed ProxyQueryInterface::getSortBy and ProxyQueryInterface::getSortOrder phpdoc (@VincentLanglet)
- [#6377] Allow null transformation in ModelsToArrayTransformer (@core23)
- [#5937] Allow use Symfony Data Transformers in list fields editable (@peter-gribanov)
- [#6372] The default
group
now correctly use the admin translation domain when using the admin label. (@VincentLanglet) - [#6335] Remove unnecessary span wrapper for field help. Merge styles with paragraph. (@kirya-dev)
- [#6335] Prevent too many deprecation notices. (@kirya-dev)
- [#6334] Long time deprecated and unused
setDefaultOptions
methods usingSymfony\Component\OptionsResolver\OptionsResolverInterface
(@dmaicher)
3.75.0 - 2020-08-26
- [#6312] Deprecated
Sonata\AdminBundle\Model\ModelManagerInterface
collection-related methods (@VincentLanglet) - [#6288] Deprecated passing
callable
that does not returnSymfony\Component\Routing\Route
as$element
(2nd argument) toSonata\AdminBundle\Route\RouteCollection::addElement($code, $element)
(@vladyslavstartsev)
- [#6325] Fixed allowing valid action names in
CRUDController::batchAction()
(@phansys) - [#6321] Fixed mutating the original request at
CRUDController::batchAction()
(@phansys) - [#6271] "Notice: Undefined index: idx" if there are no list items are selected (@nieuwenhuisen)
3.74.0 - 2020-08-22
- [#6299] Added support for symfony/expression-language:^5.1 (@phansys)
- [#6299] Added support for symfony/options-resolver:^5.1 (@phansys)
- [#6299] Added support for symfony/property-access:^5.1 (@phansys)
- [#6127] Added support for
doctrine/common
3 (@jaikdean) - [#6256] Added compatibility with Twig 3 (@franmomu)
- [#6252] Support for 'label_translation_parameters' in filter form types (@tkuska)
- [#6212] Add support for SonataBlockBundle 4.0 (@jordisala1991)
- [#6251] Cast $allItems to an boolean to prevent typehint error (@nieuwenhuisen)
- [#6308] Passing a Pool to SearchHandler class (@VincentLanglet)
- [#6291] Deprecated
Sonata\AdminBundle\Datagrid\ProxyQueryInterface::getSingleScalarResult
(@VincentLanglet) - [#6238] Deprecated
base_filter_field.html.twig
template (@franmomu) - [#6238] Deprecated
base_inline_edit_field.html.twig
template (@franmomu) - [#6238] Deprecated
base_standard_edit_field.html.twig
template (@franmomu) - [#6238] Deprecated
edit_array.html.twig
template (@franmomu) - [#6238] Deprecated
edit_boolean.html.twig
template (@franmomu) - [#6238] Deprecated
edit_file.html.twig
template (@franmomu) - [#6238] Deprecated
edit_integer.html.twig
template (@franmomu) - [#6238] Deprecated
edit_sonata_type_immutable_array.html.twig
template (@franmomu) - [#6238] Deprecated
edit_string.html.twig
template (@franmomu) - [#6238] Deprecated
edit_text.html.twig
template (@franmomu) - [#6215] Deprecated
BaseFieldDescription::setHelp()
andBaseFieldDescription::getHelp()
(@franmomu) - [#6215] Deprecated passing
help
option toBaseFieldDescription::setOptions()
(@franmomu) - [#6215] Deprecated
FormMapper::setHelps()
andFormMapper:: addHelp()
(@franmomu) - [#6215] Deprecated passing
help
option toFormMapper::add()
third argument containing HTML code without also passinghelp_html
withtrue
value (@franmomu)
- [#6297] ObjectManipulator::setObject does not throw an error anymore for DoctrineODM Embedded collections (@VincentLanglet)
3.73.0 - 2020-07-31
- [#6200] Added support for columns not belonging to the model to the list view. (@jorrit)
- [#6206] Support for 'help_translation_parameters' in form types (@tkuska)
- [#6206] Support for 'label_translation_parameters' in form types (@tkuska)
- [#6225] Stop to hide default filters in order to provide a more natural UX-behavior. (@kirya-dev)
- [#6220] Passing
null
or an instance ofEngineInterface
as argument 2 when instantiatingSonata\AdminBundle\Block\AdminListBlockService
,Sonata\AdminBundle\Block\AdminSearchBlockService
orSonata\AdminBundle\Block\AbstractBlockService
(@VincentLanglet) - [#6225] Abstract:: isDefaultFilter method. (@kirya-dev)
- [#6234] Deprecated
ModelManagerInterface::getParentFieldDescription
. (@franmomu) - [#6200] Calling
SonataAdminExtension::getValueFromFieldDescription()
(@jorrit)
- [#6219] Allow to use AdminType with unidirectional field. (@VincentLanglet)
- [#6222] Set the Accept header for ajaxSubmit in
Resources/views/CRUD/Association/edit_many_script.html.twig
to "application/json" to prevent 406 (Not acceptable) error. (@nieuwenhuisen) - [#6222] CRUDController::handleXmlHttpRequestErrorResponse also accepts the wildcard Accept header "/". (@nieuwenhuisen)
- [#6222] CRUDController::handleXmlHttpRequestSuccessResponse also accepts the wildcard Accept header "/". (@nieuwenhuisen)
- [#6224] AdminExtractor sets subject created by
getNewInstance()
on Admin instance before extracting translatable strings. (@jorrit) - [#6144] Can't use
datetime
field type as editable (@peter-gribanov) - [#6167] Show and edit
date
anddatetime
in the same timezone (@peter-gribanov) - [#6223] Admin has no active subclass exception in edit_many_script.html.twig after adding a ModelType field. (@nieuwenhuisen)
- [#6208] Fixed checking if
FieldDescriptionInterface::getTargetModel()
exists before calling it. (@franmomu) - [#6112] Allow to use parameters/placeholders in (sidebar) menu label translation. (@pavol-tk)
3.72.0 - 2020-07-14
- [#6195] Fixed design of validation message error when using a inline table collection. (@VincentLanglet)
- [#6171] EmbeddedAdmin now correctly set the parent object when creating a new instance. (@VincentLanglet)
- [#6171] Error message is correctly displayed for CollectionType (@VincentLanglet)
- [#6193] Fixed default
[]
value for every non-nullable array class properties (@VincentLanglet) - [#5799] Stop calling
mb_strlen()
on null inRetrieveAutocompleteItemsAction
(@mar20) - [#6183] Fix form one-to-many tabs translations (@EmmanuelVella)
3.71.1 - 2020-06-30
3.71.0 - 2020-06-28
- [#6134]
Added
StringOperatorType
(@napestershine)
- [#6168] Fix unit tests (@peter-gribanov)
3.70.1 - 2020-06-21
- Allow
null
argument forStringExtension
constructor
3.70.0 - 2020-06-19
- Added missing
ar
translations - Added missing
bg
translations - Added missing
ca
translations - Added missing
cs
translations - Added missing
de
translations - Added missing
es
translations - Added missing
eu
translations - Added missing
fa
translations - Added missing
hr
translations - Added missing
hu
translations - Added missing
it
translations - Added missing
ja
translations - Added missing
lb
translations - Added missing
lt
translations - Added missing
lv
translations - Added missing
no
translations - Added missing
pl
translations - Added missing
pt
translations - Added missing
pt_BR
translations - Added missing
ro
translations - Added missing
ru
translations - Added missing
sk
translations - Added missing
sl
translations - Added missing
sv_SE
translations - Added missing
tr
translations - Added missing
uk
translations - Added missing
zn_CH
translations
getFormFieldDescriptions
,getFormFieldDescription
andhasFormFieldDescription
doesn't build form anymore if the build already started, avoiding an infinite loop.getShowFieldDescriptions
,getShowFieldDescription
andhasShowFieldDescription
doesn't build show anymore if the build already started, avoiding an infinite loop.getListFieldDescriptions
,getListFieldDescription
andhasListFieldDescription
doesn't build list anymore if the build already started, avoiding an infinite loop.getFilterFieldDescriptions
,getFilterFieldDescription
andhasFilterFieldDescription
doesn't build datagrid anymore if the build already started, avoiding an infinite loop.
- Deprecated
sonata_admin.options.legacy_twig_text_extension
configuration
3.69.1 - 2020-06-16
- Infinite recursion error when mapping form fields with a help option set.
3.69.0 - 2020-06-14
- Added
FieldDescriptionInterface::getParent()
. - Added
FieldDescriptionInterface::getAssociationAdmin()
. - Added
FieldDescriptionInterface::getAdmin()
. - Body classes
sonata-icheck
andsonata-select2
when iCheck or Select2 are enabled. - Added
Sonata\AdminBundle\EventListener\AssetsInstallCommandListener
to addsonatacore
asssets when SonataCoreBundle is not installed
- Type guessing the
_action
list field. - Styling of checkboxes and radio buttons when iCheck is disabled.
- Changed use of
truncate
filter withu
filter. - ignore
sonata.admin.configuration.legacy_twig_text_extension
when SonataCoreBundle is not installed
- Calling
AbstractAdmin::getChild()
when there is no child. - Calling
BaseFieldDescription::getParent()
when there is no parent. - Calling
BaseFieldDescription::getAssociationAdmin()
when there is no association admin. - Calling
BaseFieldDescription::getAdmin()
when there is no admin. - Calling
Pool::getAdminByClass()
when there is no admin for the class. - Deprecated
Sonata\AdminBundle\Twig\Extension\UnicodeString
in favor ofSymfony\Component\String\UnicodeString
. - Deprecated
sonata_truncate
in favor ofu.truncate
. - Deprecated
FieldDescriptionInterface::getTargetEntity()
in favor ofFieldDescriptionInterface::getTargetModel()
; - Deprecated
AdminHelper::getEntityClassName()
in favor ofAdminHelper::getModelClassName()
; - Deprecated
GenerateObjectAclCommand::getUserEntityClass()
in favor ofGenerateObjectAclCommand::getUserModelClass()
. - Deprecated
--user_entity
option in favor of--user_model
atsonata:admin:generate-object-acl
command.
- remove all
SonataCoreBundle
dependencies
3.68.0 - 2020-05-31
- Added
TemplateRegistry::TYPE_*
constant to be used instead of string value. - Added
format
option fortime
field type.
- Fixed exposing missing
object
variable in history compare view. - Menu item
label_catalogue
correctly use the default valuedefault_label_catalogue
- Menu item
icon
correctly use the default valuedefault_icon
- Render of CKeditor field when embedded in a collection with the
inline => natural
option.
- Deprecated
smallint
type for template ; useinteger
instead. - Deprecated
bigint
type for template ; useinteger
instead. - Deprecated
decimal
type for template ; usefloat
instead. - Deprecated
text
type for template ; usestring
instead.
3.67.0 - 2020-05-28
- Manage class definition which is using "%parameter%" syntax.
- Added some
AbstractAdmin::configureDefaultSortValues
to override $datagridValues. - Added some
AbstractAdminExtension::configureDefaultSortValues
to override $datagridValues.
- Reference to configuration option in
legacy_twig_text_extension
deprecation message. - Call to deprecated
trans
method ofAbstractAdmin
- Declare missing
one_to_many
,many_to_many
,many_to_one
andone_to_one
type templates.
- Update
doctrine/inflection
to ^1.4 || ^2.0 - update index of the first element in collection from 1 to 0
- Accessing to a non existing value when adding field to
showMapper
andlistMapper
. - Deprecate the
AbstractAdmin::maxPerPage
property - Deprecate the
AbstractAdmin::setMaxPerPage
method - Deprecate the
AbstractAdmin::perPageOption
property - Deprecate the
AbstractAdmin::setPerPageOption
method - Deprecate the
AbstractAdmin::predefinePerPageOptions
method - Deprecate the
AbstractAdmin::datagridValues
property - Deprecate implementing
ModelManagerInterface
without implementingDatagridManagerInterface
3.66.0 - 2020-05-03
- The possibility to edit/create an object without any field set in the configureFormField.
- Allow reuse render extra parameters
- not passing a
Sonata\AdminBundle\Admin\AdminHelper
instance toSonata\AdminBundle\Form\Type\AdminType::__construct()
- Deprecate the call of
AbstractAdmin::getParentFieldDescription
if the value isnull
. - Deprecate the call of
AbstractAdmin::getSubject
if the value isnull
. - Deprecate the call of
AbstractAdmin::getListFieldDescription
if the value isnull
. - Deprecate the call of
AbstractAdmin::getParent
if the value isnull
.
- Do not lose the
parentSubject
in case of multiple calls to theAppendFormFieldElementAction
. - Bug when trying to edit a datetime formtype in datagrid
label => false
doesn't lead to a missing''
translation in the profiler.label => '0'
and others non nullable falsy value are not overridden anymore.- Fixed documented return type of
Sonata\AdminBundle\Filter\FilterInterface::getRenderSettings()
.
3.65.0 - 2020-04-21
- Added
AbstractAdmin::IsCurrentChild
method - Added missing polish translation
- Added new options (
display
,key_translation_domain
andvalue_translation_domain
) to the array field on Show and List pages. - Automatically set
sortable
,sort_parent_association_mappings
, andsort_field_mapping
whenassociated_property
is set inListMapper::add
to enable sorting onassociated_property
by default.
AbstractAdmin::GetCurrentChild
method- Deprecate
getModelIdentifier
in favor ofgetIdentifierFieldNames
inModelManagerInterface
. - Deprecated returning other types than
array
inAbstractAdmin::getFormGroups()
,AbstractAdmin::getFormTabs()
,AbstractAdmin::getShowTabs()
,AbstractAdmin::getShowGroups()
. SimplePager::getResults
will not return ArrayCollection in next major version (4.0)
- Fixed nesting Twig block definitions under a non-capturing nodes.
- Fixed collisions with cache keys at
AbstractAdmin::isGranted()
. - Fixed returning
void
in some methods which are intended to return a value ornull
. - Type of argument 3 passed to
UrlGeneratorInterface::generateMenuUrl()
. AdminHelper::addNewInstance
to detect methods based onmethod_exists
instead of callable to maintain previous BC behavior.- Admin Type is correctly using parentAssociationsMappings when using form with OneToOneToMany fields.
$this->getSubject()
always returns a value inconfigureFormField
3.64.0 - 2020-03-31
- Added a new option
link_parameters
for list action button. This option is passed togenerateObjectUrl
. - Added configuration parameter
sonata_admin.options.legacy_twig_text_extension
in order to control which text extension will be used; - Added
truncate.cut
andtruncate.ellipsis
option inlist_html.html.twig
andshow_html.html.twig
views.
- Constructing
SonataAdminExtension
with an instance of TranslationInterface from components - Deprecated "truncate.preserve" and "truncate.separator" options in
list_html.html.twig
andshow_html.html.twig
views; - Not setting
sonata_admin.options.legacy_twig_text_extension
asfalse
.
3.63.0 - 2020-03-21
- Added SonataIntlBundle support back
- Added
configureQuery
method for an easier way to override Admin list queries.
- Class Helper addNewInstance take care about parentAssociation mapping.
- Inheritance of the
createQuery
method.
3.62.1 - 2020-03-17
- Accessing to a non-existing parameter when extending
AbstractSonataAdminExtension
- Check for "application/json" presence at
Accept
HTTP header, even if multiple types are provided. - Deprecation about passing more than one attribute to
isGranted
3.62.0 - 2020-03-16
- Allow
_sort_by
filter to not be initially defined. - Import templates from SonataIntlBundle
- deleteAction and batchAction does not use anymore the csrf_protection option from the editAction.
- Dropped SonataIntlBundle
- Stop calling the configureFormField in deleteAction and batchAction.
- Deprecation passing more than one attribute to
isGranted
_sort_by
without_sort_order
does not use invalid value anymore- Deprecation passing more than one attribute to isGranted
- Only trigger deprecations of
sonata_help
when it is actually used
- Deprecate id param of Sonata Action
3.61.0 - 2020-02-18
ifEnd
throwsLogicException
if there is nothing to end.
- Calling
ContainerBuilder::getDefinition()
with ids which have no associated definition.
3.60.0 - 2020-02-17
sonata.admin.manager
tag to services implementingModelManagerInterface
.
- Wording of
EqualOperatorType
- The use of
sonata_help
in form types
3.59.0 - 2020-02-10
- Add support for symfony form help
- Make filter alias optional
- Fix error of using list ValueObject as editable field in list fields.
3.58.0 - 2020-01-26
- Revert to trully unique uniqid for admins
- Deprecations for event dispatching
- Support for Symfony < 4.3
3.57.0 - 2020-01-13
- Added OperatorType usable in CallbackFilter
- Multiple editable fields now is a real multiple.
- Toggle edit button
sonata_type_model_list_widget
after operations add/list/remove
- php 7.4 compatibility
- Fixed help messages not showing up in one to many inline tables.
- Include the
edit_modal
andedit_many_script
templates only if there is at least one displayed button that need them (instead of always include them). IfTrue
andIfFalse
apply correctly to tab and with functions. NestedIfTrue
andIfFalse
work as expected and do not throws exception anymore- Mapper methods now throw
LogicException
instead ofRuntimeException
- The use of string names to reference filters
3.56.1 - 2019-12-07
- Ability of using string names and FQCNs to define filter types
3.56.0 - 2019-12-05
- compatibility with
doctrine/doctrine-bundle
2
- Support for Symfony < 3.4
- Support for Symfony >= 4, < 4.2
3.55.0 - 2019-11-25
- crash when using the command that generates ACLs
- crash when using
bin/console list
or justbin/console
- Validation error on dashboard with
sonata.admin.block.stats
- deleteAction now respects csrf_protection
3.54.1 - 2019-10-14
- Using array accessor in traversable objects which aren't implementing
\ArrayAccess
atAbstractAdmin::buildForm()
. - Arguments passed to
transchoice()
Twig filter atblock_stats.html.twig
3.54.0 - 2019-10-01
- incorrect sanity check ACL manipulators
- Broken layout on very large breadcrumb fragments.
- Using
{% trans %}
Twig tag for pluralized catalogs withsymfony/translation
< 4.2. - JavaScript exception and incorrect form input type for Autocomplete form type
CRUDController::validateCsrfToken
to validate tokens not only from a POST request, but GET as wellCRUDController::validateCsrfToken
to accept missing request token.
3.53.0 - 2019-09-03
- Fixed error when rendering revision list with Twig's
strict_variables
enabled
- Usages of deprecated
transchoice
tags withtrans
- Minimum version required for
sonata-project/block-bundle
(3.11 => 3.17).
3.52.0 - 2019-08-16
- Added
format
option to show typetrans
- Method
TemplateRegistry::hasTemplate()
in order to know if a template with a given name is registered.
- The visual aspect at column headers with sorting icons, in order to add some extra spacing between the column's title and its sorting icon.
- The inheritance from these classes:
Sonata\AdminBundle\Admin\AdminHelper
;Sonata\AdminBundle\Admin\Extension\LockExtension
;Sonata\AdminBundle\Admin\FieldDescriptionCollection
;Sonata\AdminBundle\Admin\Pool
;Sonata\AdminBundle\Annotation\Admin
;Sonata\AdminBundle\Block\AdminListBlockService
;Sonata\AdminBundle\Block\AdminSearchBlockService
;Sonata\AdminBundle\Block\AdminStatsBlockService
;Sonata\AdminBundle\Command\ExplainAdminCommand
;Sonata\AdminBundle\Command\GenerateAdminCommand
;Sonata\AdminBundle\Command\GenerateObjectAclCommand
;Sonata\AdminBundle\Command\ListAdminCommand
;Sonata\AdminBundle\Command\SetupAclCommand
;Sonata\AdminBundle\Command\Validators
;Sonata\AdminBundle\Datagrid\Datagrid
;Sonata\AdminBundle\Datagrid\DatagridMapper
;Sonata\AdminBundle\Datagrid\ListMapper
;Sonata\AdminBundle\Datagrid\SimplePager
;Sonata\AdminBundle\DependencyInjection\Compiler\AddDependencyCallsCompilerPass
;Sonata\AdminBundle\DependencyInjection\Compiler\AddFilterTypeCompilerPass
;Sonata\AdminBundle\DependencyInjection\Compiler\ExtensionCompilerPass
;Sonata\AdminBundle\DependencyInjection\Compiler\GlobalVariablesCompilerPass
;Sonata\AdminBundle\DependencyInjection\Compiler\ModelManagerCompilerPass
;Sonata\AdminBundle\DependencyInjection\Configuration
;Sonata\AdminBundle\DependencyInjection\SonataAdminExtension
;Sonata\AdminBundle\Event\AdminEventExtension
;Sonata\AdminBundle\Event\ConfigureEvent
;Sonata\AdminBundle\Event\ConfigureMenuEvent
;Sonata\AdminBundle\Event\ConfigureQueryEvent
;Sonata\AdminBundle\Event\PersistenceEvent
;Sonata\AdminBundle\Exception\LockException
;Sonata\AdminBundle\Exception\ModelManagerException
;Sonata\AdminBundle\Exception\NoValueException
;Sonata\AdminBundle\Export\Exporter
;Sonata\AdminBundle\Filter\FilterFactory
;Sonata\AdminBundle\Form\ChoiceList\ModelChoiceLoader
;Sonata\AdminBundle\Form\DataTransformer\ArrayToModelTransformer
;Sonata\AdminBundle\Form\DataTransformer\LegacyModelsToArrayTransformer
;Sonata\AdminBundle\Form\DataTransformer\ModelToIdPropertyTransformer
;Sonata\AdminBundle\Form\DataTransformer\ModelToIdTransformer
;Sonata\AdminBundle\Form\DataTransformer\ModelsToArrayTransformer
;Sonata\AdminBundle\Form\EventListener\MergeCollectionListener
;Sonata\AdminBundle\Form\Extension\ChoiceTypeExtension
;Sonata\AdminBundle\Form\Extension\Field\Type\FormTypeFieldExtension
;Sonata\AdminBundle\Form\Extension\Field\Type\MopaCompatibilityTypeFieldExtension
;Sonata\AdminBundle\Form\FormMapper
;Sonata\AdminBundle\Form\Type\AclMatrixType
;Sonata\AdminBundle\Form\Type\AdminType
;Sonata\AdminBundle\Form\Type\ChoiceFieldMaskType
;Sonata\AdminBundle\Form\Type\CollectionType
;Sonata\AdminBundle\Form\Type\Filter\ChoiceType
;Sonata\AdminBundle\Form\Type\Filter\DateRangeType
;Sonata\AdminBundle\Form\Type\Filter\DateTimeRangeType
;Sonata\AdminBundle\Form\Type\Filter\DateTimeType
;Sonata\AdminBundle\Form\Type\Filter\DateType
;Sonata\AdminBundle\Form\Type\Filter\DefaultType
;Sonata\AdminBundle\Form\Type\Filter\NumberType
;Sonata\AdminBundle\Form\Type\ModelAutocompleteType
;Sonata\AdminBundle\Form\Type\ModelHiddenType
;Sonata\AdminBundle\Form\Type\ModelListType
;Sonata\AdminBundle\Form\Type\ModelReferenceType
;Sonata\AdminBundle\Form\Type\ModelType
;Sonata\AdminBundle\Generator\AdminGenerator
;Sonata\AdminBundle\Generator\ControllerGenerator
;Sonata\AdminBundle\Guesser\TypeGuesserChain
;Sonata\AdminBundle\Manipulator\ServicesManipulator
;Sonata\AdminBundle\Menu\Matcher\Voter\ActiveVoter
;Sonata\AdminBundle\Menu\Matcher\Voter\AdminVoter
;Sonata\AdminBundle\Menu\MenuBuilder
;Sonata\AdminBundle\Menu\Provider\GroupMenuProvider
;Sonata\AdminBundle\Model\AuditManager
;Sonata\AdminBundle\Route\AdminPoolLoader
;Sonata\AdminBundle\Route\DefaultRouteGenerator
;Sonata\AdminBundle\Route\PathInfoBuilder
;Sonata\AdminBundle\Route\QueryStringBuilder
;Sonata\AdminBundle\Route\RouteCollection
;Sonata\AdminBundle\Route\RoutesCache
;Sonata\AdminBundle\Route\RoutesCacheWarmUp
;Sonata\AdminBundle\Search\SearchHandler
;Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap
;Sonata\AdminBundle\Security\Acl\Permission\MaskBuilder
;Sonata\AdminBundle\Security\Handler\AclSecurityHandler
;Sonata\AdminBundle\Security\Handler\NoopSecurityHandler
;Sonata\AdminBundle\Security\Handler\RoleSecurityHandler
;Sonata\AdminBundle\Show\ShowMapper
;Sonata\AdminBundle\SonataAdminBundle
;Sonata\AdminBundle\Translator\BCLabelTranslatorStrategy
;Sonata\AdminBundle\Translator\Extractor\JMSTranslatorBundle\AdminExtractor
;Sonata\AdminBundle\Translator\FormLabelTranslatorStrategy
;Sonata\AdminBundle\Translator\NativeLabelTranslatorStrategy
;Sonata\AdminBundle\Translator\NoopLabelTranslatorStrategy
;Sonata\AdminBundle\Translator\UnderscoreLabelTranslatorStrategy
;Sonata\AdminBundle\Twig\Extension\SonataAdminExtension
;Sonata\AdminBundle\Twig\GlobalVariables
;Sonata\AdminBundle\Util\AdminAclManipulator
;Sonata\AdminBundle\Util\AdminObjectAclData
;Sonata\AdminBundle\Util\AdminObjectAclManipulator
;Sonata\AdminBundle\Util\FormBuilderIterator
;Sonata\AdminBundle\Util\FormViewIterator
.
- Passing invalid filter names to
Datagrid::getFilter()
; - Passing invalid template names to
TemplateRegistry::getTemplate()
; - Calling
AbstractAdmin::getActiveSubClass()
andAbstractAdmin::getActiveSubclassCode()
when there is no active subclass.
- Returning
void
instead ofnull
in functions which are capable to return values. - Possibility to resolve Twig dependency to versions that don't support arrow functions on Twig filters.
- Call setName method in configure part of Command, for backward compatibility wiht sf 2.8.x
- Fixed
ModelManagerCompilerPass
&ObjectAclManipulatorCompilerPass
to avoid crashing when there's services with numerical ids - Error caused by passing a string instead object to
AbstractAdmin::toString()
frombase_list.htm.twig
when the admin's subject doesn't declare__toString()
method. - Fixed ChoiceFieldMaskType's twig template JavaScript using unescaped field value
- Fix typo in Russian translation
3.51.0 - 2019-06-27
- The default value for "admin_code" setting at
AdminSearchBlockService
. - Values to passed with the "identifier" option for
ListMapper::add()
are cast to boolean before using them to infer if the field must be used as identifier or not.
- Passing a non string value as argument 1 to
Pool::getAdminByAdminCode()
; - Passing a non valid admin hierarchy as argument 1 to
Pool::getAdminByAdminCode()
.
- Edit form field group descriptions may again contain HTML.
- Crash when clicking "add" on a collection
3.50.0 - 2019-06-22
- Added "role" option for methods
ListMapper::add()
,DatagridMapper::add()
,ShowMapper::add()
andFormMapper::add()
; in order to restrict the content rendering based on the provided role.
- Fixed deprecation notice when core services are injected in service through autowiring
- Deprecated controller syntax generated by "sonata:admin:generate" command.
- Bumped "twig/twig" dependency to "^2.9"
- Changed usages of
{% spaceless %}
tag, which is deprecated as of Twig 1.38 with{% apply spaceless %}
filter - Changed usages of
{% for .. if .. %}
, which is deprecated as of Twig 2.10 withfilter
filter' - Edit form field group descriptions may again contain HTML.
- Truncate long titles at 100 characters at breadcrumb and navbar.
- Subject is now fully displayed at navbar. Before, it was using the same title
as the
<title>
tag, which is truncated to 15 characters. - Values to passed with the "identifier" option for
ListMapper::add()
are cast to boolean before using them to infer if the field must be used as identifier or not.
- Passing non boolean values to "identifier" option for
ListMapper::add()
.
3.49.1 - 2019-06-05
- Crash with Twig 2.11 with message
Template "@SonataAdmin/CRUD/base_edit_form.html.twig" cannot be used as a trait.
(second attempt)
3.49.0 - 2019-06-02
- CreateClassCacheCommand deprecation message on container compiling
- Crash with Twig 2.11 with message
Template "@SonataAdmin/CRUD/base_edit_form.html.twig" cannot be used as a trait.
- Changed the rendering for the audit revision timestamp in order to use
<time>
tags, which print the dates in UTC usingdatetime
andtitle
attributes, allowing to view the UTC date with the default browser tooltip.
3.48.3 - 2019-05-21
- Fixed Tabs in Edit Form
3.48.2 - 2019-05-16
- Add canonicalization fallback for missing moment.js
de_DE
locale
- Use proper namespace for
Sonata\Exporter\Source\SourceIteratorInterface
- Fix bootstrap tab toggle not working when clicking add button more than 2 times.
- Fix in edit page, the footer with actions buttons will be stuck for Windows users and the last field will no longer be hidden
3.48.1 - 2019-04-13
- Changed the way the search action generates links to the results. It used to
consider every item editable, but would throw an error if it wasn't the case.
It now uses the
getSearchResultLink
that choses the best way to link to a search result; eg.edit
if available, orshow
. - crash when submitting a form with only spaces in a required field
- redirecting to a blank tab after saving an object
- modifying form values changing tabs
3.48.0 - 2019-03-23
- Added ability to back to the tab which was edited on saving an object
3.47.1 - 2019-03-15
- Check if request exists before using it and getting an exception
3.47.0 - 2019-03-13
show_label
option not being honored when set tofalse
- type int for
_page
and_per_page
from request - display of batch checkbox when list page is loaded with Ajax
- wrong HTML generated (top nav menu), if the user does not have rights for first or last module
- Changed the rendering for date, datetime and time properties in order to use
<time>
tags, which print the dates in UTC usingdatetime
andtitle
attributes, allowing to view the UTC date with the default browser tooltip. - Actions buttons were not displayed if the subject was cast to empty string
through the
__toString
method.
3.46.0 - 2019-03-07
- the batch flash messages looked bad
- Deprecated jms annotations
3.45.2 - 2019-02-14
- Regression bug which causes SonataMediaBundle's Media list to show fallback image in mosaic view instead of real image preview
- Crash when using
Metadata
class from block bundle sonata_type_collection
fields no longer deletes row when adding a new row- Admin maker no longer produces tabs
3.45.1 - 2019-01-14
- Crash about incompatible signatures involving
ErrorElement
- Crash when using
null
as an admin class name
3.45.0 - 2019-01-14
- Added config for default mosaic background
- Added
Sonata\AdminBundle\Object\Metadata
class - Compatibility with
sonata-project/exporter
2 - php 7-specific type hints in generated code
strict_types
declaration in generated code- generated classes are now final
- Changed
Admin::getObjectMetadata
return type in PHPDoc
- Some deprecations about the new namespaces have been fixed
- 2 missing Dutch translations were added
3.44.0 - 2019-01-12
- Default admin service options (group, label catalogue and icon) are now configurable
- Added possibility to search globally case-sensitive/case-insensitive
- support for php 5 and php 7.0
- Default values not getting overridden in
make:sonata:admin
3.43.0 - 2018-12-15
- Added
template
option to adminbatchActions
- Fix crash on form pages that use
ModelAutocompleteType
and does not have a create route
- Better css layout for single column dropdowns
3.42.2 - 2018-12-07
- Remove "e" letter added after delete checkbox in inline table collection form
3.42.1 - 2018-12-06
- Fix crash on listing pages that have a datagrid filter
3.42.0 - 2018-12-03
- incorrect deprecation message about
AdminInterface::setSecurityHandler()
- Error on some fields in collection table when
strict_variables
mode is enabled - Newly created media were not autoselected
header_style
option
3.41.0 - 2018-11-23
- Allow disabling front debug logs
- Fixed
AdminType
tabs ids when used in collections - the list mode view is now preserved when a sorting is applied
3.40.3 - 2018-11-10
- Added missing polish translation for
link_edit
- Change icon on list column sorting
- invalid html in the export links list
- FrameworkBundle redirect action notation to the current syntax
- BC break when baseControllerName uses bundle notation with subfolder
3.40.2 - 2018-10-17
- Add display of missing
sonata_help
on many form type - confirm_exit, use_select2, use_icheck and use_stickyforms settings.
make:sonata:admin
not working- Moved the JS config in a meta tag in head section of the sonata_layout twig file
3.40.1 - 2018-10-08
- Minor bug in JavaScripts (Admin.js)
3.40.0 - 2018-10-06
- Added
Admin
object reference to javascriptwindow
object - Added
RuntimeException
message forCreate
andShow
actions fromCRUDController
- Added a new maker to generate admin class, controller and service definition
- Added support for moment.js French language
Pool::getInstance
will always return a valid admin instance- Fixed controller reference deprecations
- Removed inline scripts for
SONATA_CONFIG
andSONATA_TRANSLATIONS
3.39.0 - 2018-09-09
- An affirmative grant checker for Twig
- Translation file for
zh_HK
(Traditional Chinese).
- Updated Luxembourgish translations
- Fixed negative admin unique id on 32 bits platforms
- Fixed iCheck inputs not triggering change event
- Fixed issue with
getNbResults
return negative result, if there where no results - Dashboard block security was expected to be checked affirmatively rather than unanimously
- moved
symfony/class-loader
intorequire-dev
section of composer - Use
Admin::getUniqid()
to generate HTML tab id
CreateClassCacheCommand
is deprecated
3.38.3 - 2018-08-21
- An error message about subclasses has been fixed
- issue Error 500 when requesting short object description as JSON
3.38.2 - 2018-08-17
- Checking the wrong method for form fields
3.38.1 - 2018-08-16
- Added exception message if no field is defined with the
configureFormFields()
method
- Fixed tab id when the Admin Id contains backslashes
3.38.0 - 2018-08-14
- Added delete button in form action buttons when the request is ajax
- Added missing french translation
- Missing translation for
link_edit
in Dutch translation file.
- Admin uniqids are now more consistent
- allow using overwritten constant for the mosaic html classes inside of admin class
- An exception message was improved to include hints about the correct configuration value
SonataAdminBundle\Controller\HelperController
is now deprecated in favor of actions
3.37.0 - 2018-07-26
- fixed bug with complex properties in
ModelAutocompleteType
- Enable TimeZone for datetime and time templating
- Changing the way of checking the permissions when displaying links in templates
3.36.0 - 2018-07-17
- Added
title
to sidebar toggle - Added missing polish translation for
Toggle Navigation
- Added new JS function in Admin.js, which handle the control of a tabs and change address in URL query string when you change tab.
- Added a condition in the
getFieldGetterKey
in order remove the new warning produced by PHP7.2.
- Escaped admin code in autocomplete
Controller\CoreController
is now deprecated in favor ofAction\{Search,Dasbhoard}Action
- Added table-hover class to the table
- Changed ID's and added class name to tabs elements in edit view and show view, so we can control the address.
- Default load order of
assets.javascripts
atConfiguration::getConfigTreeBuilder()
- Warning "Parameter must be an array or an object that implements Countable" for count(null) in php 7.2
- Fixed issue with
appendFormFieldElementAction
andretrieveFormFieldElementAction
using ModelManager insteadgetObject
admin class method - Menu item security was expected to be checked affirmatively rather than unanimously
- Fixed choice field mask initial display when field value is empty
- Added missing russian translation for
Toggle Navigation
- ECMAScript error
jquery.js:250 Uncaught Error: cannot call methods on button prior to initialization;
while trying to use$.fn.button()
(ref: twbs/bootstrap#6094)
3.35.2 - 2018-05-05
- Fixed route generation with parameter for on_top menu items
- Fixed custom group permission for menu items
3.35.1 - 2018-04-20
- Edit on list is fixed for choices not related to an entity
3.35.0 - 2018-04-16
- Admin can now have multiple parents
AbstractAdmin::addChild
now accepts 2nd parameter with parent name
3.34.2 - 2018-04-11
- Editing child admin that does not belong to a given parent
- Regression for child form type rendering
- Fixed a BC break where an overwritten
getTemplate()
method in anAdmin
was no longer called by Sonata. - Not working persist_filter option for legacy admin property.
3.34.1 - 2018-04-09
- Fix regression on #5051: It is possible again to know which button triggered the submit of the form.
3.34.0 - 2018-04-09
- Added some
Sonata\AdminBundle\Filter\Persister\FilterPersisterInterface
to externalise filter persistence to a dedicated class - Added some
Sonata\AdminBundle\Filter\Persister\SessionFilterPersister
to store filters to session (as done now) - Added
TemplateRegistry
,TemplateRegistryInterface
andMutableTemplateRegistryInterface
to handle all template registration related functionality from bothAbstractAdmin
andPool
. - Added
required
option to editable listchoice
- Added
search
option to enable/disable the search form in the sidebar
- Changed
Sonata\AdminBundle\Admin\AbstractAdmin::getFilterParameters
to use the configured filter persister component - Reordered bootstrap.js javascript dependency fixes problems with jQuery UI dialogs
side_bar_after_nav_content
block is now empty by default
- Deprecated
AbstractAdmin
methodsgetTemplate
andgetTemplates
. - Deprecated
AbstractAdmin
attribute$templates
. - Deprecated
Pool
methodsgetTemplate
,setTemplates
andgetTemplates
. - Deprecated
Pool
attribute$templates
. - Deprecated Twig function
get_pool_template
.
- if object is empty, don't try to create an edit route
- Fix edit choice with a relation field on admin list
- Added missing french translation for
Toggle Navigation
- Explain command compatible with sf4
- Fixed deprecation notice when Pool is injected in service through autowiring
ChoiceFieldMaskType
now works on inline table collections- Navbar positioning on mobile is no longer altered like in desktop
- Increase consistency on default page sizes (replaced 192 by 256)
- Disable form submit buttons when the form gets submitted
- form types FQCN are now used in filter. Improves compatibility with SF3/4
- Not working sidebar menu tree with AdminLTE v2.4
3.33.0 - 2018-03-12
- Replaced calls to Twig internal
Environment::loadTemplate()
method withEnvironment::load()
inSonataAdminExtension
.
- Deprecated
SonataAdminExtension::output()
. Now using the privaterender()
method. Please use therender*()
methods instead.
FieldDescription
null check missing inModelAutocompleteFilter
- Fatal error in strict mode
- Avoid calling protected/private methods when retrieving values from entities
getFieldValue
fromBaseFieldDescription
can now handle getting a value from null objects.base_list
template includes the configurablebutton_create
template rather than the defaultcreate_button.html.twig
.
3.32.0 - 2018-02-28
- Allow capturing of any link click inside of modal
- batch checkbox is hidden when using the mosaic view in modal
- whole mosaic item is now wrapped in a tag instead of just title
- Make search result page less heavy
ModelAutocompleteType
can now be used without a linked admin class- Compatibility with edit relation on list with PHPCR and MongoDB Sonata bundles
- fix behaviour of
AbstractAdmin::preValidate
by relying on form event listener - Admins without global search filters will no longer be shown in the global search.
- including wrong javascript code for associations modals
- Fixed PHP warnings when
ChoiceFieldMaskType
optionmap
is invalid or empty - Fixed javascript handling of
ChoiceFieldMaskType
when optionexpanded
istrue
- Templates that rely on the
admin
variable in Twig can now use theget_admin_template
function correctly.
3.31.1 - 2018-02-08
- Missing
getOwnerPermissions
toAdminObjectAclData
- Switch all templates references to Twig namespaced syntax
- Switch from templating service to sonata.templating
- Not found issues for some locales which are not present in frontend dependencies like
moment
orselect2
- Only do
$filter->apply
if the filter is "active" on the datagrid list - Only do
$filter->apply
if the filter has a value that is not empty string - Error if the field in filter list is named
children
- Use FQCN form types for ACL form creation
- Fixed missing translation for
Toggle navigation
3.31.0 - 2018-01-23
- Added new
safe_label
option to allow HTML pass-through on autocomplete form type - Added filter counter to admin lists
- template paths to adapt to the convention
- Replace twig paths with new naming conventions
request
attribute deprecation onknp_menu.voter
- Added path to cookies when hiding sidebar to avoid creating multiple cookies
- Nested arrays will show properly on show/list fields
- path to dashboard
- ModelHiddenType - default hidden attribute is now set to true
- Fix bug when we pass null as fieldName to BaseFieldDescriptor::getFieldValue
3.30.1 - 2018-01-02
- Make explicit dependency with
symfony/asset
- Admin and filter services are shared
3.30.0 - 2017-12-25
- Menu on the left side stays hidden while changing pages.
AbstractAdmin::addSubClass()
- Checking for fixed class on body before adjusting the position of the content div
- Fixed container compile error, if JMSDiExtraBundle is enabled.
- Fixed twig dependency for sonata.admin.controller.admin service
3.29.0 - 2017-12-16
- Added edit button functionality
- Added possibility to add and remove javascripts/stylesheets without adding all defaults again
- added missing Dutch translations
- Services tagged with
sonata.admin
andsonata.admin.filter.type
are now public - Improvements on
AbstractAdmin::getClass()
method
- Fixed calling route generator with boolean value
- Replace FQCN strings with
::class
constants - Add trans filter to form_group and form_tab description
- added Turkish translations
- don't display fields that are missing in child classes
- Patched collection form handling script to maintain File input state when new items are added to collections
- exporter-related error during cache:clear command.
- added missing italian translations
3.28.0 - 2017-11-30
- Added
CRUDController::redirectToList
method for all list redirections - added Russian translations
- Handle empty id list in
CRUDController::batchAction
- All services without a declared visibility are now public
- It is now allowed to install Symfony 4
- Updated
src/Resources/views/standard_layout.html.twig
template in order to remove whitespace rendering before HTML DOCTYPE declaration. - interference with other bundles
- using the
ChildrenVoter
class - using the
sonata.admin.menu.matcher.voter.children
service
- Fixed XSS vulnerability in autocomplete form type
3.27.0 - 2017-11-26
- Added some Japanese messages
- Added
CRUDController::renderWithExtraParams
as a replacement for therender
method
- Deprecated
CRUDController::render
- Problem with FormRenderer not having environment causing that inline collection was unusable on SF 3.4
- Deprecation warning for overriding
Controller::render
which is supposed to be final
3.26.0 - 2017-11-22
- Add html tag attributes support for sonata_type_model_autocomplete form type
- Added edit button that opens in dialog instead of add if there is object already in sonata type model list
- check if the field is used to sort the list
- Add a check for existing var associationadmin which is null for filter
- Fixed
AbstractAdmin::getSubject()
behavior whenid
parameter is not specified - Add alias on
ChoiceType
uses to avoid collisions on Form filter classes - BC-break in
CRUDController::render()
- Old usage of read_only var
3.25.1 - 2017-11-20
- Wrong configuration for
DateTimeType
andDateType
filters
3.25.0 - 2017-11-19
- Ability to configure sonata main admin and super admin roles under the
security
configuration key - Added
translation_domain
key toAdminStatsBlockService
to change or disable translation - Add support for
add
button insonata_type_model_autocomplete
- Changed internal folder structure to
src
,tests
anddocs
- a condition to check if the navbar is to be displayed
- subject assignment in embedded admins
- fixed choice_translation_domain for expanded choices in admin
- make false translation_domain working for the label if no translation is needed
- Removed overridden method
CRUDController::addFlash
which is final in SF 3.4. - Don't translate empty placeholder on form render
- Register commands as services to prevent deprecation notices on Symfony 3.4
AbstractAdmin::hasSubject
is now populatingAbstractAdmin::$subject
property- Deprecation about
Symfony\Component\DependencyInjection\DefinitionDecorator
- getRuntime now receives a non deprecated runtime
- Fix for getRuntime on Symfony older than 3.4
- displaying a title when there are no specific actions
3.24.0 - 2017-10-23
- Add support for unlimited nested child admins.
Sonata\AdminBundle\Admin\AdminInterface
was split into smaller interfaces.
AdminInterface::$baseCodeRoute
andAdminInterface::setBaseCodeRoute(...)
.
- Fixed missing space when form class is defined in label_attr
- Fix duplicate DB queries on empty results.
- Fixed sticky navbar when top navbar height changes
- Fix missing flash message translations
- naming conflict with
UrlGeneratorInterface
- Print of
sonata_help
for form subfields - Error class for
sonata_type_immutable_array
form group - Fixed the BaseFieldDescription class to also support 'has' prefixed getter methods for boolean properties on entities (besides the 'is' prefixed getters)
- Always apply "global_search.empty_boxes" setting to never searched admins
- Fixed a typo in CSS classes in
block_search_result.html.twig
- Fixed autocomplete for cases when admin code uses service id and service id is equal to FQCN ('AppBundle\Admin\CompanyAdmin')
- Bad result when
Pool::getAdminByAdminCode()
was called with an invalid child path.
- Support for old versions of PHP and Symfony.
3.23.0 - 2017-09-01
- Reference %sonata.admin.configuration.templates% when possible
- Added a
priority
option insonata_admin
extensions config
- Passing object id in edit form from CRUD controller instead of getting it in twig
- Fixed the setting of the
translation_domain
twig variable. The value must change depending if the item has on_top set to true or false. - Escaping of list headers.
- setting the column title
- Fixed deprecation when using checkbox in admin form type
- Fix knp menu extra configuration for domain translations in Group Menu
- Not declared variable trowing errors on some browsers
- Useless IE8 compatibility code
3.22.0 - 2017-08-19
- Added option to inverse background for boolean fields in list and show actions
- Run the Select2 code for autocomplete form type at onload event
- Fixed AbstractAdmin::getSubject on admins with parentFieldDescription
- Fixed deprecation when using hidden form type in model autocomplete
- Fixed the extra option being retrieved. The translation catalogue to be used is inside the label_catalogue option, not translation_domain.
- setting the column title
- Html tags do not appear in the meta title
3.21.0 - 2017-08-14
- Allow label icon on CRUD list table headers.
- Allow to disable label on CRUD list table heades.
- multidimensional arrays support in show array
- inline option in list array
- Added checkbox range selection with shift + click
- Added the persistence independent association templates
- Added Latvian translation of the bundle
- Check for
ChildDefinition
instance when possible instead ofDefinitionDecorator
which got deprecated on Symfony 3.3
ModelChoiceList
in favor ofModelChoiceLoader
- Fixes potentially wrong scheme in the sidebar urls by using relative urls
- Fixed choice field mask type javascript in the twig templates to works with immutable array form types
ServiceManipulator
now addspublic: true
to service declaration by default- Fixed deprecation for Sf 3. support
- Sidebar menu elements are active when the current route is a child admin.
- Take admin annotation id into account
3.20.1 - 2017-06-27
- Fixed undefined
view_group
variable in show template - Fixed compatibility with Symfony's IdentityTranslator when translator is disabled
3.20.0 - 2017-06-22
- Group and tabs translations
- Deprecation notices related to
addClassesToCompile
3.19.0 - 2017-06-12
- compatibility with immutable entities was improved
- Show icon for nav items when using
on_top
option - use generated route instead of plain route in nav items
- it is no longer possible to get core bundle versions incompatible with sf3
- Missing admin-lte image file
- forms with a required autocomplete ajax field can be submitted again
3.18.2 - 2017-05-15
- Selected values issue with Select2 v4 on model autocomplete type
3.18.1 - 2017-05-12
- Fixed select2 width calculation when using select2 v4
- Compatibility with Select2 v4 on model autocomplete type
3.18.0 - 2017-05-09
- Added new configuration parameter named
empty_boxes
with 3 variable: show, hide, fade
- Undefined admin action error on
ModelAutocompleteFilter
- added missing italian translations
- deprecations when using
sonata.admin.form.type.model_list
3.17.0 - 2017-04-25
- Added editable support for association fields from type choice in
ListMapper
- Added also new
class
option for field description - Translation can now be disabled on specific form fields
- Changed GroupMenuProvider::get to setDisplay(false) on menuItem if on_top used and no items could be displayed
- Fixed the bug that caused an error "The helper "dialog" is not defined." on Symfony3 with new
\Sensio\Bundle\GeneratorBundle\Command\Helper\QuestionHelper
when you run command "sonata:admin:generate-object-acl". - Fixed issue on getExtendedType of MopaCompatibilityTypeFieldExtension and ChoiceTypeExtension because the method requires to return the fully-qualified class name (FQCN) since symfony version 2.8
ModelType
have choices as values by default now on SF 2.7+.- Users without the
LIST
role can access the autocomplete items by configuring thetarget_admin_access_action
option - Non existent
isSuperior
key onFormView
error
- recently introduced checkbox-disabling feature, which was not stable enough
3.16.0 - 2017-03-31
- Added
onTop
parameter on@Admin
annotation - Added new
keep_open
option to keep menu group always open
field_description
comparison inbase_list_field.html.twig
3.15.1 - 2017-03-28
- Added Brazilian Portuguese translation of
title_show
- change show picto on list view to use the same than in edit view
- do not double
FieldDescription::Name
andproperty_path
inAdminType
3.15.0 - 2017-03-27
- Add polish translation of
title_show
- Added the ability to leave the label of a show field empty by passing
label => false
toShowMapper::add()
- Make sure Moment.js translations work for every locale
- The
sonata/exporter
constraint has been bumped to^1.7
- Sanitize masked fields in
ChoiceFieldMaskType
- Whitespaces are not taken into account when rendering blocks on
standard_layout
- fixed boolean handling for
xEditableType
3.14.0 - 2017-03-16
- Added
label
andtranslation_domain
fallback for batch actions - Config option to disable autoregistration of annotations with
JMSDiExtraBundle
- Added missing titles to the CRUD show page.
- Added
attributes
parameter forurl
field type - Added a missing variable placeholder to a translation unit.
- Missing title for nested admin
- Setting data form on update form field element by using
sonata_type_model
- deprecation notices that could not be avoided in the
CoreController
class - Fix #4292: don't overwrite
JMSDiExtraBundle
default configuration - Fixed markup on list on Admin with subclasses
- x-editable choices are now correctly translated
- Default translation of Base Breadcrumb
Dashboard
- Remove duplicated breadcrumb on admin list
- Breadcrumb without link are now displayed correctly
- Unified styles between admins with subclasses and admins without subclasses
- name of permission, use
VIEW
instead ofSHOW
- Handling of boolean types in
HelperController
- use
hasAccess
instead ofisGranted
- better readability of exception message when too many admins are registered
- Improve Catalan and Spanish translations
- Fixed inconsistent translation placeholder quoting.
- Batch action breaks when coming from list view with filter using
doctrine_orm_model_autocomplete
- Fixed non-existent variable
action
inbase_list_field.html.twig
- The export and list actions now integrate the sonata exporter bundle
- Changed
ActiveVoter
andChildrenVoter
to only work with menu items having theSonataAdminBundle
extra set. - Updated AdminLTE to 2.3.11
- Removed non FQCNs on form types on
AbstractAdmin
- When checking the delete checkbox of an inline child form of
CollectionType
the related fields are now disabled to avoid preventing submission of the form when one of those inputs is required. - Updated Luxembourgish translations
- Changed inconsistent translation unit name.
- Replaced
isGranted()
byhasAccess()
orcheckAccess()
- Exporter class and service : use equivalents from
sonata-project/exporter
instead. - auto registration of
JMSDiExtraBundle
annotations is now discouraged in favor of doing it manually
3.13.0 - 2017-02-03
- Added support for priority attribute in the Extension compiler pass
- Compatibility of ajax actions with Twig 2.0
3.12.0 - 2017-01-31
- Compatibility with Twig 2.0
--services
default-value to null inSonata\AdminBundle\Command\GenerateAdminCommand
ModelToArrayTransformer::$choiceList
propertyModelToArrayTransformer::$choiceList::__construct()
three-argument-signature is deprecated
- "Silent display of undefined block" Twig deprecation
- Twig deprecation notice when using template inheritance to get a macro
- The
request
parameter is passed to custom batch actions.
3.11.0 - 2017-01-17
- Extract admin group and label translations
- JQuery event trigger to Admin.setup_list_modal()
- Updated compiler pass to support parent definition when using abstract service for admin.
- Fixed behaviour of persistent parameters in list editables
- JMSDiExtraBundle is configured correctly to pick up Sonata annotations.
3.10.3 - 2016-12-22
- A bug with the side menu arrow position
- Display correct name of group uses default translation domain
- A Twig deprecation added in Twig 1.28.0
- A Sonata deprecation called by Sonata itself by adding a way to disable it when called internally
3.10.2 - 2016-12-15
- Filter form theme was used for create and edit forms too.
3.10.1 - 2016-12-13
- Fix compatibility with Symfony 3.2 form renderer.
- Fix permissions when setting role for the security handler
- Translation in twig templates uses the twig translation filter
3.10.0 - 2016-11-25
- Added new
roles
configuration field to configuration of menu item routes. - Improved class support for filter factory
- Add a length option to truncate columns on list view
- Update adminLTE dependency to 2.3.6
- Use block instead of macro to render show groups
- Fixed missing access check for menu route items.
- Fixed
trigger_error
calls -E_USER_DEPRECATED
was concatenated to the sentence, not passed as argument - Deep arrays can now be displayed without error, and recursively
- Fixed bug in revisions compare view
- Deprecated
base_show_macro.html.twig
3.9.0 - 2016-10-06
- Added
CRUDController::trans
method
- Translation in twig templates uses the twig translation filter
- Deprecated
AdminInterface::trans
method - Deprecated
AbstractAdmin::$translator
property - Deprecated
AbstractAdmin::trans
method - Deprecated
AbstractAdmin::transChoice
method - Deprecated
AbstractAdmin::getTranslator
method - Deprecated
AbstractAdmin::setTranslator
method
- Fixed missing default
translationDomain
- Fixed deprecated
BaseBlockService
usage
3.8.0 - 2016-09-20
- Added three new sub-blocks to standard_layouts javascript block
- Moved the raw references of buttons templates from
Admin\AbstractAdmin
to configuration options
3.7.1 - 2016-09-13
- The
ALL
role needs to be checked separately, otherwise theAuthorizationChecker
returnfalse
all the time. - Added
var
keyword to explicitly define the "showMaskChoiceEl" variable
3.7.0 - 2016-09-07
- Added additional
_ALL
role check toRolesecurityHandler
- Improve accessibility by adding
aria-hidden="true"
- Set
choices_as_values
totrue
on choice type based to be compatible with Symfony 3 - Use class name when referencing
Form Type
to be compatible with Symfony 2.8+ - Remove
Sonata\CoreBundle\Exporter\Exporter
from classes to compile to cache to avoid deprecation warning
- The admin no longer checks for the
translator
service before translating.
3.6.0 - 2016-09-01
- Added new methods to set default values for the list view
- Auto-detect type when adding
FormBuilderInterface
toFormMapper
- Type for
Filter
to be compatible with Symfony 2.8+ - Type for
Filter Operator
to be compatible with Symfony 2.8+
3.5.0 - 2016-08-29
- Export fields names are now translated
- Added PL translations
- Configuration to change the default route used to generate the link to the parent object inside a breadcrumb, when in a child admin
- Docs for this configuration
- Twig blocks to simplify the template override.
- Added test for
AdminBundle\Menu\Matcher\Voter\ChildrenVoter
- Added class name support for
AbstractAdmin::configureDatagridFilters
- Added
ShowMapper::removeGroup
method
- Changed css
margin-left: -20px
of checkbox. - Updated spanish batch confirmation message translation.
- Changed injection of
$container
to$adminPool
inTwig/GlobalVariables
- use
RuntimeException
instead of non existingRunTimeException
AbstractAdmin::setSubject
in order to check that given$subject
matches registered admin class entity.- Added the action name to title_batch_confirmation translation.
- Added the object name to message_delete_confirmation translation.
- Added the action name to title_batch_confirmation translation.
- Move actions buttons display logic from templates to
AbstractAdmin::configureActionButtons
- Moved translation of breadcrumbs to twig template
- Moved translation of batch action_label to twig template
- Move actions buttons display logic from templates to
AbstractAdmin::configureActionButtons
- Widget tests should extend
AbstractWidgetTestCase
- The
$container
property inTwig/GlobalVariables
- The "batch" checkbox at the top of the list would not work when iCheck is disabled.
- Not working
read_only
option on Twig with Symfony 3 - Fixed PT-BR translations
- XSS Vulnerability in breadcrumbs
- Handle Symfony BC for Datagrid hidden types
- Fixed duplicate translation for list filters
- Fixed visibility of block
sonata_top_nav_menu
contents - Fix how metadata information are retrieved when admin information are dumped
- Symfony 3 support in
AclMatrixType
- Symfony 3 type support in
AclMatrixType
- Fixed translation in browser titles breadcrumb
- Fixed translation of entities in breadcrumb
- Standardize the global form error
- Internal test classes are now excluded from the autoloader
- Removed unnecessary security checks in
standard_layout.html.twig
3.4.0 - 2016-07-05
- Support for select2 v4 (
select2.full.js
file is needed)
- The
Sonata\AdminBundle\Form\Type\ModelTypeList
is deprecated forModelListType
- Ignoring
translation_domain
in tab menu
- Removed useless
ModelAutocompleteType::getParent
override - Removed useless
read_only
option definition fromModelAutocompleteType
3.3.2 - 2016-06-23
- Reverted #3961 to fix a regression concerning child admins on edit route
3.3.1 - 2016-06-17
- Fixes broken extractor service
- Make CRUDController::editAction respect optional parameter
- Not aligned checkbox and radio on horizontal form
3.3.0 - 2016-06-13
- The
Select
button is always visible and has a primary check style insonata_type_model_list
popups
- The
$context
argument ofAdminInterface::createQuery
was deprecated
- Fix wrong view role check on
AbstractAdmin::getSearchResultLink
- Eternal deprecation warning because of old class on compilation
3.2.0 - 2016-06-04
- Added new field type
email
on the list - Added
AbstractAdmin::configureBatchActions
method - Extract the breadcrumbs building part of the
AbstractAdmin
to a separate class - Added
AbstractAdmin::getSearchResultLink
method - Add the
AbstractAdmin::showMosaicButton
method - Add the
show_mosaic_button
option to configuration
- Overriding
AbstractAdmin::configureBatchActions
is now deprecated AbstractAdmin::getBreadcrumbs
is deprecated in favor ofBreadcrumbsBuilder::getBreadcrumbs
AbstractAdmin::buildBreadcrumbs
is deprecatedAbstractAdmin::$breadcrumbs
is deprecated
- Fix support for composite primary key in
AbstractAdmin::getSubject
- Fixed wrong route in
list__select.html.twig
- Fixed wrong method call in
list__select.html.twig
- Fixed
Pool::getAdminsByGroup()
for the new admin groups values
3.1.0 - 2016-05-17
- Added
AbstractAdmin
class, replacingAdmin
one - Added
BaseMapper::keys
method
- Updated AdminLTE theme to version 2.3.3
RouteCollection::clearExcept
can now have a single string argument
- Deprecated
BaseFieldDescription::camelize
- Deprecated
AdminHelper::camelize
- Deprecated
Admin
class - Deprecated
AdminExtension
class - Deprecated default template loading on exception mechanism
- Fix detection of path when using nested properties with underscores in
AdminHelper:getElementAccessPath
method - Fixed bad rendering on datetime field with
single_text
widget for date and time - Fixed rendering of empty form groups
3.0.0 - 2016-05-08
- Add missing Route constructor parameters to
RouteCollection:add
method - Add the
hasRoute
method to the AdminInterface - Integration of KNPMenu for the admin menu. This integration is reset when the standard layout
standard_layout.html.twig
is overriden. The KNPMenu is available insonata_menu.html.twig
template. - Add
getFieldOption
,setFieldOption
methods to the FilterInterface - Add the
getFilterFieldDescription
method to the AdminInterface - Add the
getMaxPageLinks
,setMaxPageLinks
methods to the PagerInterface
- Admin LTE 2.0 used. Assets files changed.
- Move
sonata_wrapper
block onstandard_layout.html.twig
- CSS class
sonata-autocomplete-dropdown-item
is not automatically added to dropdown autocomplete item insonata_type_model_autocomplete
, use optiondropdown_item_css_class
to set the CSS class of dropdown item. - Text from
Admin::toString
method is escaped for html output before adding in flash message to prevent possible XSS vulnerability.
- Remove
btn-outline
from doctrine-orm-admin form actions buttons