Silverstripe-debugbar/ - SilverStripe DebugBar module

Overview

SilverStripe DebugBar module

Build Status scrutinizer Code coverage

Requirements

Installation

You can install the debug bar with Composer:

composer require --dev lekoala/silverstripe-debugbar

Documentation

Introduction

SilverStripe Debug Bar is a wrapper for PHP DebugBar which integrates with SilverStripe to provide more useful information about your projects. The Debug Bar can help you to easily identify performance issues, analyse environment settings and discover which parts of your code are being used.

For example, if your application is running the same database query multiple times in a loop, or a certain controller action is taking a long time to run, Debug Bar will highlight these bottlenecks so you can take steps to improve your overall site performance.

This module will:

  • Log framework execution based on available hooks
  • Log and profile database calls
  • Show all SilverStripe log entries
  • Show all session, cookie, requirements, SiteConfig and request data
  • Show current locale, framework/CMS version, current member
  • Show request timing/profiling and memory consumption

The DebugBar is automatically injected into any HTML response through the DebugBarMiddleware, and will only run in "dev" mode.

Screenshot

Execution timeline

The execution timeline ("Timeline" tab) provides you with a graphical overview of each controller and action, listing how long it takes for each to complete.

Execution timeline

The example above is from loading a page in the CMS.

You can also use our helper DebugBar::trackTime in order to start/stop a given measure. This will also work even before DebugBar is initialized allowing you, for example, to measure boot up time like this:

DebugBar::trackTime('create_request');
$request = HTTPRequestBuilder::createFromEnvironment();
// This line is optional : you can close it or it will be closed automatically before pre_request
DebugBar::trackTime('create_request');

Speaking of boot time, you can get a more accurate measure than the one provided by $_SERVER['REQUEST_TIME_FLOAT'] by defining the following constant in your index.php file.

require dirname(__DIR__) . '/vendor/autoload.php';
define('FRAMEWORK_BOOT_TIME', microtime(true));

This will give you a distinct php and framework boot time. This way, you can measure, for instance, the effects of doing a composer dumpautoload -o on your project.

Note : any pending measure will be closed automatically before the pre_request measure.

Database profiling

The "Database" tab allows you to view a list of all the database operations that a page request has made, and will group duplicated queries together. This can be useful to identify areas where performance can be improved, such as using DataObject::get_by_id() (which caches the result) instead of DataObject::get()->byID().

Database profiling

By clicking on one of the duplicate group badges in the bottom right corner, you can see groups of duplicated queries:

Duplicate grouping

To help you in debugging and optimising your application, it is recommended to leave the find_source option on. This will help you to identify what triggers the query and where to implement caching appropriately.

If you are using ?showqueries=1, you will also see that the usage has been optimised to display all queries nicely and their result on the page.

Also remember that if you use the d() helper, any string variable with "sql" in the name will be formatted as a SQL string.

Long running queries

When some queries take a long time to run they will be highlighted in red, with the request time (right hand side per item) highlighted in bold red text. The threshold for this time can be adjusted by modifying the DebugBar.warn_dbqueries_threshold_seconds configuration setting.

Long running queries

Note: The above example has been adjusted to be deliberately short. The default threshold value is one second for a long running query.

Large numbers of queries

If a page request performance is more than a certain number of queries, a warning message will be sent to the "Messages" tab. You can adjust the threshold for this with the DebugBar.warn_query_limit configuration setting.

Query threshold warning

System logs and messages

The "Messages" tab will show you a list of anything that has been processed by a SilverStripe logger during a page execution:

System logs and messages

You can filter the list by type by clicking on one of the log level buttons in the bottom right corner.

Note: At times, other DebugBar components may also send messages to this tab.

Template use

The "Templates" tab will show you how many template calls were made, and the file path relative to the project root directory for each.

This will only be populated when you are flushing your cache (?flush=1). When templates are cached, a notice will be displayed letting you know to flush to see the full list.

Templates

Partial caching hits and misses

The "TemplateCache" tab shows how effective your chosen partial cache key is (e.g. <% cached 'navigation', $LastEdited %>...<% end_cached %>). It does this by indicating whether a key has hit a cache or not.

Partial caching

Environment and other information

There is a variety of other useful information available via various tabs and indicators on the debug bar. See the screenshot below, and the arrows explained in order from left to right:

Other indicators

Tabs

  • Session: Displays a list of everything in your current SilverStripe session
  • Cookies: Displays a list of all cookies available in a request
  • Parameters: Displays all GET, POST and ROUTE parameters from the current request
  • Config: Displays a list of the current SiteConfig settings from the CMS
  • Requirements: Shows a list of all Requirements calls made during a page's execution
  • Middlewares: Shows a list of all Middlewares used for this request
  • Mails: Shows a list of all emails sent
  • Headers: Shows a list of all headers

Indicators

Hover over indicators to see:

  • Locale: The locale currently being used in the site
  • Version: The current SilverStripe software version being used
  • User: The name of the user currently logged in
  • Memory usage: The amount of memory used to generate a page
  • Request time: The total time to generate a page (see below)
Request time

The request time indicator shows you how long it took for the server to render a page, it doesn't include the time your browser takes to render it. You can use browser consoles to profile this aspect.

  • For a regular page load, the request time will have a green underline to indicate a healthy speed
  • For a slower page load, the request time will have an orange underline to indicate that it took longer than it perhaps should have, but is still OK
  • For a long page load, the request time will have a red underline to indicate that it is potentially dangerously slow

The threshold for a dangerously slow page load can be configured with the DebugBar.warn_request_time_seconds configuration setting.

The threshold for a slower/warning level indicator is defined as a percentage of the dangerous threshold (by default, 50%). This can be adjusted by modifying the DebugBar.warn_warning_ratio configuration setting.

Helper methods

Quick debugging

The d() function helps you to quickly debug code. It will use the Symfony VarDumper to display the data in a "pretty" way.

In an XHR/AJAX context, it will simply display the data in a more simple fashion.

When d() is called without arguments, it will display all objects in the debug backtrace. It will display the variable name before its content to make it easy to identify data amongst multiple values.

d($myvar, $myothervar);

