Wunderbyte Table
Maintained by
Wunderbyte GmbH, David Bogner
This plugin provides a huge enhancement of the table lib in Moodle. You can now use filtering, templates and different methods to display data in a clean and structured way easier than ever. This plugin is used combination with other plugins like mod_booking and should make life easier for Moodle developers. To have a quick demo install it and on your site go to /local/wunderbyte_table/demo.php
Price option: Free
Supports Moodle 4.1-5.1
See all versions
Latest release: 1 week ago
Installations: 1623
Downloads (last 90 days): 649
Frankenstyle name:
local_wunderbyte_table
Plugin type:
Local plugins
Versions
Current version
3.2.4 (2026070300)
Moodle 4.5, 5.0, 5.1
Uploaded on Thursday, 9 July 2026 at 09:44 (GMT+0)
3.2.4
Plugin type: Local plugins
Frankenstyle component name: local_wunderbyte_table
Version build number: 2026070300
Version release name: 3.2.4
Maturity: Stable
Supported Moodle versions: 4.5, 5.0, 5.1
Repository URL (Git): https://github.com/Wunderbyte-GmbH/moodle-local_wunderbyte_table
Repository branch:
Repository tag: v3.2.4-stable
Issue/bug tracker URL: https://github.com/Wunderbyte-GmbH/moodle-local_wunderbyte_table/issues
Version 3.2.4 (2026070300)
- Improvement: Accessibility improvements for filters and more.
- Improvement: Memorize dynamicsql resultset to fix per-row N+1 in dynamic customfields.
- Improvement: str_replace so db doesn't trim mlang tags.
- Improvement: Add wbtable-actionbuttons-container and adjust margins for better layout.
- Bugfix: Fix bug in hourlist/weekdays filter.
- Bugfix: Fix type error when multiselect customfield value reaches text controller.
- Bugfix: Show countlabel of tables also when filters find no records.
Version 3.2.3 (2026061800)
- Improvement: Replace the alloptionshierarchicalfilter class with a reusable show_all_options() flag on the filter types (hierarchicalfilter, customfieldfilter and standardfilter). Default behaviour is unchanged.
- Bugfix: Hierarchical filters used on a plain column (without set_sql_for_fieldid) are displayed again - their options are fetched from the column instead of the custom field data table.
- Make countlabel properties private to prevent misconfiguration
Version 3.2.2 (2026061600)
- Improvement: Enable overwriting of countlabel
- Improvement: New filter type to allow display of empty categories
- Bugfix: Pass an explicit context to avoid relying on $PAGE->context, which may not be set in web service or CLI contexts
- Bugfix: Update filtersearch on ajax
Version 3.2.1 (2026060100)
- New feature: Add possibility to restrict allowed download formats.
- Improvement: Still show remove filter button.
- Improvement: Add css class to easily style or hide specific filters.
- Improvement: Lots of little fixes for better accessibility.
Version 3.2.0 (2026050100)
- Bugfix: Fix potential sql injection
Version 3.1.4 (2026042100)
- Improvement: Limit autoscroll even further.
- Improvement: Reload tables on tab switch.
Version 3.1.3 (2026041400)
- Improvement: replaced modal factory with core modal.
- Bugfix: skipping format string if numeric to prevent float to int conversion.
- Bugfix: Allow int as key of dynamicfields.
- Bugfix: autoreload does not force scroll to top.
- Bugfix: autoscroll working correctly.
Version 3.1.2 (2026032600)
- New feature: Implement date custom field controller.
- Improvement: Get rid of legacy code for moodleversionminfourtwo CSS stylings.
- Improvement: No automatic reload of tables with an open modal.
- Improvement: On browser Back or tab switch WB Tables are always reloaded to reflect an update which happened at a different place.
- Bugfix: Do not reload tables for hidden containers.
- Bugfix: Don't reload all tables when an open bootstrap collapsible is present.
- Bugfix: Also catch null in date field controller.
- Bugfix: catch null customfield values.
- Bugfix: Static singleton needs component and area in keys.
- Bugfix: Fix bug in select (dropdown) custom field controller when nothing is selected.
Version 3.1.1 (2026030900)
- New feature: Introduce new checkbox custom field controller.
- Improvement: Remove customfields info array functionality as it belongs to mod_booking.
- Improvement: Make sure field controllers use component and area correctly.
- Improvement: No empty strings in imploded dynamic field controller return values.
Version 3.1.0 (2026022400)
- Bugfix: Fix intrange filter.
- Bugfix: Fix filters when table uses pagination.
Version 3.0.9 (2026021600)
- Improvement: More reliable way of cleaning params.
Version 3.0.8 (2026020501)
- Revert "Hotfix: Hierarchical filter remains base class". Use new customfieldfilter class as parent.
Version 3.0.7 (2026020500)
- Bugfix: Make sure all filters work again after sql bugfix
Version 3.0.6 (2026020300)
- Bugfix: Fix possible SQL injection bug.
Version 3.0.5 (2026011500)
- Improvement: Make sure field controllers work with multi-selection in dynamic custom fields and return values (not keys).
- Improvement: Apply filter on download by default.
- Improvement: Add performance class and measurements.
- Bugfix: Moodle 5 bootstrap fix.
- Bugfix: Cleaning param now works also with :userid, syntax.
- Bugfix: Fix lazyout measurement.
Version 3.0.4 (2025121700)
- Improvement: Hierarchical filters work with custom fields when they are not joined to the main table.
- Improvement: FALLBACK: If argument 'urlparamforuserid' is not set, we still try to use 'userid' parameter from URL.
- Bugfix: Filterview Shortcode Moodle 5 Fix.
- Test: Add a new PHPUnit test case to verify that the hierarchical filter works on custom fields without joining them in the main query.
Version 3.0.3 (2025121001)
- Improvement: Set the default value of the hideallfiltershavingbypasscache setting to 1.
Version 3.0.2 (2025121000)
- Improvement: Make sure the encoded table is from the right class. Throw error if not.
- Improvement: New possibility to store customfields info array in table class.
- Improvement: Various adjustments for Bootstrap 5 compatibility.
- Bugfix: Re-index the array that holds the filters after removing some filters.
- Tests: New PHPUnit test to cover more methods in customfieldfilter class.
- Tests: New PHPUnit test to cover get_data_for_filter_options method of class customfieldfilter.
Version 3.0.0 (2025120101)
- Improvement: Now supporting Moodle 4.5+ (skipped support for Moodle 4.1 - 4.4).
Version 2.0.63 (2025120100)
- Improvement: Add a new property ($bypasscache) to filters to prevent caching when any filter has this property set to true.
- Improvement: Add property to determine whether to count keys of each option in custom field filter.
- Improvement: Use user-injected options as the data to be shown for the custom field filter when $countkeys is set to false.
- Improvement: Add property to determine whether to use ILIKE or = operator to filter out the results in customfieldfilter.
- Improvement: Add a new property to store the userid in the WB_Table instance.
- Improvement: Add a new helper to get the parameter name that holds the user ID from $args.
- Improvement: Add privacy provider (see pull request #59).
- Improvement: Get foruserid from arguments or optional params.
- Bugfix: Fix the condition that checks whether the foruserid argument is an integer.
- Tests: New PHPUnit test to check how a filter affects reading data from the cache.
- Tests: Extend customfield filter tests.
- Tests: New test to cover actforuser.
Version 2.0.62 (2025103100)
- New Feature: New filter type 'customfieldfilter'.
- Improvement: New filter type to improve performance of query execution.
- Improvement: Implement function get_data_for_filter_options.
- Improvement: Fall back to the get_db_filter_column function when the field ID cannot be found.
- Improvement: Add ample usage of custom filter to the demo file.
- Bugfix: Use a query with a condition on cff.shortname if the user provides a custom SQL query.
- Bugfix: Fallback on get_db_filter_column when a custom SQL is provided.
- Bugfix: Resolve the error in the GitHub Action related to the profile_save_data function.
Version 2.0.61 (2025100100)
- New Feature: exact column filter.
- Improvement: Don't trigger table viewed event (for performance improvement)
Version 2.0.60 (2025091700)
- Improvement: Code quality - remove multiple empty lines and minor code quality improvements.
Version 2.0.59 (2025080900)
- Improvement: Add aria attributes for filterbutton
- Bugfix: Correct returntype for loading tables with requirelogin
- Bugfix: Wrong check for existing toggle fixed
Version 2.0.58 (2025080400)
- Improvement: Add support of unix timestamp fields for intrange filter.
Version 2.0.57 (2025073100)
- Improvement: Optional Scroll to container
Version 2.0.56 (2025072400)
- Bugfix: fix undefined property, fallback for gotopage
- Improvement: Fokus for elements in filter
Version 2.0.55 (2025071800)
- New Feature: Go to page added
- Improvement: mobile view styling
- Improvement: Possibility to disable scrolling at tablereload
Version 2.0.54 (2025070800)
- Bugfix: More specific selector for hierarchychild-checkbox
Version 2.0.53 (2025070700)
- Improvement: Hierarchy filter select behaviour
- Bugfix: No filtercount for hierarchy filter
- Tests: New behat scenario: WB_table settings: control presence of strings on all settings page
- Tests: fix inclusion of behat_base class
- Tests: linting: fix phpunit coverage warnings
Version 2.0.52 (2025061700)
- Improvement: Accessibility - Sort Table on Enter
- Improvement: Accessibility - Scroll into view with Navbar
- Improvement: Add selectable 5 rows to pagecounter
- Tests: Validate settings page
Version 2.0.51 (2025060600)
- Improvement: Switch to reusable moodle-plugin-ci.yml workflow.
- Improvement: Accesibility - Focus on Filters.
- Bugfix: Fix strings for AMOS.
Version 2.0.50 (2025052700)
- Improvement: Enable table container to be reloaded entirely if needed
Version 2.0.49 (2025052000)
- Improvement: Make sure adding filters does not destroy table settings and includes various small improvements
- Improvement: Hierarchy filter checkbox layout changes
- Improvement: Add checkbox for hierarchical category
- Improvement: Add hierarchical filter to demo
- Improvement: Datepicker merging
- Bugfix: Rename group to subdatepicker_group.
- Bugfix: Data adjustment
- Bugfix: Better placement for allowed column check (SQL columns only)
- Bugfix: Fixes for custom filters – missing empty checks, etc.
- Bugfix: Add custom filter button to template for cards container
- Tests: Add new PHPUnit test method test_require_access()
- Tests: Fix timezone issues in weekdays/hourlist test
- Tests: Scenario for WB_Table navigation – switch view templates
Version 2.0.48 (2025043000)
- New feature: Button to add individual filters can now be added in table settings for each table.
- Improvement: Make sure adding filters is only possible for allowed SQL columns.
- Improvement: All filter implemented and tested.
- Improvement: Remove legacy code.
- Improvement: Split datepicker class.
- Improvement: Hierarchy filter implementation.
- Improvement: Filter form.
- Improvement: Refactoring class structure.
- Improvement: Validation manager setup.
- Improvement: Separate Moodle divs.
- Improvement: Edit and add key value pair.
- Improvement: Edit filter key value pair.
- Improvement: Restructure to column manager.
- Improvement: Add filter form.
- Improvement: Allow table to be scrolled horizontally and add more space for right-sided components.
- Improvement: Better filter sizes and reduce gaps.
- Improvement: Add encodedtable in template for tests.
- Bugfix: Fix weekdays strings.
- Bugfix: Fix type error in unit tests.
- Bugfix: Fix unit tests for filter types.
Version 2.0.47 (2025040800)
- Bugfix: Make sure switcher remembers selected template for table is encoded.
Version 2.0.46 (2025040300)
- Improvement: Add classes to template switcher mustache.
- Bugfix: The hourlist and weekdays filters displays available intervals/weekdays now correctly.
- Bugfix: Wrong type for showpagination.
- Tests: Improved phpunit test.
- Tests: Improved BEHAT tests.
Version 2.0.45 (2025040100)
- New feature: Switch between table templates (individually for each user).
- Bugfix: Display demp form instead in demo.php
- Bugfix: use format_text instead of format_string on textarea.
Version 2.0.44 (2025030400)
- Improvement: unify field controller
- Bugfix: correctly apply format string to values from customfields and return values.
- Bugfix: Correctly return value for wbt_field_controller base fields
Version 2.0.43 (2025022600)
- Improvement: New get_values_array() function for customfields.
- New feature: Add possibility to show download button at bottom of table.
- Bugfix: Field property of field controller can be accessed directly without getter.
- Test: Add test to verify sortorder in infinite scroll environment
Version 2.0.42 (2025021800)
- New feature: Callbackfilter
- New feature: Introduce sortable classes to allow sort specific sql and caches
- Improvement: Possibility to turn off caching
- Tests: Add automatic tests for callback filtering and new standard sortable class
- Tests: Add phpunit test for testing standard filter
Version 2.0.41 (2025021200)
- Set minlength to 1 (to also consider input of "AI" in fulltextsearch).
Version 2.0.40 (2025012900)
- Bugfix: Avoid empty get_in_or_equal error in function instantiate_by_shortnames of wbt_field_controller_info.
Version 2.0.39 (2025012200)
- Bugfix: Hierarchical filter search in menu (#75).
Version 2.0.38 (2025011602)
- Bugfix: Make sure that field controller is only applied if the string is not yet localized and sorted with sortedarray.
- Bugfix: Make sure we use the correct language prefix for storing filter & such
- Improvement: Apply timezone offset for hourlist filter.
Version 2.0.37 (2025011601)
- Bugfix: Fixes for filters using wbt_field_controller.
Version 2.0.36 (2025011600)
- Bugfix: Fix README - table setting is called "addcheckboxes".
- Bugfix: Add fallback for field controller, so we always have at least the text controller.
Version 2.0.35 (2025010900)
- Improvement: Implement generic classes for customfields in wunderbyte table and get the string values to be shown in filter from field controller.
- Improvement: Do not show rows for empty or not found values.
- Improvement: Add field controllers for text and textarea and return text controller as fallback.
- Bugfix: Add missing import of wbt_field_controller_info.
- Bugfix: Correct searchfield SQL for elder moodle with mysql #68.
- Bugfix: Custom field dynamic needs its own field controller as customfield dynamic might not be installed.
Version 2.0.34 (2024121200)
- Bugfix: Datepicker filter correctly applying enddate & unset Datepicker correctly
Version 2.0.33 (2024120500)
- Improvement: change filterview template.
- Bugfix: hourlist filter.
Version 2.0.31 (2024112800)
- New feature: Add possibility to pass any template data.
- Bugfix: Correct id for filter checkbox & label.
- Bugfix: "Cannot read properties of null (reading 'childNodes')" JS error.
- Bugfix: Grunt JS.
Version 2.0.30 (2024112500)
- Improvement: Add support for Moodle 4.5.
- Bugfix: Correctly update URL from search (#67).
- Bugfix: Correctly apply filtercount to hierarchical filter Wunderbyte-GmbH/moodle-moodle-local_wunderbyte_table#243.
- Bugfix: Do not apply intrange filter when there is no string to explode. Wunderbyte-GmbH/Wunderbyte-GmbH#243.
Version 2.0.29 (2024112000)
- Bugfix: Fix grunt "file is stale" errors.
Version 2.0.28 (2024111900)
- Bugfix: Fix typo (dot instead of comma) breaking sortable columns and tests.
- Bugfix: Add missing data-type for wb_action_button.
Version 2.0.27 (2024111100)
- Improvement: Filterview flip arrows on collapse.
Version 2.0.26 (2024102900)
- Bugfix: Fix action button selector.
- Improvement: Change PNG to SVG in filterview template.
- Tests: Adjust behat scenarios.
Version 2.0.24 (2024102100)
- Improvement: Extend tests for filters
- Improvement: Scroll to upper margin on page switch
- Bugfix: Apply hierarchical filter
- Bugfix: Fix standardfilter, especially for explode
- Bugfix: Correctly count values for filters
Version 2.0.23 (2024101600)
- Bugfix: Strip leading zeros from intrange filter input
- Bugfix: standardfilter for ints (ids etc)
- Bugfix: Correctly count values for explode filter
- Bugfix: display filtercount label for standardfilter correctly
Version 2.0.22 (2024101101)
- Improvement: Added support for filterview mobile changes
- Bugfix: Fix wrong calculation of morethanonetable
- Bugfix: Fallback for empty variables in timespan filter
Version 2.0.21 (2024101100)
- Bugfix: Filter for json dataattributes
- Bugfix: Fallback empty calendar
Version 2.0.20 (2024100900)
- Bugfix: Avoid pipe if no filter/searchtext is selected
- Bugfix: Fallback for empty data in event
Version 2.0.19 (2024100701)
- Bugfix for filters addressing two columns
- Bugfix: fetch other data from event correctly
Version 2.0.18 (2024100700)
- Bugfix: Don't throw an error just because a column is not supported by the datepicker.
Version 2.0.17 (2024100400)
- Improvement: Support shownopagination
- Improvement: Add suppress functionality
- Bugfix: Avoid accessing missing key in array
Version 2.0.16 (2024100100)
- Improvement: filterview with two columns
- Bugfix: Apply filter to url for tables with search
- Bugfix: write searchtext into search field on reload via url
Version 2.0.15 (2024092600)
- New Feature: filtertype intrange
Version 2.0.14 (2024092300)
- Improvement: possibility to allow searchbutton in template
Version 2.0.13 (2024091000)
- Improvement: make filters able to break line
Version 2.0.12 (2024090300)
- Bugfix: Make sure that current filter state is also noticed by js. Support for hierarchical filters on url output
- Bugfix: Delete last href call to anchor, which led to jump in page
Version 2.0.11 (2024081900)
- New Feature: Show counter for checked filters directly on the label
- Improvement: Sort strings alphabetically.
Version 2.0.10 (2024071900)
- Bugfix: Revert changes for node replacement in init.js.