Hello Everyone,
I am pleased to announce that the Totara 17.0 release is now available.
This release includes:
- External API with HR services
- The ability to apply achievement paths in bulk to competencies
- Centralised performance activity notifications
- New Weka editor features
Along with many more improvements and fixes, please refer to the full changelogs below.
For detailed change-management information, please see the Technical Release Notes immediately following this post.
A big thank you as well to everyone who has contributed to this release!
Kind regards,
Release Team
Release 17.0 (08th November 2022):
==================================
New features:
TL-29075 Approval workflows platform with XState
The approval workflows feature is designed to give Totara developers and admins
a system for modelling business processes that require a user to submit
information and/or get approval from one or more other users before something is
allowed to happen. It consists of a workflow manager (for admins) and an
applications dashboard (for applicants and approvers).
It includes the XState front-end framework for managing the complexity of
single-page Tui applications in a systematic way.
This is a developer preview release, which means:
* There is a single, simple approvalform plugin, and no integration with other
parts of Totara TXP.
* Application form definitions must be created by a developer, and embedded in
an approvalform subplugin.
* Simple workflows can be created by admins, but complex workflows must be
scripted by a developer.
* A custom report source and table is required to produce an application report
with columns that reference submitted form data.
* Approval workflows is disabled and off-menu by default.
TL-31318 Competency achievement paths can now be copied to other competencies in bulk
To improve the efficiency of managing competency achievement paths we've
introduced the ability to copy an existing achievement path onto many other
competencies.
As the achievement path may be dependent upon the competency's scale, the admin
can only copy an achievement path to competencies in the same framework.
The copied achievement path will overwrite any pre-existing achievement path on
the copy to competencies, the action is not reversible.
The copy action does not copy courses, or child competencies associated with an
achievement path.
The copy action does copy courses linked from a learning plan.
TL-34139 External GraphQL API
Added a new external API framework to provide a modern, flexible and extensible
API to allow third-party services to access and modify Totara functionality and
data.
Features include:
* GraphQL endpoint with OAuth 2.0 for authentication.
* Administration interface for managing multiple individual API clients.
* Each API client uses a service user account to allow access control to be
managed via roles and capabilities.
* New preconfigured 'API user' role.
* Site-wide and per-client configuration options to control if client is
enabled, API usage (such as rate limiting), token expiry times and debug message
levels.
* API events logged in site logs, filterable via 'API' source option.
* Multitenancy aware, allowing for the creation and management of tenant-level
API clients by tenant members, with appropriate access limitations.
* In-product reference documentation, providing up-to-date reference
documentation for the API based on the site version, including any third-party
API customisations.
The new API is disabled by default, but can be enabled for Enterprise customers
via the 'Configure features' administration menu option.
See the developer documentation for more information about Totara APIs:
https://help.totaralearning.com/display/DEV/API+documentation
TL-34707 Auditing for centralised notifications
After a site has been upgraded to Totara 17, the centralised notifications
system will start recording logs of which notifiable events have been triggered,
and which notifications are sent out as a result. These logs can be viewed by
users with the permission totara/notification:auditnotifications, by following
the 'View notification logs' link on the notification management page, or user
profile.
These logs are displayed via embedded reports, as such there are three new
report sources:
* Notification event log - Displays logs for all the events that trigger a
notification
* Notification log - Displays logs for all the notifications triggered by an
event
* Notification delivery log - Displays logs for all messages sent by a
notification
For more information see
https://totara.help/17/docs/auditing-centralised-notifications
TL-34796 Added API services to support creating, updating, deleting and viewing users and job assignments
Added API services to the new external API framework (see TL-34139) to allow
external access to core HR services. This includes:
* Creating users
* Updating users
* Deleting users
* Suspending or unsuspending users
* Fetching a list of users and their profile data
* Creating job assignments
* Updating job assignments
* Deleting job assignments
User services include support for fetching and updating user profile fields, but
not for creating or modifying the fields themselves via the API.
Job assignment services include support for setting organisations and positions,
though not for managing the position and organisation frameworks themselves via
the API.
For more information on HR services syntax and supported options, see the
in-product API reference documentation.
TL-35158 Layout support in Weka
As a result of user research, support for multi-column layout has been added to
the Weka editor. This allows users and content authors more flexibility in how
they choose to present content.
There are options for one-, two- and three-column layouts, with varying column
sizes.
Weka layouts are available in Engage resources, Perform static content elements,
and in Totara Learn when using Weka as the editor.
In Totara Mobile, content added to Weka layouts will not be visible as it does
not yet support layouts.
Important:
TL-35320 Updated system requirements
* Increased the minimum required PHP version to 7.4.3
* Added support for PHP 8.1
* Added support for MariaDB 10.7.2+
* Added support for MariaDB 10.8.3+
* Increased minimum required Python version for Machine Learning to 3.7
Information on our recommended system environments can be found on the help
site:
https://help.totaralearning.com/display/TPD/Recommended+hosting+environments
Security issues:
TL-35316 Removed database migration tool web interface
The experimental database migration tool web interface located under
'Development > Experimental > Database migration' has been removed. Please use
the command line version of this tool instead.
Also available in 16.7 and later releases.
Performance improvements:
TL-33272 Regrading of large courses is now offset to cron
When a course has more than 100 enrolments or 100 grade items, any regrading
necessary (such as adding a new activity or changing grade settings) will be
done on the next cron run rather than blocking page load. When this happens, a
message is displayed to the user to let them know that grades are being
recalculated.
For smaller courses, the regrading is done in real time.
This is a follow-up to an earlier patch (TL-31570), which introduced background
regrading, but only when adding a new activity.
Also available in 16.2 and later releases.
TL-33362 Improved the loading time of the course enrolled users page
Also available in 16.1 and later releases.
TL-33363 Deleting an enrolment instance has been shifted to a background task
Previously when deleting an enrolment instance from a course, users would be
unenrolled immediately and then the instance would be deleted. If the number of
enrolled users was large, the page may take a long time to respond.
With this patch, the deletion is shifted into a background task run on the next
cron run.
Also available in 16.2 and later releases.
TL-34063 Improved the performance of the user activity page
Also available in 16.1 and later releases.
TL-34361 Improved the performance when a user signs up for a seminar event
When a user books for a seminar event, the system verifies whether this will
result in a booking conflict. Previously, this check was done multiple times
during the signup process. This patch now caches the result for one minute,
allowing the reduction of repeating the same query multiple times during this
time.
Also available in 16.6 and later releases.
TL-34382 Improved performance for the user search when selecting performance activity participants
Also available in 16.2 and later releases.
TL-34400 Fixed GraphQL performance regression from latest graphql-php library update
The latest version of the webonyx/graphql-php library added schema validation
that is unnecessarily repeated for each call by default. This patch switches the
unnecessary validation off, improving performance of all GraphQL operations.
Also available in 16.2 and later releases.
TL-35218 Improved the performance of the current learning block and the GraphQL query returning the current learning items for Mobile
Also available in 16.5 and later releases.
TL-35721 Improved the performance of Manager's manager relationship with MariaDB
This was most noticeable while activating a performance activity using the
Manager's manager relation, where multiple relations needed to be fetched.
Also available in 16.6 and later releases.
TL-35726 Fixed overzealous user loading while viewing a users performance activities
Previously while loading the subject instances for a participant in a
performance activity, a lot of unnecessary users were loaded into memory to
generate the relations. This has been fixed to only load relevant users.
Improvements:
TL-20269 Added a setting and scheduled task to delete old records from the course completion log
The course completion log table stores transaction history for the completion
editor, and can grow very large on sites with a lot of activity. A new 'Delete
course completion logs after' setting allows admins to automatically cull the
oldest records from the log. Once those records are deleted, they will no longer
appear in the completion editor as history.
The default is to never delete old logs, and no data is purged on upgrade until
the setting is changed.
Also available in 16.1 and later releases.
TL-22579 Added new alignment setting for the featured links block
Added the following options:
* Left align
* Centre align
* Right align
* Justified
The justified option will position the links with even spacing across the block.
TL-25521 Implemented visibility options for site policies
Site policy visibility can now be set to all users (the default), authenticated
users only, or guest users only.
Also available in 16.1 and later releases.
TL-29549 Added displaying manual rating comments in the competency activity log
Comments that were added when manually rating a user's competency will now be
displayed in the user's activity log for that competency.
Also available in 16.2 and later releases.
TL-30485 Updated strings on the Engage access form when creating a resource and added an info icon button to the topic selector
Also available in 16.4 and later releases.
TL-31660 Improved the help text for seminar third-party email setting
Also available in 16.1 and later releases.
TL-32119 Added the missing event trigger for suspended users
Also available in 16.2 and later releases.
TL-32731 Clicking on an Engage article no longer triggers editing mode
Users who have permission to edit an Engage article are no longer put into edit
mode when they click on it. This allows those users to follow links and interact
with the article as users normally would. A new edit icon is added to the
article for those who have permission to edit it that enables them to toggle in
and out of editing mode.
Also available in 16.7 and later releases.
TL-33052 Added a seminar 'Attendance status' report builder column and filter
Also available in 16.2 and later releases.
TL-33261 Improved the visual display of information within the Course completion status block
TL-33365 Changed 'Course compatible in-app' setting to 'Mobile-friendly course' and updated the help text
When the Totara Mobile app is enabled, courses that are marked as
'Mobile-friendly' will open in the app; those that are not will be opened in the
mobile web browser instead. The behaviour of this setting has not changed, only
the label and help text explaining it.
Also available in 16.1 and later releases.
TL-33439 Improved the help text regarding the use of event roles in seminar activities
Also available in 16.1 and later releases.
TL-33491 Started recording any changed HR Import settings within the config log database table
Also available in 16.2 and later releases.
TL-33498 Fixed missing legacy 'Session date/time changed' message when removing the last session of a seminar
When the last session of a seminar event is removed, all appropriate users will
now receive a 'Session date/time changed' message with an ical attachment to
allow the removal of the calendar entry from their calendars.
Also available in 16.1 and later releases.
TL-33661 Replaced the 'Close' button with 'Cancel' button in the 'Manage participation' modal for performance activities
TL-33738 Improved wording when setting course completion date
Also available in 16.1 and later releases.
TL-33790 Keyboard shortcut (ctrl + k) added to open the Weka link dialog
Also available in 16.2 and later releases.
TL-33851 Ensured all roles names consistently use title case
TL-34051 Added spacing on delete topic confirmation modal body text
Also available in 16.1 and later releases.
TL-34135 Pass OAuth 2.0 request data to xAPI statement created event
Upon a successful Oauth 2.0 authentication during an xAPI statement request, the
system now stores the client_id in the event metadata, allowing event listeners
to identify the specific source of the statement.
TL-34145 Improved the select/deselect all functionality when looking at the question bank
Also available in 16.1 and later releases.
TL-34166 Improved wording in content visibility settings of resources and playlists
Also available in 16.4 and later releases.
TL-34228 Removed the separation of evidence shown in Record of Learning and the Evidence bank
There is no longer any separation of evidence items based on the type of the
evidence item. The same evidence type can now be used when uploading evidence
from csv files or when adding evidence items in the Evidence bank, and all items
can now be shown in both the Record of Learning and Evidence bank reports.
By default the Record of Learning report will be filtered to only show evidence
that was uploaded (i.e. their source is 'Completion history import'). Similarly,
the Evidence bank reports will by default be filtered to only show evidence
items that were 'Manually created'. As this is a normal report filter, users can
change / clear the filter to show both uploaded and/or manually created items in
any one of these reports.
Also available in 16.2 and later releases.
TL-34296 Added client side 'alphanumeric' validation and help text for custom field short names to improve user experience
Also available in 16.3 and later releases.
TL-34300 Removed broken sorting functionality from the Progress column on the Course completion report
Also available in 16.1 and later releases.
TL-34408 Removed webapi index page
Removed the webapi index page as the information on it belongs in user
documentation rather than in product. With the addition of the new external API
this information was out of date and may have caused confusion.
TL-34482 Added core_string_format and core_text_format to GraphQL schema to fix introspection for fields using these formatters
TL-34570 Updated the environments checks page to support PHP 7.4.3 as the minimum version
Added the new Totara 17 server requirements to the environment checks page
(Quick-access menu > Server > Environment). Totara 17 requires a minimum PHP
version of 7.4.3.
Also available in 16.3 and later releases.
TL-34613 Replaced the side panel on the multi-section performance activity participant view with the ProgressTrackerNav component
In the participant view for multi-section performance activities, the previous
side panel has been replaced with the progress tracker component, which includes
state icons for each section, such as 'view-only'. The page layout breakpoints
were also amended to better support the progress tracker content.
TL-34641 Added a notification to Perform that is triggered by participant instance submission
This gives a Performance Activity Manager the ability to configure notifications
to be sent when responding participants submit a completed participant instance.
This has been implemented using the centralised notifications framework, so it
can be configured at the system level, or for individual performance activities.
It is disabled by default.
TL-34647 Improved warnings around making changes to facetoface_displaysessiontimezones
Also available in 16.2 and later releases.
TL-34703 Weka improvements
We have implemented a number of improvements to the baseline Weka functionality.
* Image size can be set to large, medium, and small, in addition to the existing
original size option
* Captions can be added to images
* Text can be underlined
* Text (paragraphs and headings) can be aligned to the left/centre/right
These additions are not currently supported in Totara Mobile.
Additionally, there are several quality-of-life improvements to the editor
itself:
* The Weka toolbar will 'stick' to the top of your screen and remain visible
when scrolling down on long content
* Weka now has an integral loading spinner to avoid page layout jumps
* The menu on image blocks has been redesigned
TL-34767 Files larger than 5gb can now be uploaded when using cloud file storage with AWS S3
Also available in 16.3 and later releases.
TL-34839 Performance activity reporting improvements
Performance activity response data can now be exported to Excel or viewed in
Totara. We've also added more filtering options for the response data.
We have added messaging to Performance activities and reporting prefiltering
pages regarding the visibility of data.
We have added a button to the Performance activities page to increase this
feature's visibility and usage.
We have also moved the performance activity response data report actions into a
dropdown menu for each row.
The single-select 'Element type' filter is now a multi-select filter.
The single-select 'Relationship name' filter is now a multi-select filter.
We have added a multi-select filter for 'Review type'.
We have added text filters for 'Review item name' and 'Parent element'.
TL-34844 Cherry-picked MDL-46542 to allow restricting duration units menu to a subset of the available units
Also available in 16.3 and later releases.
TL-34864 Improved UI behaviour for Tenant default values field when the 'Override with file and defaults' value for existing user details field is selected
When 'Override with file and defaults' value is selected then 'Tenant default
values' field will be disabled.
Also available in 16.4 and later releases.
TL-34888 Allow escaping hyphens with a backslash in OAuth 2.0 field mapping
The hyphen character is used as an object nesting divider, i.e.
'Country-region-city' field will look up $country->region->city in the userinfo
data source. This prevents using the hyphen character as a regular character. We
added an ability to use a backslash character before the hyphen to treat it as a
regular hyphen.
Also available in 16.4 and later releases.
TL-34897 Migrated performance activity notifications to centralised notifications
Previously, performance activities used a custom notifications engine. These
have now been migrated to the centralised notifications system. This will allow
custom notifications on an activity level.
TL-35004 User experience improvements to goals functionality
Improvements to the goals adder in a goal review:
To improve the goal selection experience we've changed the current goals adder
sort order for both personal and company goals.
* Sort goals in the goals adder by 'Target date', with the latest date being
first.
* If multiple goals have the same target date they should then be sorted
alphabetically (A-Z).
* Sort goals without a target date after all those with a target date, and then
sorted alphabetically (A-Z).
Goal type has been added to the adder content.
To improve the selection of goals we've added 'framework' and 'type' filters
to the existing company goal adder and a 'type' filter for personal goals.
Improvements to the goals user experience:
When creating a new goal you have the option to select a 'type', which can be
used to add custom fields to goals. Previously there was no method to refresh
the page so that custom fields related to the selected type would be available
to edit.
To address this we've added a new 'Save and continue editing' button.
The save action returns the user to the edit form. The custom fields from the
selected type are included in the form.
We've added a 'Goal type' column and filters for both company and personal
goals to allow goals to be sorted and filtered by type.
TL-35008 Improvements to the performance activities overview participant experience
To improve the performance activity participant experience, we have made changes
to the participant activities overview UI, moving away from a 'tables within
tables' layout, improving the visual information hierarchy, and replacing the
expanding detail panel with a modal dialogue component.
We have added heading content to the activity details modal. The heading
includes Avatar, Username, Type, Creation date, Title and Status. The heading
will always be displayed, even when there is a large amount of content.
The 'Print activity' option has moved to the meatball menu on the activities
summary page.
We've separated the activity list data table into two different spaces: the
summary table and a view details modal.
We've replaced the existing table to include columns for Type, Creation date,
Due date, Role, Title and Status. There are now visual cues for complete,
overdue and view-only activities.
TL-35019 Added the ability to set multiple recipients in centralised notifications
Previously it was only possible to add one recipient for a notification in the
centralised notifications system. When creating or editing a notification you
can now select multiple recipients.
TL-35052 Increased size of the Totara Menu URL field to allow for a url up to 1333 characters in length
Also available in 16.4 and later releases.
TL-35777 Modified user visibility permissions to allow users who can manage API clients to see profile fields of available service account users.
Bug fixes:
TL-32849 Fixed the workspace Transfer ownership modal to provide indication if the current owner account was suspended or deleted.
TL-34758 Ensured course forum searches using tags that contain spaces works correctly
Also available in 16.7 and later releases.
TL-35053 Fixed code which fetches a list of files to ensure reliable sort order
Some utility code which was being used to build the graphql schema was obtaining
a list of files in a way which didn't guarantee the order in which the files
were returned. This could lead to the schema file being built differently on
different environments.
This was fixed so the utility method always returns files in alphabetical order.
TL-35064 Fixed a bug which prevented deleting a section in a performance activity that includes a review question
Also available in 16.7 and later releases.
TL-35138 Blockquotes are no longer removed when saving content in the JSON_EDITOR format
TL-35154 Added a default sort order based on the 'target date' for goal adders
Previously the 'cursor_paginator' used by goal adders would throw an error if a
default sort order was not defined. This default sort order has been added. And
now when the get_direction() method is used, the system will check that it
exists in the instance before it is called. If it does not exist then an empty
string will be returned.
TL-35170 Fixed email casing when matching users for seminar attendance import
Also available in 16.7 and later releases.
TL-35206 Fixed an error on the course page for certain assignment settings that was displayed when debugging was turned on
Also available in 16.7 and later releases.
TL-35506 Added further validation around forced delivery channels when creating / updating notification preferences
Also available in 16.7 and later releases.
TL-35516 Fixed wrong grouping when using multi-select custom field
Also available in 16.7 and later releases.
TL-35536 Fixed recommending workspaces/resources/courses that are not visible to the user.
Also available in 16.7 and later releases.
TL-35548 Fixed duplicate due date program and certification notifications
Duplicate program and certification due date and course set due date
notifications were being sent if a user was assigned by more than one method.
Also available in 16.7 and later releases.
TL-35572 Removed max-height on responsive images in StaticContentAdminView.vue to fix a bug where the image would stretch when the browser is resized
TL-35631 Fixed sorting by target dates in goal adder
The targetdate columns in the mdl_goal and mdl_goal_personal table are nullable
but existing goal code always regarded nulls as zero. A zero (whether a real
zero or null) indicated the target date was not set; the goal code implicitly
assumed a target date would always come from the UI and therefore it would
always be a non zero date.
TL-35054 changed the goal adder to sort by target dates by default. However, the
goal adder currently uses a cursor paginator that cannot handle nullable
columns. This patch changes the targetdate columns to be non nullable and
defaulting to 0. This allows the goal adder to paginate by target dates to work
and makes the implicit 'zero = not set' assumption explicit.
TL-35644 Prevented transformation of some right to left CSS styles
In some locations, there were styles for right to left languages that were being
transformed when they should not have been. These have been fixed so that those
styles are no longer transformed
Also available in 16.7 and later releases.
TL-35654 Updated the Comment component to scroll smoothly to the reply box only if it is outside of the scroll view
Also available in 16.7 and later releases.
TL-35666 Allow the placeholder to return an empty string.
These changes allow the placeholder to return an empty string which hides the
whole sentence from the result. If the placeholder returns null, it returns .
TL-35715 Reduced duplicate queries on report builder when fetching result count
TL-35736 Fixed a bug where the focus outline was being applied to the wrong element on Weka video and audio blocks
Also available in 16.7 and later releases.
TL-35739 Fixed the permission check for logged in users to view user field 'descriptionformat'
TL-35769 Fixed competency progress tracker not showing values higher than the minimum proficient value as proficient
TL-35791 Fixed managers full name link notification placeholder so that it renders correctly
Also available in 16.7 and later releases.
TL-35810 Fixed a notice that can appear after upgrading from Totara 14 if no recommendations options have been saved.
Also available in 16.7 and later releases.
TL-35884 N/A
Database upgrades:
TL-35033 Centralised notifications updated to support multiple recipients
The 'recipient' field has been deprecated from centralised notifications in
favour of a new 'recipients' field which allows for multiple recipients to be
added to a single notification.
Technical changes:
TL-32667 Implemented a check for JavaScript errors in behat runs
TL-32931 Updated behat to support PHP 8.0
Also available in 16.2 and later releases.
TL-33278 Avoid using required column to allow visibility checks in report builder
Previously, in order to perform visibility checks in reports, we obtained the
data needed by defining required columns which were columns that, although not
visible, were present in the report. However, it was noted they were interfering
with aggregation, giving unexpected results.
Now, 'required joins' have been added in order to perform this task. The
information to perform the visibility check is still present, but should not
interfere with aggregation.
All applicable report sources have been updated to use the new
define_requiredjoins function.
Please note that custom report sources that use the old way of requiring columns
shouldn't be affected by this change, but we recommend that they are updated to
use define_requiredjoins to get the correct result when using aggregation.
Also available in 16.2 and later releases.
TL-33368 Moved core entity classes in totara/competency to totara/hierarchy
TL-33369 Moved course-related entity classes to correct core locations
TL-34133 The generate_uuid() function has been deprecated
Please use \core\uuid::generate() instead. If the PECL UUID extension is not
installed, this new function will use random_bytes() instead of mt_rand(), which
is more secure.
Also available in 16.1 and later releases.
TL-34180 Converted GraphQL endpoint types from constants to classes
Implemented new abstract base endpoint type class. Existing endpoints (mobile,
ajax, dev) were converted to use endpoint classes and the new external API
endpoint type was added.
Endpoint classes define the properties of the specific endpoint and allow core
code to be free from endpoint implementation details.
For more information see our developer documentation:
https://help.totaralearning.com/display/DEV/Extending+GraphQL+APIs
TL-34181 Split GraphQL schema by endpoint type
Previously all GraphQL endpoints shared a single schema. Now the schema has been
split so that individual endpoint types have their own schema. This allows the
schema to only include services that are relevant to it.
For more information see this page in the public developer documentation:
https://help.totaralearning.com/display/DEV/GraphQL+schema+file+changes+in+Totara+17
TL-34258 Added support for 'internal' OAuth 2.0 providers
Added support for 'internal' OAuth 2.0 providers which can be managed by other
components without showing up in the OAuth 2.0 providers interface.
This change has no impact on the behaviour of OAuth 2.0 providers via the UI.
TL-34261 Added support for per-endpoint global GraphQL middleware
Added support for global middleware that is automatically included for all
query, mutation and type resolvers of the specified endpoint type (rather than
needing to be specified in each resolver).
For more information see the developer documentation:
https://help.totaralearning.com/display/DEV/Implementing+GraphQL+Middleware
TL-34263 Relocated GraphQL schema files to appropriate endpoint subfolder
Moved GraphQL schema files so they appear in the appropriate GraphQL schema. See
TL-34181 for more details on this change.
TL-34272 Add low-level support for disabling OAuth 2.0 providers
Added support for disabling OAuth 2.0 providers in code, allowing other
components to specify if a provider is active. Inactive OAuth 2.0 providers will
temporarily reject all access tokens until re-enabled.
This change does not include the ability to disable OAuth 2.0 providers via the
UI.
TL-34328 Added support for customisation of global middleware via a hook
Add support for a hook that can be used to modify the global middleware that is
applied to GraphQL resolvers.
This allows for third-party customisation of the global middleware chain.
For more information see the API documentation:
https://help.totaralearning.com/display/DEV/Extending+GraphQL+APIs
TL-34380 GraphQL endpoints converted to use API controller
A new base api controller class was implemented and the existing GraphQL
endpoints (ajax, mobile, dev) were converted to make use of it.
This allows common functionality to be abstracted and improves the testability
of GraphQL endpoints.
TL-34426 Replaced calls to deprecated strftime function for PHP 8.1 support
In PHP 8.1 the strftime function is deprecated. This is used in various places
in Totara, for things such as handling date/time formats defined in language
strings. To continue supporting these language strings as they are, the calls
have been been replaced with \totara_core\strftime::format which can be swapped
in.
All existing placeholders are supported, however the %x, %X and %c placeholders
may give slightly different results as they are based on your locale and server
setup.
TL-34780 Introduced a 'jsoneditor' plugin type for JSON_EDITOR schema extensions
TL-34783 GraphQL type, query and mutation resolvers are now abstract classes instead of interfaces
Previously we had interfaces for type_resolver, query_resolver and
mutation_resolver which were implemented by GraphQL resolver classes.
Now those interfaces have been converted to abstract classes so that default
methods can be included. This requires any existing resolver classes to be
updated - instead of:
class your_resolver implements type_resolver, has_middleware \{ }
it should now be:
class your_resolver extends type_resolver \{ }
(the same for query_resolver and mutation_resolver).
The has_middleware interface has been deprecated since the get_middleware()
method is now included in the base resolver classes, so it is no longer
necessary to include ' implements has_middleware' in your resolvers.
Additionally, the final keyword has been removed from any core resolver classes
that set it, to allow partners more flexibility in extending core resolvers.
TL-34833 Allowed notification Tui components to be reusable in existing page layouts
TL-34875 Editor variants have been standardised
'Variants' are an editor concept, currently only used by Weka, that allow
developers to select a set of editor features to enable. In Weka, this means
which 'extensions' (editor plugins) are enabled, which implement things like
links and bulleted lists.
Previously, there were a handful of core variants (standard, description, and
simple).
In addition to those three, we have added two additional core variants, 'full',
containing all editor features and intended for use cases such as article
content, and 'basic', which contains a limited feature set suitable for things
like adding comments.
The 'basic' and 'simple' variants are include-based, meaning they do not
automatically include Weka extensions added through plugins. Weka extensions
must instead declare when they wish to be added to these variants.
'mention' and 'hashtag' extensions have also been removed from the standardised
variants, and must be manually enabled at each editor usage as they only work
correctly when the corresponding backend support is in place.
Please see the Weka documentation for more information:
https://help.totaralearning.com/display/DEV/Weka+editor
TL-34899 Fixed an issue where isset on an entity returns false if the relationship exists but is not loaded
Also available in 16.4 and later releases.
TL-35113 Added GraphQL schema diff tool
Added schema diff tool to allow developers to identify API schema changes
between two versions.
The tool can identify both non-breaking and breaking changes (changes that will
impact existing usage of the API).
For more information see our developer documentation:
https://help.totaralearning.com/display/DEV/Changes+to+the+GraphQL+APIs#ChangestotheGraphQLAPIs-ToolingtosupporttrackingAPIchanges
TL-35482 Updated webapi README to reflect changes to core APIs
Tui front end framework:
TL-26199 Refactored the CSS in the Tui Range component
TL-26667 An error is now thrown for invalid Tui CSS imports, eliminating the confusing in-browser error messages
Also available in 16.2 and later releases.
TL-29586 Added 'toHaveNoViolations()' to jest's expect() result
When using JavaScript unit tests (as provided by jest), a 'toHaveNoViolations'
function has been added to the 'expect()' return value. This allows the test to
check the accessibility of the given component and avoids importing the function
from jest-axe package 'toHaveNoViolations()'.
Also available in 16.4 and later releases.
TL-31494 Added an optional @reset event and showReset prop to display a filter reset button in the FilterBar component
TL-32798 Changed Delete bootstrap icon from Trash fill to Trash outline
Also available in 16.1 and later releases.
TL-34032 Updated layout of adders to work better on mobile devices
Also available in 16.1 and later releases.
TL-34086 Updated webpack and other packages to support Node 18
If you have previously customised webpack builds using the hooks
in {{build.config.js}} or by modifying the core webpack configuration, you may
have to update these to be compatible with webpack 5. If you have not made any
customisations to the webpack builds, you shouldn't need to take any action
here.
Also available in 16.3 and later releases.
TL-34151 Fixed keyboard navigation in nested Tui modals
Also available in 16.1 and later releases.
TL-34385 Updated the computeError method in FormField.vue to only return the error as a string to prevent an 'Invalid Prop' Vue warning.
Also available in 16.2 and later releases.
TL-34481 Fixed keyboard accessibility of the Dropdown vue component
Also available in 16.2 and later releases.
TL-34555 Fixed the function dom/position/getBox to be functional in IE11
Also available in 16.4 and later releases.
TL-34963 Added a core component for implementing buttons with custom UI
It's now possible to implement buttons with completely custom UI using the core
ButtonAria component. See the samples page for ButtonAria for more details.
Implementing custom buttons using the native button element is difficult, as
theme styles typically set a lot of properties directly on the button element.
TL-35202 Added Uniform wrapper for TagList component
TL-35490 Stopped disabled DropDownItem being focusable via keyboard navigation
TL-35525 Updated focus style of dropdown to meet accessibility requirements
Also available in 16.6 and later releases.
Recommendations engine:
TL-35129 The legacy Recommendations Engine is deprecated
The Recommendations Engine (also called Recommenders) introduced with Totara 13,
is now deprecated. It will be removed from Totara 18 onwards. It has been
replaced by the Machine Learning Service. The Machine Learning Service was
introduced in Totara 15.
The Machine Learning Service brings several improvements over the
Recommendations Engine: better performance at scale combined with real-time
generation of recommendation data. The legacy version will work normally in
Totara 17, but will display a warning message.
Instructions on migrating to the Machine Learning Service can be found here:
https://help.totaralearning.com/display/DEV/Machine+Learning+Service
Library updates:
TL-28252 Upgraded library Video.js to 7.18.1
TL-32213 Upgraded GraphQL-tag library to version 2.12.4
TL-33146 Upgraded development library "stylelint" from 12.0 to 14.6
Also available in 16.4 and later releases.
TL-33904 Upgraded library dompdf to version 1.2.2
We now use a modified version of this library on Github which contains
Totara-specific changes.
TL-34192 Updated npm dependencies
Dependencies:
* @babel/runtime: 7.13.10 -> 7.18.9
* date-fns: 2.24.0 -> 2.29.1
* graphql: 15.5.0 -> 15.8.0
* graphql-tag: 2.12.4 -> 2.12.6
* prosemirror-commands: 1.1.12 -> 1.3.0
* prosemirror-dropcursor: 1.3.5 -> 1.5.0
* prosemirror-gapcursor: 1.2.0 -> 1.3.1
* prosemirror-history: 1.2.0 -> 1.3.0
* prosemirror-inputrules: 1.1.3 -> 1.2.0
* prosemirror-keymap: 1.1.5 -> 1.2.0
* prosemirror-model: 1.15.0 -> 1.18.1
* prosemirror-state: 1.3.4 -> 1.4.1
* prosemirror-transform: 1.3.3 -> 1.6.0
* prosemirror-view: 1.21.0 -> 1.27.
* vue-apollo: 3.0.7 -> 3.1.0
Also available in 16.4 and later releases.
TL-34372 Upgraded library adodb/adodb-php to 5.22.2
TL-34375 Updated the SVGGraph library to improve support for PHP 8.1
Also available in 16.3 and later releases.
TL-34383 Updated the SCSSSPHP library to improve support for PHP 8.1
Also available in 16.3 and later releases.
TL-34399 Upgraded library nyholm/psr7 to 1.5.1
TL-34417 Upgraded library box/spout to a 3.3.0 forked version
TL-34449 Upgraded symfony/polyfill-php libraries
* Upgraded library symfony/polyfill-php74 to version 1.25.0
* Upgraded library symfony/polyfill-php80 to version 1.25.0
* Installed library symfony/polyfill-php81 version 1.25.0
TL-34450 Upgraded library phpmailer/phpmailer to 6.5.4
TL-34454 Upgraded library simplepie/simplepie to 1.6.0
TL-34457 Upgraded library sabberworm/php-css-parser to 8.4.0
TL-34459 Upgraded library ops/json-schema to version 2.3.0
TL-34460 Upgraded library michelf/php-markdown to 1.9.1
TL-34463 Upgraded library league/oauth2-server to 8.3.5 for PHP 8.1 support
TL-34470 Upgraded library mathiasmullie/minify to 1.3.68
TL-34489 Upgraded library wikimedia/less.php to support php 8.1
TL-34528 Upgraded library phpseclib/phpseclib to 2.0.37
TL-34534 Upgraded library ezyang/htmlpurifer to a 4.15.0 forked version
TL-34535 Upgraded library PHPOffice/PhpSpreadsheet to 1.23.0
TL-34942 Upgraded optional library microsoft/azure-storage-blob to 1.5.4
TL-35130 Updated Python libraries
Also available in 16.3 and later releases.
TL-35369 Upgraded optional library aws/aws-sdk-php to 3.235.7