Any call to d() with "sql" in the name of the variable will output a properly formatted SQL query, for instance:

d($myDataList->sql());

Quick logging

The l() function helps you to log messages, and since they will appear in the "Messages" tab, it is very useful.

l('My message');

Configuration options

Wherever possible, features and settings have been made configurable. You can see a list of the default configuration settings by looking at _config/debugbar.yml. To modify any of these settings you can define a YAML configuration block in your mysite/_config folder, for example:

mysite/_config/debugbar.yml:

---
Name: mysitedebugbar
---
LeKoala\DebugBar\DebugBar:
  enabled_in_admin: false
  query_limit: 500

Settings

Setting Type Description
enable_storage bool Store all previous request in the temp folder (enabled by default)
auto_debug bool Automatically collect debug and debug_request data (disabled by default)
ajax bool Automatically inject data in XHR requests (disabled by default, since this makes the Chrome request inspector very slow due to the large amount of header data)
force_proxy bool Always use the database proxy instead of built in PDO collector (enabled by default)
check_local_ip bool Do not display the DebugBar if not using a local ip (enabled by default)
find_source bool Trace which file generates a database query (enabled by default)
enabled_in_admin bool enable DebugBar in the CMS (enabled by default)
include_jquery bool Let DebugBar include jQuery. Set this to false to include your own jQuery version
query_limit int Maximum number of database queries to display (200 by default for performance reasons)
warn_query_limit int Number of database queries before a warning will be displayed
performance_guide_link string When a warning is shown for a high number of DB queries, the following link will be used for a performance guide
warn_dbqueries_threshold_seconds int Threshold (seconds) for how long a database query can run for before it will be shown as a warning
warn_request_time_seconds int Threshold (seconds) for what constitutes a dangerously long page request (upper limit)
warn_warning_ratio float Ratio to divide the warning request time by to get the warning level (default 0.5)
show_namespace bool Show the fully qualified namespace in the Database tab when set to true. Defaults to false
db_collector bool Show the db tab. Defaults to true
config_collector bool Show the config tab. Defaults to true
partial_cache_collector bool Show the partial cache tab. Defaults to true
email_collector bool Show the email tab. Defaults to true
header_collector bool Show the headers tab. Defaults to true

Disabling the debug bar

You can disable the debug bar with PHP or configuration:

putenv('DEBUGBAR_DISABLE=true');
LeKoala\DebugBar\DebugBar:
  disabled: true

Troubleshooting

Using Vagrant

If you are using Vagrant (or presumably Docker or other virtualisation) and the DebugBar isn't showing up, make sure you have the check_local_ip config option set to false. This is due to the way Vagrant and Virtualbox configure networking by default.

Managing jQuery

The DebugBar will include its own version of jQuery by default. It will only be disabled in the admin (which already use jQuery).

If you have added jQuery in your requirements (filename must be jquery.js or jquery.min.js), the DebugBar will not load its own jQuery version. You can also set the following configuration flag to false to prevent the DebugBar from including its own jQuery.

LeKoala\DebugBar\DebugBar:
  include_jquery: false

If you are including jQuery yourself, it is expected you include it in Page::init(). Below is an example of how to the jQuery which ships with the framework:

protected function init()
{
    parent::init();
    Requirements::javascript('framework/thirdparty/jquery/jquery.min.js');
}

FulltextSearchable support

It has been reported that the FulltextSearchable extension conflicts with the config_collector.

If you happen to have an issue (eg: your $SearchForm not being printed), please disable the config_collector.

A quick note about the Security Page

LeKoala\DebugBar\Extension\ControllerExtension will include for you all the required assets for DebugBar.

This is done using the onAfterInit extension hook, however on the Security controller the onAfterInit is called before your init() method in the PageController.

Since you need to add jQuery before DebugBar this may be a problem, and therefore requirements will NOT be included on the Security controller.

If you want DebugBar to work on the Security controller, make sure to include all relevant requirements by calling DebugBar::includeRequirements(); after you include jQuery. When DebugBar is disabled this call will be ignored. Also note that any subsequent call to this method will be ignored as well.

Customize DebugBar css

Any customisation to the default css (as stored in "assets") should be made to css/custom.css. This file will be appended to the default css.


Maintainer

LeKoala - [email protected]

License

This module is licensed under the MIT license.

