Roadiz Versions Save

Roadiz is a polymorphic CMS based on a node system which can handle many types of services. This is v1 repository, for v2 and newer releases check https://github.com/roadiz/skeleton.

v1.2.14

4 years ago
solr:
    endpoint:
        localhost:
            host: localhost
            port: '8983'
            path: /
            core: mycore

v1.2.0

4 years ago

🏝 Dear fellow followers,

Here is our Roadiz summer update with great new features and improvements. But before, just a quick reminder with some useful links to bookmark:

Changelog

  • Use standard oEmbed to fetch medias from Youtube, Vimeo, Dailymotion, Soundcloud, Mixcloud, TED, Spotify and Twitch. No more need for an API key to fetch Youtube videos and Soundcloud embeds.
  • Using Symfony Workflow to handle Node status from draft to deletion using guarded transitions. Node::setStatus() method is now @internal. Use $this->get('workflow.registry')->get($node)->apply($node, 'publish') to publish a node. Roadiz workflow registry can be extended with your own entities state machine.
  • New Attributes entities. Basically, it's kind of Tag with values. You can create a weight attribute then set it to 30 kg for one node, and to 15 kg for another one. Attribute system is very handy if your customer wants some flexibility in its node schema without updating node-types and your Twig template for each new field. Just add new attributes, then loop over them in your templates. Ok, so why can't we use only attributes and no more node-types fields? Because attributes are for scalar values only (no relations) and not queryable (yet…). But we still index them in your Solr index.
  • Image documents size are now stored in database to avoid Roadiz loading image in memory each time you need width and height information.
  • AppController::getRoot and Theme::getRoot were deprecated and have been removed now.
  • Added password creation policies: minimum 6 characters long, at least one uppercase and one digit.
  • New NSEntities::xxxxSources methods to fetch NodesSources instead of Nodes in your Controllers and templates. For example, use {{ nodeSource.referencePageSources[0] }} instead of {{ nodeSource.referencePage[0].nodeSources.first }} to fetch your referencePage field in Twig. xxxxSources methods are optimized when referenced nodes are only from one type, avoiding left join on every node-types. Execute bin/roadiz generate:nsentities to get these new proxy methods.
  • New ttl field on node and defaultTtl field on node-types to make HTTP cache TTL editable from back-office (if your theme use these new fields). 0 TTL means no cache. Node TTL is in minutes, not seconds.
  • DefaultController for easier theme development, no more need to create a PHP controller for each node-type, just a Twig template. Don’t worry, you’ll still need controllers for custom template assignation or logic, but avoiding Controller creation for basic pages will speed up development…
  • Centralized and extensible serializer (jms/serializer) for all Roadiz entities : $this->get('serializer'). We added normalization annotations on each Roadiz entities to prepare full JSON API in your themes.
    • URL serializer listener to inject node-source and document URL in JSON responses.
    • New import/export methods based on JMS Serializer for Node-types, Roles, Settings, Attributes and Tags. We are keeping Node import for later 😇. Export files are now plain JSON files. Normalization and denormalization processes are handled seamlessly by JMS for a better support when we add or remove fields from entities.
  • Added description field to Setting, because a bit of documentation never hurted anyone (except for the one who writes it).
  • makeResponseCachable is now using event dispatcher to alter Response cache headers and to remove headers set by active session.
  • Use Events to generate node-source paths. Useful to vary {{ path() }} results according to NodeType. For example, a Link node path should not be generated as a real node but it should be generated against its linked node URL instead.
    • Improved NodeSource path generation event with parameters and completion support for generated path (a complete path does not need Router to prepend baseUri).
  • Fixed Kernel dispatcher early awakening. Moved initEvents method call to boot allowing register method to be overridden in your AppKernel class.
  • Get rid of Google Maps in back-office to use Leaflet + OpenStreepMap. Tile rendering can be slower, but it’s open-source data and no more need to setup Google API key to view maps in back-office 🤘.
  • Added FirewallEntry::firewallAfterLogout parameter to customize path after user logged out (available since v1.1.19) instead of redirecting on firewall’ entry point.
  • New themes:migrate command to combine themes:install --data, generate:nsentities and orm:schema-tool:update commands.
  • New Composer ScriptHandler::rotateSecret script to generate a new security.secret at each composer install and update.

