Dear friends,
The main stage of development of version 19.0 has been completed, the release is under testing and pre-release preparation, but in the meantime, we suggest you familiarize yourself with information about what awaits you with the release of the new version.
The following changes have been implemented:
1. A completely new URL handling system has been added for the site's pages. The addresses themselves haven't changed, so there will be no impact on indexing and ranking in search engines. The entire internal approach to working with them has changed. Now all rules are directly handled by DataLife Engine itself, not the server software. Thus, a bulky .htaccess file is not required for URL functionality, only basic lines to activate URL functionality. Additionally, official support is provided for Nginx-based servers without Apache; we will also provide a separate guide on how to include the necessary lines in the configuration for them to work. In most cases, nothing needs to be added, and it will be sufficient, for example, when using ISPManager, to enable the respective option for the domain.
2. A new section has been added to the DataLife Engine control panel, where you can manage all the SEO-friendly URL rules at your discretion and create the appearance of addresses for publications and site sections that you prefer. You can directly change all the rules in the control panel according to which they will work. You can edit existing rules and add new ones. This section includes support for checking the correctness of the rules. The DataLife Engine documentation will provide more detailed information on how to work with this section. Additionally, in case you make mistakes and are unsure how to fix them, there is a possibility to quickly revert to default values. You can reset a single rule or all rules at once. However, be extremely careful, as this section requires special experience and understanding of what you are doing. You should also understand that if pages have already been indexed by search engines, changing the appearance of links on the site will lead to a temporary loss of these pages from the search index until the search engines re-index the site, which lowers the site's ranking in the search system.
3. A global internal restructuring of the DataLife Engine files has been carried out. Now all static files (styles, scripts, images) have been moved from the /engine/ folder to a separate /public/ folder. This allowed for a clearer and more logical internal structure of the script files. It also allows for more reliable control over the isolation of executable files from external access. The /engine/ folder has been completely isolated from the outside world and direct access from the browser, with the only entry points now being the files located at the root of the site (index.php, admin.php). All AJAX requests also go through them. If you use third-party plugins that require direct access from the browser to any files in the /engine/ folder, these plugins will need to be adapted.
4. The system for managing additional fields for publications has been completely rewritten. Information about the additional fields available in the system has been converted to a JSON storage format, which makes it easier to scale the system when using plugins. The data structure has become more understandable and easily extendable. The section for managing additional fields in the admin panel has been completely rewritten from scratch to support the new storage format. Field processing has been moved to using a separate class, which has led to a significant reduction in code, and when modifying additional fields through the plugin system, there will be no need to modify many files, which facilitates code maintenance. The existing additional fields in the system will be automatically converted to the new format when the script is updated.
5. Support for sections has been added for additional publication fields. In the control panel, you can create sections for additional fields where you can place the necessary additional fields. When adding or editing publications in the control panel, these sections are displayed in separate tabs, where your additional fields will be located. Thus, with a large number of additional fields, you can more conveniently organize the structure of adding and editing publications, making it easier to navigate them.
6. For additional fields of publications, the ability has been added to quickly copy the tag of the additional field to the clipboard when adding and editing publications, in case this tag is allowed to be inserted directly into the texts of publications. This way, when writing publications, you can quickly insert the tag itself into the news without the need to manually write it.
7. When displaying additional fields in the template for adding publications on the website (addnews.tpl) using the {xfields} tag, the layout of this tag has been changed to a layout using <div> tags instead of tables. Therefore, if necessary, check and modify the layout of your template to ensure that the fields are displayed correctly.
8. Added support for all tags and tag combinations of additional fields during the preview of an added or edited publication. Also, added support for previewing output tags of additional fields inserted directly into the news text. Thus, the preview does not differ in any way from what will be displayed directly on the site after publication.
9. For the related news output template (related.tpl), support has been added for displaying additional fields that were added directly into the news text, in case the addition of such fields in the text was allowed in the field settings.
10. For the popular news output template (topnews.tpl), support has been added for displaying additional fields that were added directly into the news text, in case the addition of such fields in the text was allowed in the field settings.
11. The management system for additional fields for user profiles has been completely rewritten. The information about additional fields available in the system has been converted to a JSON storage format, which allows for easier scalability of the system when using plugins. The data structure has become more understandable and easily extendable. The section for managing additional fields in the admin panel has been completely rewritten from scratch to support the new storage format. Field processing has been switched to using a separate class, which significantly reduced the code, and when modifying additional fields through the plugin system, it will not be necessary to modify many files, which makes code maintenance easier. The existing additional fields in the system will be automatically converted to the new format when the script is updated.
12. When displaying additional profile fields in the user profile output template on the website or in the user registration template (userinfo.tpl, registration.tpl) using the {xfields} tag, the layout of this tag has been changed to use <div> tags instead of tables. Therefore, if necessary, check and adjust your template's layout to ensure that the fields are displayed correctly.
13. A new type of additional field "Toggle 'Yes' or 'No'" (Checkbox) has been added for user profiles. This type of field in the user profile is displayed as a toggle 'Yes' or 'No' (Enabled or Disabled). The field outputs 'Yes' or 'No' as its value depending on what the user has set in their profile. However, the main purpose of this field is to manage the tags [xfgiven_X] text [/xfgiven_X] and [xfnotgiven_X] text [/xfnotgiven_X]. If the toggle is enabled, the tags [xfgiven_X] text [/xfgiven_X] will display the corresponding text, while the tags [xfnotgiven_X] text [/xfnotgiven_X] will remove it, and vice versa. Thus, with the help of these additional fields, you can easily manage the displayed information on the site in templates. For example, enable or disable the display of certain information in the profile or comments.
14. A new type of additional field 'Date and Time' has been added for user profiles. In this field, you can add a date and time, and for convenience, a pop-up calendar is used when filling out this field. This field has three input formats to choose from: date and time, date only, and time only. In the settings of this field, you can also set the output format of the specified date as you see fit. Additionally, this field has extra options where you can specify whether the date should be localized upon output, such as translating it into the language used by your site, and whether the selected date should be declinable.
15. For the user profile template, as well as the output of comments, personal messages, user card (userinfo.tpl, comments.tpl, pm.tpl, profile_popup.tpl), support has been added for the new tag [xfvalue_X format="Format"], which is intended for displaying additional fields with the type "Date and Time" where X is the name of the additional field, and "Format" is the display format of the date and time specified in the field. You can display this additional field in different date and time formats, not only in the format specified for the field by default in the field settings. For example, the tag [xfvalue_test format="j F Y H:i"] will display the date and time specified in the field in the time format j F Y H:i.
16. For the user profile template, as well as for displaying comments, personal messages, and the user card (userinfo.tpl, comments.tpl, pm.tpl, profile_popup.tpl), support has been added for new tags [ifxfset fields="X"] text [/ifxfset] which output the text enclosed within them if an additional field named X has been set and filled for the user profile. You can list several field names separated by commas. For example, [ifxfset fields="test1,test2"] both fields named test1 and test2 are filled[/ifxfset] will display the text if both fields have been filled. Additionally, tags [ifxfnotset fields="X"] text [/ifxfnotset] have been added, which output the text enclosed within them if a field named X has not been set and filled. You can also list several field names separated by commas. For example, [ifxfnotset fields="test1,test2"]both fields named test1 and test2 have not been filled[/ifxfnotset] will display the text if both fields have not been filled. The main difference from the existing tags [xfgiven_x] and [xfnotgiven_x] is that you can list multiple fields at once and the completeness of all listed fields is checked simultaneously, and it specifically checks for fields without values; for instance, if a field is set to “0” or the value “no”, this is also considered a filled field.
17. For short and full news templates (shortstory.tpl and fullstory.tpl), support has been added for new tags [ifprofilexfset fields="X"] text [/ifprofilexfset] that display the text enclosed within them if the additional field named X has been set and filled for the author's profile. You can list multiple field names separated by a comma. For example, [ifprofilexfset fields="test1,test2"] both fields named test1 and test2 are filled[/ifprofilexfset] will output the text if both fields are filled. Tags have also been added [ifprofilexfnotset fields="X"] text [/ifprofilexfnotset] that display the text enclosed within them if the field named X has not been set and filled. You can also list multiple field names separated by a comma. For example, [ifprofilexfnotset fields="test1,test2"]both fields named test1 and test2 are not filled[/ifprofilexfnotset] will output the text if both fields are not filled.
18. Work has been carried out to optimize the processing of outputting additional fields, aimed at speeding up performance and reducing server load.
19. The word filter management system has been completely rewritten in the DataLife Engine control panel. The information about the filters available in the system has been converted to JSON storage format, which makes it easier to scale the system when using plugins. The data structure has become more understandable and easily extendable through the plugin system and other third-party extensions.
20. Added the ability to upload images for comments by dragging and dropping files into the editor from a folder on the local computer.
21. Added the ability to upload multiple images at once by dragging and dropping files into the editor from a folder on the local computer. Previously, only one image could be uploaded from several that were moved.
22. Full support for the RFC 6531 SMTPUTF8 standard has been added for working with users' email on the site. This means adding support for international names in the email address, as well as international domains in the email address. For example, users can use email addresses like vladimir@site.rf. Support has also been added for email names such as mc'donalds@example.com and so on. To correctly send emails to users with international domains, your server software must also have full support for the RFC 6531 standard, for which it is sufficient to have up-to-date server software.
23. Control of non-existent categories has been added to the URL control system for incorrect links, in case an incorrect address is used and it cannot be matched with a real category, an automatic redirect to the site's homepage will be performed. This innovation will help avoid complex conditions for template tags when forming different template layouts for different sections of the site.
24. Added the ability to create files in the template management section with extensions css, js, tpl for a template. You can also create these files in any subfolders of the selected template in this section without the need for FTP access.
25. Added the ability to delete unnecessary template files directly in the admin panel when editing the selected template without the need for FTP access.
26. Added the ability to move template files from one subfolder to another when editing a template. You can move files within the template while editing it in the control panel without the need for FTP access.
27. Added the ability to create folders in the control panel directly when editing a template. You can create nested folders and subfolders in the template while editing it in the control panel without the need for FTP access.
28. Added the ability to view publications if they are restricted for viewing by countries, for user groups that are listed as protected from such blocking. For example, if a news article is blocked from being viewed in country DE, and the group of administrators is listed among those exempt from country blocks, then administrators will be able to see the publication even if they are in the blocked country.
29. Similar behavior has also been added for restrictions set in advertising materials. If there is a restriction or permission set for specific countries, users in protected groups will be able to see the content even if they are in countries blocked by the settings.
30. When clicking on a user's login on the website, if the user is not already registered on the site, for example, if they were deleted, instead of displaying a card with information indicating that the user is not found, a short push notification is shown stating that the user is not registered. This way, no additional actions are required from the visitor to close the window, and the notification is quicker and more understandable.
31. For the tag of custom publication output {customcomments …}, the capability has been added to use a new parameter name="X", where you can assign a name to the block and later use this name to display or hide different styling in the template if the block contains content or is empty. For example, writing {customcomments name="block1" category="6"} will show comments from category ID 6, and the block itself will receive the name “block1”. New global tags have been added to operate with this name: [customcomments=X] Text [/customcomments] where X is the block name, which outputs the enclosed text if the block with that name contains information. Additionally, opposite tags are added [not-customcomments=X] Text [/not-customcomments] which output the enclosed text if the block with that name contains no information and there are no publications. In this way, you can add additional external styling to the blocks or hide it depending on whether there are comments in the block or not. For example, [customcomments=block1] Header {customcomments name="block1" category="6"} [/customcomments]. The block itself can be located anywhere on the page and not necessarily within these tags. This way, you can adapt and change other styling in the template based on these tags.
32. A new source code example highlighting system has been added. It is similar to the one used in the editor. It is about twice as light as the old one, resulting in faster page loading and quicker highlight compilation. Additionally, the highlighting itself is more diverse and of higher quality.
33. The ability to copy published code examples in one click directly to the clipboard has been added. This allows users to easily copy code examples published on the site.
34. Automatic highlighting of source code examples has been added when using AJAX actions in comments, such as navigating through comment pages, adding and editing comments. Now the code will be highlighted automatically without the need to reload the page.
35. When editing a user's profile in the DataLife Engine control panel, the ability to quickly navigate to view their profile on the site has been added.
36. When enabling multi-category support on the site, the ability to choose the order of categories for publication in the admin panel when using smartphones to work with the control panel has been added.
37. Added support for enabling and using the new version of the jQuery 4 library on the site. You can select the library in the script settings. Before doing so, make sure that all third-party plugins you use in the template are compatible with this new line. Also, the jQuery UI library has been unified and updated to the current version, and now a single jQuery UI library is used, regardless of the jQuery version selected in the settings.
38. The sorting system for elements in several sections of the control panel has been redesigned and improved. Sorting has become smoother and more precise when working with the mouse.
39. When using graphic emojis, the insertion of emojis is now done immediately in the form of emoji images rather than their codes.
40. Added the ability to change the order of categories when adding and editing posts in the control panel, simply by dragging and dropping categories in the list with the mouse. Now there is no need to completely remove selected categories to change their order in the news.
41. Compression of JS and CSS files using PHP has been removed from the script. This function is globally outdated and using PHP in current realities is inefficient. For compressing static files, we recommend enabling file compression using server-side methods, such as in Nginx. This is more efficient, works faster, and consumes significantly fewer server resources.
42. The visual editor has been updated to the current 8.x line. Performance has been improved and a number of issues and bugs have been fixed.
43. A number of animations on the site pages have been optimized to ensure a faster response to user actions and quicker execution of various actions.
44. The cursor position determination system has been improved when working after editing the source code of a publication and pasting it back into the editor.
45. Fixed an issue where code highlighting for C and C# family languages was not displayed.
46. Fixed an issue where group protection from country access blocking was not applied if a list of prohibited countries was specified instead of allowed ones.
47. Fixed an issue where the editor was not displayed when attempting to edit a news item in the control panel if the publication was in a disabled category.
48. Fixed an issue where the insertion of a code block from the clipboard did not work correctly when copying a block from one field with an editor to another field with an editor.
49. Fixed an issue where showing all the latest comments did not work if any of the categories were prohibited from viewing for a user group.
50. Fixed previously detected and reported minor errors in the script.
Comments