Comments
  • Silverstripe 4.1

    Silverstripe 4.1

    Doesn't this work with Silverstripe 4.1? I'm getting errors when running the site after installing this:

    [Emergency] Uncaught SilverStripe\Core\Injector\InjectorNotFoundException: ReflectionException: Class Psr\SimpleCache\CacheInterface.cacheblock does not exist in /Library/WebServer/Documents/rtv_ss4/vendor/silverstripe/framework/src/Core/Injector/InjectionCreator.php:17 Stack trace: #0 
    
    Trace
    SilverStripe\Core\Injector\InjectionCreator->create(Psr\SimpleCache\CacheInterface.cacheblock, Array) 
    Injector.php:585
    SilverStripe\Core\Injector\Injector->instantiate(Array, Psr\SimpleCache\CacheInterface.cacheblock, singleton) 
    Injector.php:988
    SilverStripe\Core\Injector\Injector->getNamedService(Psr\SimpleCache\CacheInterface.cacheblock, 1, Array) 
    Injector.php:941
    SilverStripe\Core\Injector\Injector->get(Psr\SimpleCache\CacheInterface.cacheblock) 
    SSViewer.php:558
    SilverStripe\View\SSViewer->getPartialCacheStore() 
    SSViewer.php:596
    SilverStripe\View\SSViewer->includeGeneratedTemplate(/Library/WebServer/Documents/rtv_ss4/silverstripe-cache/_www/.cachevendor.silverstripe.assets.templates.SilverStripe.Assets.Flysystem.PublicAssetAdapter_HTAccess.ss, SilverStripe\View\ArrayData, , Array, ) 
    SSViewer.php:674
    SilverStripe\View\SSViewer->process(SilverStripe\View\ArrayData, , ) 
    SSViewerProxy.php:36
    LeKoala\DebugBar\Proxy\SSViewerProxy->process(SilverStripe\View\ArrayData) 
    AssetAdapter.php:191
    SilverStripe\Assets\Flysystem\AssetAdapter->renderTemplate(SilverStripe\Assets\Flysystem\PublicAssetAdapter_HTAccess) 
    AssetAdapter.php:154
    SilverStripe\Assets\Flysystem\AssetAdapter->configureServer(1) 
    AssetAdapter.php:120
    SilverStripe\Assets\Flysystem\AssetAdapter->flush() 
    FlysystemAssetStore.php:897
    SilverStripe\Assets\Flysystem\FlysystemAssetStore::flush() 
    FlushMiddleware.php:22
    SilverStripe\Control\Middleware\FlushMiddleware->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    RequestProcessor.php:66
    SilverStripe\Control\RequestProcessor->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    SessionMiddleware.php:20
    SilverStripe\Control\Middleware\SessionMiddleware->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    AllowedHostsMiddleware.php:60
    SilverStripe\Control\Middleware\AllowedHostsMiddleware->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    TrustedProxyMiddleware.php:176
    SilverStripe\Control\Middleware\TrustedProxyMiddleware->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    HTTPMiddlewareAware.php:65
    SilverStripe\Control\Director->callMiddleware(SilverStripe\Control\HTTPRequest, Closure) 
    Director.php:370
    SilverStripe\Control\Director->handleRequest(SilverStripe\Control\HTTPRequest) 
    HTTPApplication.php:48
    SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest) 
    call_user_func(Closure, SilverStripe\Control\HTTPRequest) 
    HTTPApplication.php:66
    SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest) 
    call_user_func(Closure, SilverStripe\Control\HTTPRequest) 
    ErrorControlChainMiddleware.php:56
    SilverStripe\Core\Startup\ErrorControlChainMiddleware->SilverStripe\Core\Startup\{closure}(SilverStripe\Core\Startup\ErrorControlChain) 
    call_user_func(Closure, SilverStripe\Core\Startup\ErrorControlChain) 
    ErrorControlChain.php:236
    SilverStripe\Core\Startup\ErrorControlChain->step() 
    ErrorControlChain.php:226
    SilverStripe\Core\Startup\ErrorControlChain->execute() 
    ErrorControlChainMiddleware.php:69
    SilverStripe\Core\Startup\ErrorControlChainMiddleware->process(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPMiddlewareAware.php:62
    SilverStripe\Control\HTTPApplication->SilverStripe\Control\Middleware\{closure}(SilverStripe\Control\HTTPRequest) 
    HTTPMiddlewareAware.php:65
    SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure) 
    HTTPApplication.php:67
    SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, 1) 
    HTTPApplication.php:49
    SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest) 
    index.php:26
    
    
    type/bug affects/v4 
    opened by andreaslindahl 21
  • Add icons and colours to the message tab.

    Add icons and colours to the message tab.

    Add Icons and colours to the Messages. Colours and icons are based on bootstrap defaults.

    Todo: Remove the inline icons and use FA

    image

    Sorry for the huge screenshot, but taking screenshots on a 4K screen is a bit awkward

    opened by Firesphere 14
  • Cant seem to get working on Website Fontend

    Cant seem to get working on Website Fontend

    Hi There,

    Just seem to be having an issue getting this working on the front end of the website (admin shows find). I am including my own jQuery, the required CSS/JS from debug bar is loaded, and when I try to debug the DebugBar using in my Page Controller init() function:

    $foo = DebugBar::WhyDisabled();
    d($foo);
    

    The returned result is 'I don't know why'

    There are no errors that I can see being logged (both JS/PHP)

    If I can supply you with any useful info I can..

    Using SilverStripe 3.5

    opened by camexapps 12
  • Update to use shared database proxy

    Update to use shared database proxy

    Written up a proxy module at https://github.com/tractorcow/silverstripe-proxy-db. This allows registration of a shared proxy database that multiple modules can decorate.

    Also see:

    • https://github.com/silverstripe/silverstripe-fulltextsearch/issues/201
    • https://github.com/silverstripe/silverstripe-auditor/issues/16
    type/enhancement affects/v4 change/major effort/easy impact/medium 
    opened by tractorcow 11
  • Instructions on how to add a tab to the debugbar

    Instructions on how to add a tab to the debugbar

    For my CSP headers module, I would like to add a debugbar, to make it easier for devs to inspect and debug the headers generated (and for my own development reasons, of course)

    opened by Firesphere 10
  • Add a Header collector

    Add a Header collector

    Show a list of all the headers in the request. Re: #124 , I decided it would be better off being part of the original code. The extension point is something I might look at later.

    opened by Firesphere 9
  • [BUG] silverstripe-cache dir is missing

    [BUG] silverstripe-cache dir is missing

    [Emergency] Uncaught UnexpectedValueException: DirectoryIterator::__construct(/srv/dist/web/silverstripe-cache/www-data/debugbar/): failed to open dir: No such file or directory
    GET /?flushtoken=4bcb6cc6cb95cdc471d385737ce2aca5&flush=
    Line 113 in /srv/dist/web/vendor/maximebf/debugbar/src/DebugBar/Storage/FileStorage.php
    
    type/bug affects/v4 
    opened by a2nt 9
  • NEW Add Config proxy showing calls to configuration manifests during a request

    NEW Add Config proxy showing calls to configuration manifests during a request

    This pull request removes the SiteConfig listing from the Config tab and adds a list of config calls that were made during a page request. It will show duplicated calls with a badge.

    I expect this approach to be iterated on, but this is a first pass.

    type/enhancement affects/v4 change/minor 
    opened by robbieaverill 9
  • Release 1.0.0

    Release 1.0.0

    Hey @lekoala

    With the completed merge of the following PRs, the module seems to be stable enough for a 1.0.0 release - what do you think?

    • #37
    • #38
    • #39
    • #40
    • #41
    • #42

    The last step would probably be to flesh our the documentation for this module a little more and include some screenshots etc, which I am working on at the moment. I'll push a pull request when it's done.

    Our team will be looking at upgrading this for SS4 in the next week or two as well adding a couple of new features which are not really doable in SS3.

    Any thoughts on this?

    opened by robbieaverill 9
  • How to show this bar?

    How to show this bar?

    I am confused about the usage of this module. After install it via composer, it didn't show up automatically, even when request with "debug" and "debug_request".

    Is there any step I need go through to make this module work? Maybe I need to change some configurations?

    opened by zzdjk6 8
  • Fatal error: Call to a member function getTitle() on null

    Fatal error: Call to a member function getTitle() on null

    I'm getting this error. I'm using PHP 5.6 Mac OSX Apache 2.4 Silverstripe 3.6.1

    I ran multiple flushes, with no change. Uninstall and flush again, and the site works again.

    Fatal error: Call to a member function getTitle() on null in .../debugbar/code/DebugBarSilverStripeCollector.php on line 174
    --
    
    1 | 0.0006 | 240496 | {main}( ) | ../main.php:0
    2 | 4.7042 | 7525160 | Director::direct( ) | ../main.php:191
    3 | 131.4706 | 23252328 | RequestProcessor->postRequest( ) | ../Director.php:183
    4 | 131.4707 | 23252552 | DebugBarRequestFilter->postRequest( ) | ../RequestProcessor.php:42
    5 | 131.4707 | 23252672 | DebugBar::renderDebugBar( ) | ../DebugBarRequestFilter.php:57
    6 | 131.4707 | 23254512 | DebugBar\JavascriptRenderer->render( ) | ../DebugBar.php:226
    7 | 131.4707 | 23254808 | DebugBar\JavascriptRenderer->getJsInitializationCode( ) | ../JavascriptRenderer.php:981
    8 | 131.4708 | 23255144 | DebugBar\JavascriptRenderer->getJsControlsDefinitionCode( ) | ../JavascriptRenderer.php:1015
    9 | 131.4710 | 23268080 | DebugBarSilverStripeCollector->getWidgets( ) | ../JavascriptRenderer.php:1059
    

    Any ideas on how to fix?

    type/bug affects/v3 change/patch effort/easy impact/medium 
    opened by nspyke 7
  • Timeline improvement idea on master branch

    Timeline improvement idea on master branch

    I saw you updated the timeline with more details (yay!) And then a separate table with all the calls made below it.

    I think it would be more readable, if the call table was a separate tab? (Although, I must say, the tab bar is getting quite heavily populated!)

    type/enhancement impact/low 
    opened by Firesphere 3
  • [IMPROVEMENT] Display cached variables

    [IMPROVEMENT] Display cached variables

    It would be awesome to display cached variables: name, value, ttl

    use SilverStripe\Core\Cache\FilesystemCacheFactory;
    ...
    $cache = new FilesystemCacheFactory('data');
    $this->cache = $cache->create('EventsAPI');
    $this->cache->set('token', 'test', 3600);
    
    type/enhancement affects/v4 change/minor effort/medium impact/medium 
    opened by a2nt 0
  • [BUG] too big header at the CMS

    [BUG] too big header at the CMS

    Getting an error from nginx when debugbar enabled at the CMS

    2018/05/29 00:14:35 [error] 15667#15667: *903 upstream sent too big header while reading response header from upstream, client: 127.0.0.1, server: *.run.local.pro, request: "GET /admin/pages/treeview HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.2-fpm.sock:", host: "run.local.pro", referrer: "http://run.local.pro/admin/pages/"
    
    affects/v3 affects/v4 change/patch effort/easy impact/low type/docs 
    opened by a2nt 9
  • Remove CSS file widget.css

    Remove CSS file widget.css

    I've noticed the widget.css file was added back. We removed it previously because it was overriding the core package and moved everything to our own extension stylesheet. javascript/sqlqueries/widget.css

    Commit

    type/bug affects/v4 change/patch effort/easy impact/low 
    opened by sachajudd 1
  • Update readme to include YAML configuration tab information

    Update readme to include YAML configuration tab information

    The readme needs some information on the Config tab.

    We should update any links that reference docs/en files, and update "Config tab is for SiteConfig" etc.

    affects/v4 impact/low type/docs 
    opened by robbieaverill 0