Deprecations

Roadiz v1.2 is compatible with PHP 7.2 minimum. It’s time to upgrade…

  • Deprecated validateAccessForRole() method to use Symfony standard denyAccessUnlessGranted() method in order to enable complex Voters
  • |url twig filter was deprecated for NodeSource and Node and has been removed now
  • Deprecated all findByXXXXAndFieldName repository methods (custom-forms, node-sources, nodes, documents) because they are not safe when multiple fields exist with the same name.
  • Additional service providers and console commands should be registered in your app/AppKernel instead of your configuration (which can be volatile between different environments).
additionalServiceProviders: {  }
additionalCommands: {  }

Migrations

This update need many SQL changes then some migrations to populate missing new data. Make sure to backup your database before migrating! ☞ bin/roadiz database:dump -c

Database

  • New ttl field on node and new defaultTtl on node-type
  • New attributes feature needs several tables to work and new document fields :
CREATE TABLE attribute_values (id INT AUTO_INCREMENT NOT NULL, attribute_id INT DEFAULT NULL, node_id INT DEFAULT NULL, position DOUBLE PRECISION NOT NULL, INDEX IDX_184662BCB6E62EFA (attribute_id), INDEX IDX_184662BC460D9FD7 (node_id), INDEX IDX_184662BC462CE4F5 (position), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
CREATE TABLE attributes (id INT AUTO_INCREMENT NOT NULL, code VARCHAR(255) NOT NULL, searchable TINYINT(1) DEFAULT '0' NOT NULL, type INT NOT NULL, UNIQUE INDEX UNIQ_319B9E7077153098 (code), INDEX IDX_319B9E7077153098 (code), INDEX IDX_319B9E708CDE5729 (type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
CREATE TABLE attribute_value_translations (id INT AUTO_INCREMENT NOT NULL, translation_id INT DEFAULT NULL, value VARCHAR(255) DEFAULT NULL, attributeValue_id INT DEFAULT NULL, INDEX IDX_1293849B9CAA2B25 (translation_id), INDEX IDX_1293849BFF82614D (attributeValue_id), INDEX IDX_1293849B1D775834 (value), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
CREATE TABLE attribute_translations (id INT AUTO_INCREMENT NOT NULL, attribute_id INT DEFAULT NULL, translation_id INT DEFAULT NULL, label VARCHAR(255) NOT NULL, options LONGTEXT DEFAULT NULL COMMENT '(DC2Type:simple_array)', INDEX IDX_4059D4A0B6E62EFA (attribute_id), INDEX IDX_4059D4A09CAA2B25 (translation_id), INDEX IDX_4059D4A0EA750E8 (label), UNIQUE INDEX UNIQ_4059D4A0B6E62EFA9CAA2B25 (attribute_id, translation_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
ALTER TABLE attribute_values ADD CONSTRAINT FK_184662BCB6E62EFA FOREIGN KEY (attribute_id) REFERENCES attributes (id) ON DELETE CASCADE;
ALTER TABLE attribute_values ADD CONSTRAINT FK_184662BC460D9FD7 FOREIGN KEY (node_id) REFERENCES nodes (id) ON DELETE CASCADE;
ALTER TABLE attribute_value_translations ADD CONSTRAINT FK_1293849B9CAA2B25 FOREIGN KEY (translation_id) REFERENCES translations (id) ON DELETE CASCADE;
ALTER TABLE attribute_value_translations ADD CONSTRAINT FK_1293849BFF82614D FOREIGN KEY (attributeValue_id) REFERENCES attribute_values (id) ON DELETE CASCADE;
ALTER TABLE attribute_translations ADD CONSTRAINT FK_4059D4A0B6E62EFA FOREIGN KEY (attribute_id) REFERENCES attributes (id) ON DELETE CASCADE;
ALTER TABLE attribute_translations ADD CONSTRAINT FK_4059D4A09CAA2B25 FOREIGN KEY (translation_id) REFERENCES translations (id) ON DELETE CASCADE;
ALTER TABLE settings DROP FOREIGN KEY FK_E545A0C550DDE1BD;
ALTER TABLE settings ADD description LONGTEXT DEFAULT NULL;
ALTER TABLE settings ADD CONSTRAINT FK_E545A0C550DDE1BD FOREIGN KEY (setting_group_id) REFERENCES settings_groups (id) ON DELETE SET NULL;
CREATE INDEX IDX_E545A0C58CDE5729 ON settings (type);
CREATE INDEX IDX_E545A0C55E237E06 ON settings (name);
CREATE INDEX IDX_E545A0C57AB0E859 ON settings (visible);
ALTER TABLE nodes ADD ttl INT DEFAULT 0 NOT NULL;
ALTER TABLE documents ADD imageWidth INT DEFAULT 0 NOT NULL, ADD imageHeight INT DEFAULT 0 NOT NULL;
CREATE INDEX IDX_A2B072882100AA2E ON documents (mime_type);
ALTER TABLE node_types ADD default_ttl INT DEFAULT 0 NOT NULL;
CREATE INDEX IDX_7C7DED6D2B36786B ON nodes_sources (title);

Roles

  • Existing Roadiz sites should add ROLE_ACCESS_ATTRIBUTES in order to access new Attributes admin sections.

Documents

  • Need to perform bin/roadiz documents:size command to migrate all documents images size to database if you want Twig filters imageSize, imageRatio and imageOrientation to keep on working.

NodeSource Entities

  • Execute bin/roadiz generate:nsentities to update your NS classes and benefit from new proxy methods.

More than Roadiz…

v1.1.0

5 years ago

At last, our first minor upgrade since the official Roadiz release. No worries about compatibilities but some great new features: especially with <picture> support and automatic WebP convert.

Do not hesitate to share and submit your suggestion on our forum: https://ask.roadiz.io/

👋

Migrations

No database migration to perform. ☀️

Changelog

  • Added _format parameter to NodeSourceRouting for matching and generating NodeSource responses in JSON and XML.
  • Fixed translation menu with static route but also node.
  • Improved default theme with picture element and twig imageFormats extension.
  • Enforce that debug-bar is rendered only once.
  • Removed deprecated Console commands.
  • Made DispatcherDebugCommand theme-aware to debug theme event-listeners.
  • Improved doctrine caches. ⚠️: cache driver must be set for using apcu.
  • Address Symfony 4 RoleInterface deprecation.
  • Made user encoder algorithm configurable (sha512, pbkdf2, bcrypt, argon2i)
  • New VagrantBox (1.3) using PHP 7.3
  • New Docker images for CI build and production roadiz/php73-runner, roadiz/php73-nginx-alpine
  • Fixed Symfony 4 CollectionType which stores items with non-numeric keys. Using a new NodeSourceCollectionType.
  • Removed wikimedia/composer-merge-plugin, you should not create a composer.json inside your themes but use Roadiz Standard edition and its root composer.json for your dependencies.

Back-office improvements

  • Made admin and login images overridable from themes.
  • Improved node-source edition tabs.

Document improvements

  • Added picture element and WebP support. (Check that your PHP-GD extension is compiled with WebP support).
  • Added lazyload_class option for picture element
  • Fixed Vimeo background option
  • Support new flip image processor.

Custom/contact form improvements

  • #320 - Improve custom-form UI and update creation dates after duplication.
  • Allow multiple custom-form receivers.
  • Allow multiple uploaded files and sub-form files in contactFormManager.
  • Handle \DateTime values in contact-form.
  • Added new emailType field for EmailManager to allow custom email templates.
  • Made ContactForm name customizable to allow several forms on the same request.
  • New HoneypotType (available in v1.0.20 too) to prevent bot submit (not as efficient as a Recaptcha but no need to create an app key and secret).

v1.0.0

5 years ago

🍾 We decided to release version 1.0.0… at last!

As said by semver specifications:

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backwards compatibility, you should probably already be 1.0.0.

So let’s be bold and let’s go to 1.0.0. We still have lots of enhancements and feature in mind to add to Roadiz, but we will keep on supporting backward compatibility on patch (hotfix) and minor releases. We’re even bolder we increased minimum required PHP version to 7.1, it’s time to give up PHP 5 you’ll never regret it after seeing the speed boost.

Migrations

Database

  • Added a defaultValues field to Settings to be able to create ChoiceList settings:
ALTER TABLE settings ADD defaultValues LONGTEXT DEFAULT NULL;

Configuration

  • Themes are now statically configured, bin/roadiz themes:generate will update your app/conf/config.yml file automatically:
themes:
    -
        classname: \Themes\DefaultTheme\DefaultThemeApp
        hostname: '*'
        routePrefix: ''
  • SwiftMailer removed standard PHP mail transport so you have to use SMTP Mailer with Vagrant’ mailcatcher:
mailer:
    type: smtp
    host: localhost
    port: 1025

Themes

  • Twig 2.* introduce some breaking changes, here are some of them to upgrade your themes templates:
  • Replace filter, |replace('old', 'new') must be used only with array syntax: |replace({'old': 'new'})
  • bags and request variables no longer need to be passed in your includes, they’ve been globalized.
  • Symfony 3.* removed form type names, you must use full-qualified class names instead: TextType::class, plus you cannot use AbstractType constructors with parameters anymore since Symfony will instanciate your form types for you. Use form option resolver instead.
  • Kernel $container field has now protected access. Every Standard Edition projects should update their clear_cache.php entry point.
$kernel->getContainer()->offsetSet('request', $request);
$kernel->get('requestStack')->push($request);

Changelog

  • Roadiz v1.0.0 requires PHP v7.1+
  • Upgraded Symfony to 3.4! You must check Symfony deprecation from 2.8 to 3.0, such as Form types usage. See all upgrades here: https://github.com/symfony/symfony/blob/2.8/UPGRADE-3.0.md#form, many of them are only related to Symfony but it can be useful to upgrade your Roadiz themes.
  • Upgraded Doctrine to 2.6+
  • Upgraded to Twig 2.5 You must check Twig deprecations from 1.* to 2.*, especially on replace filter and macro handling.
  • Upgraded to Swift Mailer v6+, Swift_MailTransport has been removed
  • Upgraded to Guzzle v6
  • Refactored Themes system to make them statically load from Roadiz configuration instead of database. This will simplify Roadiz bootstrap process and avoid too early dependency on database. Migration and compatibility are handled by a ThemeResolverInterface.
  • Themes do no longer have relationships with Nodes to define a home node per theme. If you are using this feature, do not upgrade to 1.0.0 or define a system-wide home node.
  • Themes can have priority for choosing Twig templates or override translations.
  • Added native Symfony inline rendering with render() and controller() Twig methods. Roadiz block rendering now inherits Symfony’s FragmentHandler logic and sub-request routine.
  • Added Sentry monolog handler, needs to explicitely require sentry/sentry library in your composer.json
  • Added new Custom collection node-type field type to create repeatable data patterns in your nodes. Create an FormType in your theme with any scalar fields and register it in your node-type field default value: Roadiz will create a CollectionType form using your custom type and store it as an array.
# AbstractType class name
entry_type: Themes\MyTheme\Form\FooBarType
  • Cache clearer are now executed by an EventSubscriber to make it extendable from your themes. Just listen to RZ\Roadiz\Core\Events\CacheEvents::PURGE_REQUEST event.
  • Switched to events system to build Doctrine query on Nodes, and NodesSources repositories. So you can add query builder criteria from your themes listening to QueryBuilderEvents::QUERY_BUILDER_BUILD_FILTER event.
  • Unavailable translations can now be previewed using preview.php entry point
  • Kernel $container field has now protected access. Use getContainer() or get($service) methods
  • ROADIZ_ROOT constant is deprecated, use Kernel::getProjectDir() instead (needs a AppKernel upgrade on your Standard-Edition projects)

Minor changes

  • Added node’ dynamic node-name parameter in RZN export file.
  • Added Italian language support (beta), feel free to review it
  • Added ExplorerProvider options to customize its behaviour without needing another Provider class
  • Fixed node-tree widget rendering when using custom ordering or not valid sorting key.
  • Added more emotions to exception pages… 😉
  • Improved Roadiz back-office table column sorting system
  • Added makeResponseCachable method in controllers to set right headers for reverse proxies.
  • Improved theme CLI importer and node-type diff tool
  • Display a Preview badge on website on preview.php entry point
  • Improved url-alias creation and removal
  • Added createNamedFormBuilder method in your controllers.
  • Use requestStack when possible to prevent null Request.
  • Fixed NodesSourcesRepository searchBy method when Nodes are ordered by nodes-source publication date.
  • Added new Font variants: thin, extra-light, medium, semi-bold, extra-bold and black.
  • Kernel::CMS_VERSION will now show master or develop branch, Kernel::$cmsVersion still holds Roadiz semantic version.

v0.22.6

6 years ago
  • Added new configuration parameters for session cookie (in security group):
security:
    session_name: roadiz_session_token
    session_cookie_httponly: true
    session_cookie_secure: false
  • Added new debug:configuration console command
  • Moved ini_set config from Kernel handle to boot time
  • Cleaned Rozier JsonResponse return code
  • Fixed double documents meta creation with Splashbase and EXIF listener

v0.22.0

6 years ago

Migrations

Each user can set his locale, there is a new column/index on their table:

ALTER TABLE users ADD locale VARCHAR(7) DEFAULT NULL;
CREATE INDEX IDX_1483A5E94180C698 ON users (locale);

Rozier now use Webpack and inject its CSS and JS files into twig templates like any theme. Make sure to use namespaced imports in your themes! If not, your theme will try to load backoffice assets instead.

{% include '@MyTheme/partials/js-inject.html.twig' %}
{% include '@MyTheme/partials/css-inject.html.twig' %}

Changelog

  • ÂĄHola! Added Spanish language
  • Added themes:info command
  • Accept any full-qualified namespaced ThemeApp for themes:install and themes:assets:install commands (useful to add a third-party theme located in vendor/ folder)
  • Backend users can now choose their own back-office language, added locale field on User entity. Be careful: language must be created as a Translation.
  • Theme 404 page is triggered for NotFoundHttpException and ResourceNotFoundException exceptions
  • Prevent locked nodes to be duplicated, to be moved and changed publication status
  • Big javascript refactoring on Rozier back-office theme from @Gouterman. Switched to ES6 and Webpack
  • Language menu is ordered by priority (defaultTranslation) and locale name in node tree.
  • Update Guzzle to version 6+, make sure your themes are up to date

v0.21.0

6 years ago

Migrations

  • As we added documents to TagTranslation entity, you have to execute some SQL migrations:
CREATE TABLE tags_translations_documents (id INT AUTO_INCREMENT NOT NULL, tag_translation_id INT DEFAULT NULL, document_id INT DEFAULT NULL, position DOUBLE PRECISION NOT NULL, INDEX IDX_6E886F1F22010F1 (tag_translation_id), INDEX IDX_6E886F1FC33F7837 (document_id), INDEX IDX_6E886F1F462CE4F5 (position), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
ALTER TABLE tags_translations_documents ADD CONSTRAINT FK_6E886F1F22010F1 FOREIGN KEY (tag_translation_id) REFERENCES tags_translations (id) ON DELETE CASCADE;
ALTER TABLE tags_translations_documents ADD CONSTRAINT FK_6E886F1FC33F7837 FOREIGN KEY (document_id) REFERENCES documents (id) ON DELETE CASCADE;
ALTER TABLE users CHANGE picture_url picture_url LONGTEXT DEFAULT NULL;

Major changes

  • Added log cleanup command: bin/roadiz logs:cleanup which delete logs entries older than 6 months from database
  • Added new multiple and simple provider fields to link NodesSources to external objects such as API items
  • New TagTranslationDocuments relation entity to add media to your tags translations (see migration above)
  • Old methods for generating NodesSources paths and url are now triggering E_USER_DEPRECATED errors. You should check that your themes are now using {{ path(nodeSource) }} in templates or $this->generateUrl($nodeSource) in PHP Controllers.
  • For Windows users, we added --symlink and --relative options when generating your themes and copying assets to public directory. Default will be hard copy. #283
# For MacOS and Unix
bin/roadiz themes:generate --symlink --relative FooBar 
# For Windows (absolute symlink)
bin/roadiz themes:generate --symlink FooBar 
# For Windows (hard copy)
bin/roadiz themes:generate  FooBar 
  • New bin/roadiz themes:assets:install command to copy or symlink a theme assets when it already exists. You can use it with Install, Debug and Rozier themes too.
# For MacOS and Unix
bin/roadiz themes:assets:install --symlink --relative FooBar 
# For Windows (absolute symlink)
bin/roadiz themes:assets:install --symlink FooBar 
# For Windows (hard copy)
bin/roadiz themes:assets:install  FooBar 

Minor changes

  • Remove starting slash when using Packages
  • Roadiz fonts update. Glyph native files are now available on https://github.com/roadiz/fonts repository
  • Refactorization of nodes-sources forms types for future Symfony compatibility update
  • Created BasicFirewallEntry for front-end themes
  • Fixed EntityListManagerorder override
  • Fixed NodeRepository to really check if a nodeName exists no matter publication and security status
  • Added apcu extension detection when no apcu_bc is loaded
  • Added new ExplorerProviderItemType form component with min and max length options and a VueJS widget
  • Set explicitly PHP platform to Roadiz composer.json to prevent from downloading PHP 7.1 only vendor libraries (such as Doctrine ones).
  • User picture URL is now editable
  • Improved SoundCloud embed document search allowing track and playlist URLs.
  • Updated vue-draggable package

v0.20.14

6 years ago
  • Fixed Solr query with translated titles and fields

v0.20.0

6 years ago

New dependencies

  • roadiz/models
  • roadiz/documents
composer update -o;

Migrations

ALTER TABLE custom_form_fields ADD placeholder VARCHAR(255) DEFAULT NULL;
ALTER TABLE node_type_fields ADD placeholder VARCHAR(255) DEFAULT NULL;
ALTER TABLE custom_form_field_attributes CHANGE value value LONGTEXT DEFAULT NULL;
# Check if no data is deleted
bin/roadiz orm:schema-tool:update --dump-sql 
# Apply migrations
bin/roadiz orm:schema-tool:update --dump-sql --force
# Empty caches
bin/roadiz cache:clear -e prod
bin/roadiz cache:clear-fpm -e prod
bin/roadiz cache:clear -e prod --preview
bin/roadiz cache:clear-fpm -e prod --preview

⚠️ Breaking changes

In order to remove Kernel singleton disease from Doctrine entities and handlers, we chose to rebuild how entities are linked to their handlers and their repositories.

  • Kernel::getService and Kernel::getInstance static singleton methods have been removed. Kernel is now a classic instance. Make sure to update your entry points scripts to use new AppKernel instead of AppKernel::getInstance in the following files:
    • web/index.php
    • web/dev.php
    • web/clear_cache.php
    • web/preview.php
    • bin/roadiz
  • We began to split Roadiz logic in several packages so you’ll need to adapt your configuration file entities paths as shown below:
entities:
    # remove previous AbstractEntities path and replace with
    - vendor/roadiz/models/src/Roadiz/Core/AbstractEntities
  • getHandler method on entities has been removed.
    • You must use $this->get('factory.handler')->getHandler($entity) in PHP controllers or entity|handler Twig filter.
    • Find & replace .handler to |handler in your Twig templates.
  • NodesSourcesHandler::getParent() method is deprecated. You can directly use NodesSources::getParent(), no need to spawn a handler for that.
    Find & replace nodeSource.handler.parent or nodeSource|parent to nodeSource.parent in your Twig templates.
  • getViewer method on entities has been removed.
    • You must use $this->get('xxxxx.viewer') factory service in PHP controllers.
    • Twig statement document.viewer.embedFinder is replaced by new document|embedFinder filter.
  • DocumentViewer::getDocumentUrlByArray has been removed, use DocumentUrlGenerator class instead.
  • EntityRepository has a new constructor signature! If you created custom Entity classes in your theme with their own repository class, you MUST adapt its constructor as we automatically inject DI container into Roadiz repositories.
  • NodesSources entity is now implementing Doctrine ObjectManagerAware interface 😇. We know that’s a small gap from the usual MVC pattern but it’s needed to resolve related entities according to your translation, without sacrificing performances.
  • Generated nodes-sources classes must be regenerated in order to get rid of getHandler call from magic methods: bin/roadiz generate:nsentities.
  • Changed DocumentFactory constructor signature to use it from a service factory. File and Folder must be injected by setter, not in constructor anymore.

Deprecation removals

  • Deprecated Kernel::getService and Kernel::getInstance static methods have been removed.
  • Deprecated getHandler method on entities has been removed.
  • Deprecated getViewer method on entities has been removed.
  • Deprecated EntryPointsController class has been removed.
  • Deprecated RolesBag class has been removed.
  • Deprecated SettingsBag class has been removed.
  • Deprecated Document files methods have been removed
    • getAbsolutePath
    • getPublicAbsolutePath
    • getPrivateAbsolutePath
    • getFilesFolder
    • getPrivateFilesFolder
    • getFilesFolderName
    • getPrivateFilesFolderName
    • fileExists
    • getOrientation
    • getImageSize
    • getImageSizeRatio
  • Deprecated Font files methods have been removed
    • getEOTAbsolutePath
    • getWOFFAbsolutePath
    • getWOFF2AbsolutePath
    • getOTFAbsolutePath
    • getSVGAbsolutePath
    • getFilesFolder
    • getFilesFolderName

Changelog

Major changes

  • No more Kernel singleton
  • Update YAML component to 3.2.*, need to validate your theme routes.yml files
  • Added more options for Doctrine configuration. Added UTF8 connection by default.
  • Integrated PHP debugBar with dump messages, timeline, security and doctrine debug tools.
  • [Backoffice] Show a modal window when back-office user is not connected anymore to notice sessions loss.
  • 🚩 Enable static translation using YAML format in themes.
  • Moved login password request and reset logic into Traits to be able to reuse and customize them in your themes.
  • Added country_iso twig filter to display a Country name from ISO code 2-letters. No more need to implement it in your themes each time you deal with country names.
  • Many to many and Many to one field types support now universal mode.
  • [Performances] Setting and Role bags now inherit from Symfony ParametersBag with SQL performance improvement.
  • Added Bags to theme assignations. New NodeTypesBag! You can access settings, roles and node-types in your Twig templates without assigning them before.
  • Removed Kernel singleton from handlers methods using an AbstractHandler parent class, ready to switch to service factories.
  • [Performances] Select urlAliases and node relations eagerly during findBy for better performances when generating URLs.
  • Added new CLI command to clear PHP-FPM caches through cURL and enabled clear_cache.php environment choices.

Minor changes

  • 🏳️ Wired translator to Validations constraints
  • Removed MX check on email validation.
  • Fixed #268 - Only display debug-panel if corresponding setting is TRUE.
  • Extracted Solr select query creation in order to set DisMax rules from child classes.
  • [Performances] Removed useless inverse One to One between Node and Newsletter
  • [Performances] Added cacheable flag to query-builders for Nodes and NodesSources
  • Added placeholder field to CustomFormField and NodeTypeField.
  • Fixed orphan document deletion and EXIF detection.
  • Made custom-form answers values and field-names translatable in HTML views and XLSX exports.
  • [Performances] Use node-types bag for first Doctrine inheritance-mapping initialization.
  • Catch AuthenticationCredentialsNotFoundException when querying nodes and node-sources in preview mode to prevent Roadiz to crash.
  • [Firewall] Fixed firewall map adding priority index to firewall listeners, ensuring AnonymousListener is always before SecurityListener.
  • [Firewall] Simplified theme firewall creation, overriding addDefaultFirewallEntry static method
  • [Firewall] Redirect user to back-office if he requests login page while being already authenticated
  • Added default a publishedAt date and time at nodeSource creation.
  • Do not throw exception by default using Twig filters with null values.
  • Fixed non-publishable nodes still displaying their date in node-trees because then have a publishedAt value anyway.
  • Fixed custom form answer type length and added abstract field type checks

v0.19.2

6 years ago

Fixed node-source duplication that deleted url-aliases.

Migration

ALTER TABLE url_aliases DROP FOREIGN KEY FK_E261ED65AA2D61;
ALTER TABLE url_aliases ADD CONSTRAINT FK_E261ED65AA2D61 FOREIGN KEY (ns_id) REFERENCES nodes_sources (id);