Releases(2.2.0)
  • 2.2.0(Sep 13, 2022)

    What's Changed

    • MNT Fix CI github workflow by @GuySartorelli in https://github.com/lekoala/silverstripe-debugbar/pull/143

    New Contributors

    • @GuySartorelli made their first contribution in https://github.com/lekoala/silverstripe-debugbar/pull/143

    Full Changelog: https://github.com/lekoala/silverstripe-debugbar/compare/2.1.0...2.2.0

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Aug 15, 2022)

    What's Changed

    • Update composer file to address 4.11 upgrade by @djmattski in https://github.com/lekoala/silverstripe-debugbar/pull/138
    • fix php 8.1 deprecation warning by @andrewnick in https://github.com/lekoala/silverstripe-debugbar/pull/139

    New Contributors

    • @djmattski made their first contribution in https://github.com/lekoala/silverstripe-debugbar/pull/138
    • @andrewnick made their first contribution in https://github.com/lekoala/silverstripe-debugbar/pull/139

    Full Changelog: https://github.com/lekoala/silverstripe-debugbar/compare/2.0.8...2.1.0

    Source code(tar.gz)
    Source code(zip)
  • 2.0.8(Jul 8, 2022)

    What's Changed

    • Deprecated trim() fix by @callan-stretton in https://github.com/lekoala/silverstripe-debugbar/pull/135

    New Contributors

    • @callan-stretton made their first contribution in https://github.com/lekoala/silverstripe-debugbar/pull/135

    Full Changelog: https://github.com/lekoala/silverstripe-debugbar/compare/2.0.7...2.0.8

    Source code(tar.gz)
    Source code(zip)
  • 2.0.7(Jul 4, 2022)

  • 2.0.5(Apr 12, 2021)

    • checks if collectors are available (Thomas) - f254adf
    • fix tests (Thomas) - 2a25756
    • FIX isDisabled does not cover all cases (Thomas) - b906443
    • FIX showDb should ignore null (Thomas) - 9093ad6
    • Update README.md (Thomas Portelange) - 3b1ce46
    • Update SSViewerProxy.php (torleif) - 9b519fe
    • fix psr-4 naming convention (Thomas) - db9692f
    • fix message collector helper (Thomas) - 4416451
    • use getter (Thomas) - 485ddac
    • NEW add track time helper (Thomas) - 05b235e
    • properly proxy all config manifests and fix tests (Thomas) - bb6c676
    • Make the requirements more readable (Simon Erkelens) - bb68479
    • FIX properly display line for a trait (Thomas) - f5786a7
    • add tooltip (Thomas) - 7f745f6
    • FIX z-index issue (Thomas) - 5663f65
    • group similar labels in timeline (Thomas) - 992bad9
    • allow to customize css easily (Thomas) - b083176
    • update assets to latest version (Thomas) - ef440ad
    • avoid tracking the same template multiple times (Thomas) - b2b0866
    • NEW add template rendering time warning (Thomas) - e57543b
    Source code(tar.gz)
    Source code(zip)
  • 2.0.4(Jan 13, 2021)

    • Add a Header collector (Simon 'Firesphere' Erkelens) - 789dccb
    • MNT Travis shared config, use sminnee/phpunit (Steve Boyd) - a836e22
    • Bugfix: Only store DB queries in memory when enabled (Adrian Humphreys) - 99ec8f7
    • FIX Yaml syntax compat (Adrian Humphreys) - 9f42d8d
    • FIX Yaml syntax compat with symfony/yaml:4 (Ingo Schommer) - 8f0092d
    • FIX Minimized/closed button icon now has a left border, since it is right aligned (Robbie Averill) - 673fa8d
    • FIX Minimized/closed button icon now has a left border, since it is right aligned (Robbie Averill) - 40d99e7
    • FIX ensure debugbar is run after app config (Scott Hutchinson) - 269caf2
    • Session::getAll() may return null (maks) - fbef0aa
    • Update branch alias for 2.x-dev (Robbie Averill) - 37e79e4
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Apr 5, 2019)

    • Remove unnecessary capture group (Robbie Averill) - bc3e57e
    • FIX DebugBar now trims "extra" section of PHP_VERSION from PHP version information for readability (Robbie Averill) - 7e396da
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0-beta1(Mar 18, 2019)

    • FIX: The 3rd party dependency has dropped support for PHP 5.3/5.4 (Sam Minnee) - f211cb6
    • NEW: PHP 7.2 support in debugbar 1.2.x (Sam Minnee) - efd8238
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Mar 8, 2019)

  • 2.0.1(Nov 16, 2018)

    • Session::getAll() may return null (maks) - 7058480
    • FIX ensure debugbar is run after app config (Scott Hutchinson) - 361d28e
    • Add various recipe versions to Travis matrix (Robbie Averill) - b353ece
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Jun 20, 2018)

    • Remove obsolete branch alias and dev constraints (Robbie Averill) - f83b64a
    • show more specific plain values (Thomas) - ddbfddb
    • add ability to write script in the head (Thomas) - 4917627
    • rename controller (Thomas) - 0ce70a2
    • add max_header_length option (Thomas) - ba6d397
    • skip test (Thomas) - 81bf50f
    • avoid print_r on objects to prevent recursion (Thomas) - 78d2053
    • only track config with values (Thomas) - d5d3e2f
    • move cache config to its own yml file (Thomas) - e5d33bb
    • lint (Thomas) - a43e222
    • response can be null (Thomas) - 1fc78fe
    • response can be null in middleware (Thomas) - 8c92388
    • reduce log level for live warnings (Thomas) - 5764d7c
    • fix tests with many queries (Thomas) - 5dda4c7
    • tests for d helper (Thomas) - af0c08a
    • improve d() in cli context (Thomas) - 98b61c5
    • fix missing css (Thomas) - 4d08e88
    • fix force_proxy usage (Thomas) - ed9f337
    • allow using context as second argument in l (Thomas) - d656593
    • clear fileStorage on flush (Thomas) - c050bc6
    • FIX Update unit test class by removing infinite loop and removing unnecessary test (Raissa North) - 987d56e
    • FIX Update Scrutinizer config (Raissa North) - 74782a7
    • do not enable in cms preview and refactor check (Thomas) - ac629c4
    • fix minor link styling issue with bootstrap 4 (Thomas) - 49d97cd
    • move collapsed debugbar to the right (Thomas) - 7a37ba4
    • allow disable extra collectors (Thomas) - c8fbe5c
    • update icons (Thomas) - ac72062
    • fix the test suite (Thomas) - ea118a6
    • safely access manifests and refactor helper (Thomas) - c1a7b16
    • PartialCacheCollector should explicitly use Config assets (Thomas) - f56c829
    • Update tests to use ProxyDBExtension (Thomas) - 5a5176e
    • Update to use shared database proxy (Thomas) - b56a8ed
    • cross platform scripts (Thomas) - d72b415
    • refactor module resource access + windows fix (Thomas) - a122898
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0-beta1(Dec 7, 2017)

    SilverStripe 4 compatible

    • remove version test (Thomas) - 49794da
    • lint (Thomas) - dc745a4
    • only show query warning into messages tab, not in all logs (Thomas) - 2fd74e2
    • convert to vendormodule, expose assets and js (Andrew Aitken-Fincham) - 8968a74
    • add troubleshooting help for vagrant (#90) (Andrew Aitken-Fincham) - eab1161
    • formatting (Thomas) - d072ef0
    • NEW aggregate messages and use swift collector (Thomas) - c61fb93
    • testing fails on other database than mysql (eg : sqlite3) (Thomas) - 4b408d5
    • ignore DatabaseProxy in findSource (Thomas) - eeba094
    • Replace getenv calls with SilverStripe\Core\Environment::getEnv() #88 (Thomas) - b9e4d0e
    • FIX Update Travis and composer configuration for vendorised SilverStripe dependencies (Robbie Averill) - ee120ad
    • NEW TemplateCache tab (showing partial caching hits/misses) added (#78) (Franco Springveldt) - 9f8837a
    • FIX Travis builds by adding unstable silverstripe/admin module (#79) (sachajudd) - 856f7c4
    • Update coverage whitelist to prevent ControllerTest from being covered (Robbie Averill) - 2815480
    • FIX Reduce warning to info level to prevent user_error from breaking layout (Robbie Averill) - dc1cb76
    • FIX Allow enabled_in_admin to work when run in a subfolder (Sacha Judd) - 9d2c5a8
    • API Swap SSTemplateParserProxy for SSViewerProxy (Robbie Averill) - 5fb1e4a
    • Update PHPDoc on config manifest proxy constructor (Robbie Averill) - 3177085
    • Fix typo (Robbie Averill) - a290759
    • FIX Remove NullHandler logger override. DebugBar will only display debug and info messages. (Robbie Averill) - 387766c
    • Add dev version of framework to Travis builds (Robbie Averill) - 133873b
    • FIX Use phpdbg instead of xdebug for code coverage runs (Robbie Averill) - e0ad916
    • Bump branch alias for 1.2.x-dev (Robbie Averill) - b11e05c
    • NEW Add Config proxy showing calls to configuration manifests during a request (Robbie Averill) - 5ec28a7
    • Don't use FQN (Simon Erkelens) - 2246f41
    • FIX Errors in requirements and message collector in CMS, and badge alignment (Robbie Averill) - 9ff3550
    • DOCS Update references to SS_Log and RequestFilter for SS4 (Robbie Averill) - 61455c5
    • Mock request start time (Robbie Averill) - 62d6e5d
    • FIX Separate TimeDataCollector tests to prevent config bleed across assertions (Robbie Averill) - e55ef51
    • Do not remove xdebug on Travis builds when running coverage (Robbie Averill) - a18036f
    • FIX Remove unused namespace imports (Robbie Averill) - 4ed3556
    • FIX Remove PHP 5.3 references to $this (Robbie Averill) - beb6769
    • FIX PSR-2 violations and agnostic DEBUGBAR_DIR for new Travis config (Robbie Averill) - 7a76e59
    • API Remove LogHandler in favour of Monolog NullHandler. Add tests for LogFormatter (Robbie Averill) - fb5d08f
    • API Add HTTP middleware to replace request filter, tweaks for API changes, Monolog formatters added (Robbie Averill) - 7ec94be
    • NEW Add minimum stability for Travis builds, PHPUnit and PHPCS ruleset definitions (Robbie Averill) - 69541e8
    • API Implement namespaces, replace SS_Log with Monolog calls. Add silverstripe/admin dependency. (Robbie Averill) - 071ebcf
    • API Add namespaces, add PSR-4 autoloader to composer.json (Robbie Averill) - e324c7d
    • API Rename classes for namespacing. Remove SqlFormatter in favour of composer install. (Robbie Averill) - fefdd62
    • Update composer, travis, readme for SS4 compat. Rename files for namespacing. (Robbie Averill) - 5f8801f
    • Update branch alias for 2.0.x-dev (Robbie Averill) - 1df032f
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Nov 3, 2017)

    • FIX Use Member::currentUser if exists instead of double checking for ID (#84) (Robbie Averill) - 14a01b1
    • Use precise distro for PHP 5.3 support in Travis (Robbie Averill) - 48dfd03
    • FIX Update DB query warn level from 10 to 100 (Robbie Averill) - fdc103f
    • NEW Remove opacity from tooltip to meet WCAG AA standards (Sacha Judd) - 15b778c
    • Remove obsolete branch alias (Robbie Averill) - d1450f8
    • Use ->get() for getting configs rather than magic __get (Robbie Averill) - 8095e3a
    • NEW Make performance guide link configurable (Robbie Averill) - c6c62b2
    • Update branch alias for 1.1.x-dev (Robbie Averill) - ed6f07f
    • Disable codecov commit status notifications (Robbie Averill) - b7bc067
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Jul 12, 2017)

    • DOCS Move into a longer list in the readme (Robbie Averill) - bbef332
    • Pretty print JSON; DebugBar automagically picks this up and prints it prettified (Simon Erkelens) - 1404181
    • Disable codecov commit status notifications (Robbie Averill) - ff2170f
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jul 11, 2017)

    • DOCS Remove changelog - please see github.com release notes (Robbie Averill) - 358e8a6
    • Remove obsolete branch alias (Robbie Averill) - 24f1329
    • DOCS Link documentation directly to index.md (Robbie Averill) - c23a234
    • FIX Do not show badge for count on templates when none are listed (Robbie Averill) - 586a2f7
    • Update branch alias for 1 (Robbie Averill) - 2b1e71a
    • NEW add widgets-filter color for messages (Sacha Judd) - dbe61b7
    • DOCS Add screenshot to readme, typo and grammar fixes, more info on index page (Robbie Averill) - 56c11b6
    • prevent multiple checks by using false (Thomas) - 6884923
    • fix wrong merge (Thomas) - 0aa24b4
    • DOCS Update readme and add documentation section with screenshots (Robbie Averill) - 4ed7b2f
    • FIX Improve consistency between doc blocks and assignments, remove unused code (Robbie Averill) - 241c7db
    • Move JsonSqlFormatter to a separate thirdparty directory and document its purpose (Robbie Averill) - 1f200ef
    • NEW Improve message for large numbers of DB queries to include the threshold (Robbie Averill) - 0e2251f
    • FIX Ensure database collector works on CWP (Robbie Averill) - 672c516
    • NEW Show all templates rendered when not cached (Robbie Averill) - 71b33a1
    • DOCS Update readme formatting, add new features and configuration options (Robbie Averill) - 0fe4508
    • API Remove DebugBarDatabaseProxy, use DebugBarDatabaseNewProxy instead (3.2+ only) (Robbie Averill) - 46224de
    • NEW Add warning message more than X database queries are run on a request (Robbie Averill) - 5ee062d
    • NEW Add OK, warning and danger notifications when a page request takes too long (Robbie Averill) - 7ee22ca
    • Disable codecov comments (Robbie Averill) - f59c709
    • ENHANCEMENT composer and travis updated for php53 support (Franco Springveldt) - bf6fce4
    • FIX traditional array syntax introduced for php53 support (Franco Springveldt) - 9bf684d
    • Add composer branch alias for dev-master to 1.0.x-dev (Robbie Averill) - 57ba242
    • DOCS Add Codecov.io badge to readme (Robbie Averill) - 8d8c5db
    • comment failing test (Thomas) - d24ca02
    • make jquery inclusion configurable and smarter (Thomas) - dd8325d
    • add badges (Thomas Portelange) - e870764
    • fix jQuery errors in cms (Thomas) - 16dbc89
    • update changelog (Thomas) - 33c0140
    • improve user widget (Thomas) - d5f6664
    • remove foobar message (Thomas) - 7697cb9
    • ENHANCEMENT templates rendered widget added (Franco Springveldt) - 4c7d2e8
    • NEW Add configurable warning threshold for DB queries that take X seconds, visual indicator = red (Robbie Averill) - d7252c3
    • FIX load bundled jQuery in no-conflict mode (Franco Springveldt) - b78075b
    • FIX DebugBarDatabaseNewProxy constructor can handle array and object input (Franco Springveldt) - 941e746
    • ENHANCEMENT psr2 linter ran and restored short array syntax (Franco Springveldt) - ba632aa
    • FIX Update SS collector getWidgets test to stub out dynamic data (Robbie Averill) - 84eb6be
    • NEW Add silverstripe/siteconfig as a dependency (used in collector), add more tests (Robbie Averill) - e0f5baf
    • API Deprecate DebugBarDatabaseProxy and ignore from code coverage (Robbie Averill) - 147f8c7
    • NEW Add more unit tests for controller, extension, database proxy and LeftAndMainExtension (Robbie Averill) - 73105bf
    • NEW Refactor styling for toolbar interface (Sacha Judd) - a364ada
    • FIX Update $isTest to check whether a SapphireTest is running (Robbie Averill) - b150238
    • NEW Pass compatible log levels to MessagesCollector to enable default console styles (Robbie Averill) - f7d8268
    • fix strict notices on SS3.5 (Werner M. Krauß) - 127eb75
    • clearing debugbar should set to false (Thomas) - 189c766
    • add some tests (Thomas) - 3af8f46
    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Jul 10, 2017)

    • Display only a specific duplicated query (Thomas) - d379f79
    • fix strict notice on SS3.5.0 (Werner M. Krauß) - 8702967
    • fix changelog formatting (Thomas) - 1bc5012
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Jul 10, 2017)

    • add changelog and update composer json (Thomas) - e9c58e9
    • make DebugBar run properly on Security page (Thomas) - 1edefe1
    • document sql trick (Thomas) - 22d0af4
    • autoformat as sql any var that is a string and with sql in the name (Thomas) - dbbf78b
    • it's not local ip (Thomas) - 37fdc85
    • local ip supports ipv6 style (Thomas) - 997b129
    • we don't need output buffering for showqueries (Thomas) - 9502091
    • showqueries on steroids (Thomas) - d0b2c3a
    • exclude sqlquery from source (Thomas) - cb97f1e
    • no need to show database if there is only one (Thomas) - de4147d
    • cleaner layout for show more fields (Thomas) - befc04a
    • simpler syntax for logging arrays (Thomas) - f24f62b
    • ajax headers and post are not the best friends (Thomas) - f56a7cc
    • ignore closure in source (Thomas) - 6f0d780
    • requirements may have been cleared (Thomas) - 00d6a2d
    • fix potentially undefined template (Thomas) - 9687a58
    • small update to _d (Thomas) - 9a9f6fa
    • actually, $headers could be a string or an array (Thomas) - 862ffcf
    • calling d without arguments show all objects in the backtrace (Thomas) - 05fcce3
    • prevent throwing js errors (Thomas) - 8f349a9
    • supercharge d() helper (Thomas) - 2720b49
    • store controller when it's available to keep it available after request (Thomas) - f080e9d
    • change back to variable list instead of table (Thomas) - c52b067
    • cleanup assets management (Thomas) - 92b045d
    • change text for masquerade (Thomas) - fdfda15
    • show masquerade in user icon (Thomas) - 0b8b879
    • limit the number of queries displayed by default (Thomas) - fc42019
    • support admin injection (Thomas) - b82676a
    • fix duplicated filters due to ajax load (Thomas) - b26026d
    • cleanup (Thomas) - b41e3d9
    • hide debug tab if empty - update readme (Thomas) - 796bf1b
    • refactor widget to use proper variable names and have a filter for duplicated queries (Thomas) - 6cc249f
    • new feature: show database and source of query (Thomas) - 35d42aa
    • split better fields using a regex (Thomas) - e416a6e
    • disable if not using local ip - add constant to force the debugbar to be disabled (Thomas) - 836a7ec
    • create the new proxy class - add row count - add force_proxy option (Thomas) - f96a5e0
    • make sql queries more readable by moving selected fields into a clickable tab (Thomas) - afe5223
    • basic database support if driver is not pdo (Thomas) - 53416f4
    • make the debugbar compatible with SS 3.1 (Thomas) - 559f868
    • should set flag to true (Thomas) - 9458539
    • disable ajax injection by default (Thomas) - 3becd28
    • do not trigger buffering if no debug request is made (Thomas) - f8e7638
    • auto debug set to false because it has a lot of potential side effects (Thomas) - 6a1a0dc
    • more friendly ajax dump (Thomas) - 952febe
    • check for buffer (Thomas) - f4cc0ca
    • don't run in admin if not supported (Thomas) - 1b4c43f
    • dump everything (Thomas) - acfe231
    • update docs (Thomas) - d2c9855
    • refactor collectors (Thomas) - cc8a19e
    • collect more (Thomas) - 08e7bf1
    • fix collection for custom routes (Thomas) - 24d4b7d
    • use Debug:caller (Thomas) - 4320ea9
    • typehint everything (Thomas) - 7abb7d9
    • multiple controllers could init (Thomas) - 3d2b0f1
    • add config collector on init to avoid extra query (Thomas) - 89d1450
    • sometimes errstr is not defined (Thomas) - 2f27c70
    • fix typo (Thomas) - c684507
    • another helper (Thomas) - b881bf4
    • fix double call (Thomas) - 48205d9
    • escape \ properly (Thomas) - 4c4f58e
    • document some strange behaviour that is fixed in SS 4.0 (Thomas) - 54b2d8d
    • change icon (Thomas) - 435f566
    • update docs (Thomas) - 61a915f
    • add auto debug (Thomas) - 3230caf
    • intercept all messages in a silverstripe tab (Thomas) - c1d7c89
    • refactor config - add own controller for open handler (Thomas) - 244189f
    • url starts with a / and check for key existence (Thomas) - b4776a9
    • I made a terrible typo (Simon Erkelens) - a284a2f
    • #5 Don't run on dev/build or CLI (Simon Erkelens) - 773abd5
    • add message about the controller extension (Thomas) - fbe3264
    • controller curr is not available anymore (Thomas) - 9dc2860
    • do not include ajax data in the cms (Thomas) - 3479111
    • document installation (Thomas) - 434c055
    • Only attach the debugbar in dev mode (Simon Erkelens) - 8b4b86c
    • improve performance if not in dev mode (Thomas) - 46000e8
    • include init script using requirements api (Thomas) - ece3d39
    Source code(tar.gz)
    Source code(zip)
Owner
Thomas Portelange
Web developer
Thomas Portelange
A SilverStripe module for conveniently injecting JSON-LD metadata into the header of each rendered page in SilverStripe

A SilverStripe module for conveniently injecting JSON-LD metadata into the header of each rendered page in Silver

null 4 Apr 20, 2022
Silverstripe-fulltextsearch - Adds external full text search engine support to SilverStripe

FullTextSearch module Adds support for fulltext search engines like Sphinx and Solr to SilverStripe CMS. Compatible with PHP 7.2 Important notes when

Silverstripe CMS 42 Dec 30, 2022
Silverstripe-searchable - Adds to the default Silverstripe search by adding a custom results controller and allowing properly adding custom data objects and custom fields for searching

SilverStripe Searchable Module UPDATE - Full Text Search This module now uses Full Text Support for MySQL/MariaDB databases in version 3.* Adds more c

ilateral 13 Apr 14, 2022
SilverStripe Garbage Collection Module

SilverStripe Module for defining and processing Garbage Collection on SilverStripe Applications.

Brett Tasker 8 Aug 12, 2022
This module integrates Silverstripe CMS with Google Translate API and then allows content editors to use automatic translation for every translatable field.

Autotranslate This module integrates Silverstripe CMS with Google Translate API and then allows content editors to use automatic translation for every

null 4 Jan 3, 2022
Silverstripe module allowing editors to create newsletters using elemental blocks and export them to a sendy instance

Silverstripe Sendy Silverstripe module allowing editors to create newsletters using elemental blocks and export them to a sendy instance. Introduction

Syntro Opensource 4 Apr 20, 2022
Magento 2 Module Experius Page Not Found 404. This module saves all 404 url to a database table

Magento 2 Module Experius Page Not Found 404 This module saves all 404 urls to a database table. Adds an admin grid with 404s It includes a count so y

Experius 28 Dec 9, 2022
Silverstripe-sspy - Python based SSPAK export with higher reliability and cross-platform compatibility

SSPY - Python Stand-alone SSPAK solution © Simon Firesphere Erkelens; Moss Mossman Cantwell Usage: sspy [create|load|extract] (db|assets) --file=my.

Simon Erkelens 1 Jun 29, 2021
Sspak - Tool for managing bundles of db/assets from SilverStripe environments

SSPak SSPak is a SilverStripe tool for managing database and assets content, for back-up, restoration, or transfer between environments. The file form

Silverstripe CMS 45 Dec 14, 2022
Markdownfield - Markdown field for SilverStripe

MarkdownField This module introduces a new DB field type Markdown & Markdown Editor. It uses github style Markdown style. And uses the simple markdown

SilverStripers 10 Jul 10, 2022
Automatically delete old SiteTree page versions from Silverstripe

Version truncator for Silverstripe An extension for Silverstripe to automatically delete old versioned DataObject records from your database when a re

Ralph Slooten 35 Dec 7, 2022
Silverstripe-populate - Populate your database through YAML files

Populate Module This module provides a way to populate a database from YAML fixtures and custom classes. For instance, when a building a web applicati

Silverstripe CMS 22 Oct 3, 2022
Silverstripe-ideannotator - Generate docblocks for DataObjects, Page, PageControllers and (Data)Extensions

silverstripe-ideannotator This module generates @property, @method and @mixin tags for DataObjects, PageControllers and (Data)Extensions, so ide's lik

SilverLeague 44 Dec 21, 2022
Alerts users in the SilverStripe CMS when multiple people are editing the same page.

Multi-User Editing Alert Alerts users in the SilverStripe CMS when multiple people are editing the same page. Maintainer Contact Julian Seidenberg <ju

Silverstripe CMS 15 Dec 17, 2021
Silverstripe-tinytidy - Control which styles are available in TinyMCE's style dropdown menu and what elements they can be applied to

TinyTidy for SilverStripe This module mainly serves as an example of how to customise the 'styles' dropdown menu in the TinyMCE editor to control whic

Jono Menz 30 Jul 30, 2020
Helper plugin to install SilverStripe recipes

SilverStripe recipe-plugin Introduction This plugin enhances composer and allows for the installation of "silverstripe-recipe" packages. These recipes

Silverstripe CMS 10 Oct 4, 2022
SilverStripe Model Annotations Task

A SilverStripe Task to generate data object model annotations for defined db fields. Also for configs from data extensions.

CSoellinger 2 Apr 21, 2022
Adds a "spam protection" field to SilverStripe userforms using Cloudflare's Turnstile service.

Turnstile for Silverstripe Adds a "spam protection" field to SilverStripe userforms using Cloudflare's Turnstile service. Maintainer Contact Ed Chipma

Webbuilders Group 3 Dec 15, 2022
Demo Silverstripe and JavaScript sources for Lightning Talk "FormField Mini Apps" at StripeCon EU 2022

Watch the Lightning Talk on Youtube ?? Demo repository for Lightning Talk "FormField Mini Apps with the JavaScript framework/lib/style of your choice"

Julian Scheuchenzuber 2 Sep 20, 2022