wintercms / wn-builder-plugin Goto Github PK
View Code? Open in Web Editor NEWGUI for building plugins in Winter CMS
License: MIT License
GUI for building plugins in Winter CMS
License: MIT License
PHP 8.0.16 (cli) (built: Mar 3 2022 06:25:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.16, Copyright (c) Zend Technologies
with Zend OPcache v8.0.16, Copyright (c), by Zend Technologies
mysql Ver 8.0.28 for macos12.2 on arm64 (Homebrew)
php artisan winter:version
*** Detecting Winter CMS build...
*** Detected a modified version of Winter CMS build 1.1.8.
Composer version 2.2.8
Composer show winter/storm
name : winter/storm
descrip. : Winter CMS Storm Library
keywords : cms, storm, winter
versions : * dev-wip/1.2
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : https://wintercms.com
source : [git] https://github.com/wintercms/storm.git c76f1facb74706d02f3499aceeaf8e7018115bfc
dist : [zip] https://api.github.com/repos/wintercms/storm/zipball/c76f1facb74706d02f3499aceeaf8e7018115bfc c76f1facb74706d02f3499aceeaf8e7018115bfc
path : /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm
names : winter/storm, october/rain
support
source : https://github.com/wintercms/storm/tree/wip/1.2
autoload
files
psr-4
Winter\Storm\ => src/
requires
assetic/framework ~3.0
doctrine/dbal ^2.6
erusev/parsedown-extra ~0.7
ext-ctype *
ext-curl *
ext-dom *
ext-fileinfo *
ext-gd *
ext-json *
ext-libxml *
ext-mbstring *
ext-openssl *
ext-pdo *
ext-zip *
laravel/framework ~9.0
laravel/tinker ^2.7
league/csv ~9.1
nesbot/carbon ^2.0
php ^8.0.2
scssphp/scssphp ~1.0
symfony/yaml ^6.0
twig/twig ~3.0
wikimedia/less.php ~3.0
wikimedia/minify ~2.2
requires (dev)
dms/phpunit-arraysubset-asserts ^0.1.0|^0.2.1
meyfa/phpunit-assert-gd ^2.0.0|^3.0.0
mockery/mockery ^1.4.4
php-parallel-lint/php-parallel-lint ^1.0
phpunit/phpunit ^9.5.8
squizlabs/php_codesniffer 3.*
suggests
ext-PDO_ODBC Required to use databases accessed through ODBC drivers
ext-pdo_dblib Required to use MS SQL Server databases
ext-pdo_mysql Required to use MySQL databases
ext-pdo_pgsql Required to use PostgreSQL databases
ext-pdo_sqlite Required to use SQLite databases
replaces
october/rain self.version
Step to reporduce
#INSTALLATION
In the Builder plugin
CSS3 and HTML5 icons are not shown next to text value in the dropdown lists:
For example, plugin configuration pop-up:
Back-end menu item configuration:
Cause of issue can be found at:
This two lines doesn't contain proper second parameter in array, for example, should be 'oc-icon-css3'
and 'oc-icon-html5'
instead of plain '|'
.
If needed then I can create super-simple pull request or maintainers could easily fix this too but maybe there is another cause/reason why these icons are missing?
1.1
7.4
MySQL/MariaDB
Winter.Builder,Rainlab.User
Within the builder plugin i have created a DB with a column called "settingsO" as "Text" with a length of 65535.
Then in my models for this DB, i went to Forms -> fields.yaml and created a "Checkbox List" with three options.
It does not matter if i choose one, two or all options from within my form in the backend, i always get this error:
"Unexpected type of array when attempting to save attribute "settingsO", try adding it to the $jsonable property." on line 781 of /htdocs/vendor/winter/storm/src/Database/Model.php
No response
On the Builder page, clicking on "start creating a plugin" and trying to uyse the icon picker will reveal the select2 field, but it will appear behind the modal and the page's "shadow" effect. Setting the generated select2 container's z-index to 5070 or above puts it back on top of the modal (because the modal is set to a z-index of 5070).
v2.0.6, SQLite.
For one field of type Text in columns.yaml, I set the search capability. As a result, the search is performed on two letters in the second word.
If create migration file with artisan command ./artisan create:migration plugin.code --name "SomeMigration" --table some_table -u
then created migration in subdir with dirname as version number.
On the builder plugin if try to open this migration from the list - catching appliaction error about unable to find migration file
On creating the first new table in a custom plugin, an unhandled error occured.
Winter CMS Build: 1.2.0
Plugins Installed: Demo, Builder
-create a new plugin and call it 'Menus'
-create a new table 'menus_list'
Expected behavior:
-Save the table
-Go back to Builder page
Unhandled Error
mb_strtolower(): Argument #1 ($string) must be of type string, array given
../vendor/laravel/framework/src/Illuminate/Support/Str.php line 474
P.S: I'm new to the CMS so I might be doing something wrong but it was a straight forward thing. Create Plugin->Add new Table->Error
Hi,
On a fresh WinterCMS and Builder plugin install, I am unable to create plugin with the builder.
"The replaces must be an array"
Builder v2.0.1
Winter version: Detected a modified version of Winter CMS build 1.1.2
PHP: 8.0.3
Step to reproduce
None of the checkboxes in the database editor (e.g. unsigned, nullable, autoincr, pk) can be unchecked once they are checked. Clicking them does nothing once they are already checked.
If I have the following plugin.yaml file:
# plugin.yaml
plugin:
name: 'acme.blog::lang.plugin.name'
description: 'Plugin Description'
author: 'Author Name'
icon: wn-icon-chain
homepage: 'https://example.com'
replaces:
Acme.Blog: '<3.0.0'
And I edit the plugin details by clicking on the plugin gear icon and save the changes, the replaces definition is removed from the yaml and results in the following:
# plugin.yaml
plugin:
name: 'acme.blog::lang.plugin.name'
description: 'Plugin Description'
author: 'Author Name'
icon: wn-icon-chain
homepage: 'https://example.com'
When a migration is applied or rolled back in the backend, the list of tables in the Database tab is not updated in real time. A manual refresh needs to be performed to view any changes. I suggest automatically refreshing the view any time a migration is applied or rolled back.
When creating fields.yaml
if the field il of type BALLONS
when saving, I get this error (but the yaml is created)
[2022-03-20 15:20:17] development.ERROR: TypeError: Winter\Builder\Behaviors\IndexModelFormOperations::updateJsonable(): Argument #1 ($model) must be of type array, null given, called in /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php on line 78 and defined in /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php:296
Stack trace:
#0 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php(78): Winter\Builder\Behaviors\IndexModelFormOperations->updateJsonable(NULL, Array, Array)
#1 [internal function]: Winter\Builder\Behaviors\IndexModelFormOperations->onModelFormSave()
#2 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Extension/ExtendableTrait.php(432): call_user_func_array(Array, Array)
#3 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(184): Backend\Classes\Controller->extendableCall('onModelFormSave', Array)
#4 [internal function]: Backend\Classes\Controller->__call('onModelFormSave', Array)
#5 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(629): call_user_func_array(Array, Array)
#6 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(479): Backend\Classes\Controller->runAjaxHandler('onModelFormSave')
#7 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(277): Backend\Classes\Controller->execAjaxHandlers()
#8 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(171): Backend\Classes\Controller->run('index', Array)
#9 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run('winter/builder')
#10 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(119): Illuminate\Routing\Controller->callAction('run', Array)
#11 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Backend\Classes\BackendController->callAction('run', Array)
#12 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Backend\Classes\BackendController), 'run')
#13 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\Routing\Route->runController()
#14 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\Routing\Route->run()
#15 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#16 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(162): Backend\Classes\BackendController->Backend\Classes\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#18 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#20 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#24 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(727): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#31 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(702): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#32 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(666): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#33 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#34 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Winter\Storm\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#35 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#36 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#39 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#44 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#45 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#46 /Users/francesco/Dev/sites/wn-conference/index.php(43): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#47 /Users/francesco/.composer/vendor/laravel/valet/server.php(234): require('/Users/francesc...')
#48 {main}
Steps to reproduce:
Cause of this is that when clearing Order value in step 3 then in plugin.yaml
file it's stored as order: ''
which then throws exception because of https://github.com/wintercms/winter/blob/develop/modules/backend/classes/NavigationManager.php#L121 - because there is no type conversation to int value.
Possible solutions:
order: ''
back into plugin.yaml
when parameter value is empty...return (int) $a->order - (int) $b->order;
.Winter 1.2.1, Builder 2.0.6, MySQL 5.7.27, PHP 8.2
I have created a boolean column. Added records using this column. Then he deleted the boolean column, but at the same time the table in which there was a boolean column was deleted.
What else can I do to confirm the mistake and help others fix it?
Migration generated without Blueprint type of $table
and commented migration code block - why?
Better - place migration code block without comments and with true typing
Replace:
<?php namespace {namespace};
use Schema;
use Winter\Storm\Database\Updates\Migration;
class {className} extends Migration
{
public function up()
{
// Schema::create('{tableNamePrefix}_table', function($table)
// {
// });
}
public function down()
{
// Schema::drop('{tableNamePrefix}_table');
}
}
To:
<?php namespace {namespace};
use Schema;
use Winter\Storm\Database\Schema\Blueprint;
use Winter\Storm\Database\Updates\Migration;
class {className} extends Migration
{
public function up()
{
Schema::table('{tableNamePrefix}_table', function (Blueprint $table) {
});
}
public function down()
{
Schema::table('{tableNamePrefix}_table', function (Blueprint $table) {
});
}
}
Hello,
I have installed the module on wintercms version 1.2.1 and php 8.1.17.
I removed cms module from "loadModules" and i set 'backendUri' => '' in config/cms.php,.
When I click on the "builder" menu, I have this error
"We searched and searched but the requested URL just couldn't be found. Perhaps you were looking for something else?
http://127.0.0.1:8000/winter/builder"
Thanks
When running composer require winter/wn-builder-plugin
composer download the v1.0.27 tag that has the old brand.
In the backend
try to add fields.yaml and I get this error
Step to reproduce
the fields.yaml is correctly created with this content
fields:
title:
label: Title
span: auto
type: text
slug:
label: Slug
span: auto
type: text
slogan:
label: Slogan
span: auto
type: textarea
teaser:
label: Teaser
span: auto
type: textarea
socialtags:
label: Socialtags
span: auto
type: textarea
dates:
label: Dates
span: auto
type: textarea
Stack trace
[2022-03-16 18:59:38] development.ERROR: TypeError: Winter\Builder\Behaviors\IndexModelFormOperations::updateJsonable(): Argument #1 ($model) must be of type array, null given, called in /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php on line 78 and defined in /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php:296
Stack trace:
#0 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php(78): Winter\Builder\Behaviors\IndexModelFormOperations->updateJsonable(NULL, Array, Array)
#1 [internal function]: Winter\Builder\Behaviors\IndexModelFormOperations->onModelFormSave()
#2 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Extension/ExtendableTrait.php(432): call_user_func_array(Array, Array)
#3 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(184): Backend\Classes\Controller->extendableCall('onModelFormSave', Array)
#4 [internal function]: Backend\Classes\Controller->__call('onModelFormSave', Array)
#5 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(629): call_user_func_array(Array, Array)
#6 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(479): Backend\Classes\Controller->runAjaxHandler('onModelFormSave')
#7 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(277): Backend\Classes\Controller->execAjaxHandlers()
#8 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(171): Backend\Classes\Controller->run('index', Array)
#9 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run('winter/builder')
#10 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(119): Illuminate\Routing\Controller->callAction('run', Array)
#11 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Backend\Classes\BackendController->callAction('run', Array)
#12 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Backend\Classes\BackendController), 'run')
#13 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\Routing\Route->runController()
#14 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\Routing\Route->run()
#15 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#16 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(162): Backend\Classes\BackendController->Backend\Classes\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#18 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#20 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#24 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(727): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#31 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(702): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#32 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(666): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#33 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#34 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Winter\Storm\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#35 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#36 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#39 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#44 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#45 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#46 /Users/francesco/Dev/sites/wn-conference/index.php(43): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#47 /Users/francesco/.composer/vendor/laravel/valet/server.php(234): require('/Users/francesc...')
#48 {main}
```
Hi, locale ru ~dev-main
Winter\Builder\Behaviors\IndexModelFormOperations:221
$fieldTypes = array_merge(array_keys($controls['Standard']), array_keys($controls['Widgets']));
Standard and Widgets keys apparently taken from lang file
I'm not sure but this might work
$standardKey = \Illuminate\Support\Facades\Lang::get('winter.builder::lang.form.control_group_standard');
$widgetKey = \Illuminate\Support\Facades\Lang::get('winter.builder::lang.form.control_group_widgets');
$fieldTypes = array_merge(array_keys($controls[$standardKey]), array_keys($controls[$widgetKey]));
After save form from builder. This error.
"Winter\Builder\Behaviors\IndexModelFormOperations::updateJsonable(): Argument #1 ($model) must be of type array, null given, called in /application/plugins/winter/builder/behaviors/IndexModelFormOperations.php on line 78" on line 296 of /application/plugins/winter/builder/behaviors/IndexModelFormOperations.php
IndexModelFormOperations::updateJsonable
first param only array
getJsonable from Winter\Builder\Classes\ModelModel return null from ModelFileParser
When you create plugin permissions, if the list is very long, it doesn't scroll and therefore you can't see them. If I add them by hand in the plugin.yaml they work but I can't see them.
Hi,
Winter version 1.2.1
Laravel Framework 9.39.0 - Winter CMS
PHP 8.0.
After I try to save form I get:
TypeError: Winter\Builder\Behaviors\IndexModelFormOperations::updateJsonable(): Argument #1 ($model) must be of type array, null given, called in /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/plugins/winter/builder/behaviors/IndexModelFormOperations.php on line 78 and defined in /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/plugins/winter/builder/behaviors/IndexModelFormOperations.php:296
Full stack trace
TypeError: Winter\Builder\Behaviors\IndexModelFormOperations::updateJsonable(): Argument #1 ($model) must be of type array, null given, called in /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/plugins/winter/builder/behaviors/IndexModelFormOperations.php on line 78 and defined in /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/plugins/winter/builder/behaviors/IndexModelFormOperations.php:296
Stack trace:
#0 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/plugins/winter/builder/behaviors/IndexModelFormOperations.php(78): Winter\Builder\Behaviors\IndexModelFormOperations->updateJsonable(NULL, Array, Array)
#1 [internal function]: Winter\Builder\Behaviors\IndexModelFormOperations->onModelFormSave()
#2 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/winter/storm/src/Extension/ExtendableTrait.php(439): call_user_func_array(Array, Array)
#3 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/Controller.php(184): Backend\Classes\Controller->extendableCall('onModelFormSave', Array)
#4 [internal function]: Backend\Classes\Controller->__call('onModelFormSave', Array)
#5 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/Controller.php(629): call_user_func_array(Array, Array)
#6 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/Controller.php(479): Backend\Classes\Controller->runAjaxHandler('onModelFormSave')
#7 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/Controller.php(277): Backend\Classes\Controller->execAjaxHandlers()
#8 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/BackendController.php(171): Backend\Classes\Controller->run('index', Array)
#9 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run('winter/builder')
#10 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/BackendController.php(119): Illuminate\Routing\Controller->callAction('run', Array)
#11 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Backend\Classes\BackendController->callAction('run', Array)
#12 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Backend\Classes\BackendController), 'run')
#13 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#14 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Router.php(727): Illuminate\Routing\Route->run()
#15 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#16 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/modules/backend/classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(162): Backend\Classes\BackendController->Backend\Classes\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#18 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#20 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#24 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Router.php(728): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#31 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Router.php(705): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#32 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Routing/Router.php(669): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#33 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#34 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Winter\Storm\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#35 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#36 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#37 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#39 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#44 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#45 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#46 /usr/home/Eternia/domains/eternia.usermd.net/public_html/wprzyczepy/index.php(43): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#47 {main}
This is the following message I receive when trying to save a version which contains a migration file.
Migration code should define a migration or seeder class. Leave the code field blank if you only want to update the version number.
Here is my migration file:
<?php namespace Radmin\Test\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class BuilderTableCreateRadminTestSamples extends Migration
{
public function up()
{
Schema::create('radmin_test_samples', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->string('name')->nullable();
$table->timestamp('created_at')->nullable();
$table->timestamp('updated_at')->nullable();
$table->timestamp('deleted_at')->nullable();
});
}
public function down()
{
Schema::dropIfExists('radmin_test_samples');
}
}
This migration was generated from the database screen
No matter what contents I enter, it is always considered empty and does not allow me to save.
In a new project with no plugin installed, when I install the plugin I get a message:
Some issues have been detected and require attention:
The Winter.Builder plugin replaces RainLab.Builder, please remove RainLab.Builder to ensure there are no conflicts
but the RainLab.Builder plugin is not installed
See for orinal issue rainlab/builder-plugin#257
See if this can be implemented automatically in schemabuilder or somewhere else.
Aparently this solves it.
Db::getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('txid_snapshot', 'text');
I'll pick this up if nobody else does, and otherwise this adds an existing issue that can be referenced.
Step to reproduce
Go to permission tabs
Add permission like
conference.event.create | base33.conference::lang.conference.events.event | base33.conference::lang.conference.events.event_create
before save, translations are added in the lang.php file
<?php return [
'plugin' => [
'name' => 'Conference',
'description' => 'Events management plugin',
],
'conference' => [
'events' => [
'event' => 'Event',
'event_create' => 'Create',
],
],
];
and is impossible to save permission
When creating fields.yaml
if the field il of type DROPDOWN
when saving, I get this error
stack trace
[2022-03-20 15:11:57] development.ERROR: ErrorException: Undefined array key "multiple" in /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/classes/ModelFormModel.php:103
Stack trace:
#0 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(231): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Undefined array...', '/Users/francesc...', 103)
#1 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/classes/ModelFormModel.php(103): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}(2, 'Undefined array...', '/Users/francesc...', 103)
#2 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/classes/ModelFormModel.php(57): Winter\Builder\Classes\ModelFormModel->scanJsonableFields(Array, Array)
#3 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/behaviors/IndexModelFormOperations.php(71): Winter\Builder\Classes\ModelFormModel->getJsonableFields()
#4 [internal function]: Winter\Builder\Behaviors\IndexModelFormOperations->onModelFormSave()
#5 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Extension/ExtendableTrait.php(432): call_user_func_array(Array, Array)
#6 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(184): Backend\Classes\Controller->extendableCall('onModelFormSave', Array)
#7 [internal function]: Backend\Classes\Controller->__call('onModelFormSave', Array)
#8 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(629): call_user_func_array(Array, Array)
#9 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(479): Backend\Classes\Controller->runAjaxHandler('onModelFormSave')
#10 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(277): Backend\Classes\Controller->execAjaxHandlers()
#11 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(171): Backend\Classes\Controller->run('index', Array)
#12 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run('winter/builder')
#13 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(119): Illuminate\Routing\Controller->callAction('run', Array)
#14 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Backend\Classes\BackendController->callAction('run', Array)
#15 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Backend\Classes\BackendController), 'run')
#16 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\Routing\Route->runController()
#17 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\Routing\Route->run()
#18 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#19 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#20 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(162): Backend\Classes\BackendController->Backend\Classes\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#21 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#22 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#23 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#27 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#29 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#33 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(727): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#34 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(702): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#35 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(666): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#36 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#37 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Winter\Storm\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#38 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#39 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#41 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#43 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#45 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#48 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#49 /Users/francesco/Dev/sites/wn-conference/index.php(43): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#50 /Users/francesco/.composer/vendor/laravel/valet/server.php(234): require('/Users/francesc...')
#51 {main}
```
Would be nice to add a checkbox to indicate that a given column should have a unique index added to it when building the table schema
Please add Infinite scroll option for "Builder records list" component. Pagination is good but Infinite scroll is more user friendly and will increase the time user spend on webpage.
1.2
8.1
PostgreSQL
Builder
I changed the column (e.g. drop) AND change name of table and tried to apply this upgrade to other system.
But i have some view which forbid to apply patch - but the name of table was changed. This shouldn't work like this. All or nothing. If it break - it should be still old name of table.
Changed the column (e.g. drop) AND change name of table and tried to apply this upgrade to other system.
I have to change manually name of table and apply patch again
I get this error when using the search table in the database view
now is it impossible to exit from this error
[2022-04-09 21:46:28] development.ERROR: TypeError: mb_strtolower(): Argument #1 ($string) must be of type string, array given in /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Support/Str.php:443
Stack trace:
#0 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Support/Str.php(443): mb_strtolower(Array, 'UTF-8')
#1 /Users/francesco/Dev/sites/wn-conference/modules/backend/Traits/SearchableWidget.php(36): Illuminate\Support\Str::lower(Array)
#2 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/widgets/DatabaseTableList.php(93): Winter\Builder\Widgets\DatabaseTableList->textMatchesSearch(Array, Array)
#3 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/widgets/DatabaseTableList.php(117): Winter\Builder\Widgets\DatabaseTableList->getData(Object(Winter\Builder\Classes\PluginVector))
#4 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/widgets/DatabaseTableList.php(39): Winter\Builder\Widgets\DatabaseTableList->getRenderData()
#5 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/controllers/index/_sidepanel.htm(11): Winter\Builder\Widgets\DatabaseTableList->render()
#6 /Users/francesco/Dev/sites/wn-conference/modules/system/Traits/ViewMaker.php(246): include('/Users/francesc...')
#7 /Users/francesco/Dev/sites/wn-conference/modules/system/Traits/ViewMaker.php(96): Backend\Classes\Controller->makeFileContents('/Users/francesc...', Array)
#8 /Users/francesco/Dev/sites/wn-conference/plugins/winter/builder/controllers/index/index.htm(5): Backend\Classes\Controller->makePartial('_sidepanel.htm')
#9 /Users/francesco/Dev/sites/wn-conference/modules/system/Traits/ViewMaker.php(246): include('/Users/francesc...')
#10 /Users/francesco/Dev/sites/wn-conference/modules/system/Traits/ViewMaker.php(108): Backend\Classes\Controller->makeFileContents('/Users/francesc...')
#11 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(420): Backend\Classes\Controller->makeView('index')
#12 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/Controller.php(297): Backend\Classes\Controller->execPageAction('index', Array)
#13 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(171): Backend\Classes\Controller->run('index', Array)
#14 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run('winter/builder')
#15 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(119): Illuminate\Routing\Controller->callAction('run', Array)
#16 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Backend\Classes\BackendController->callAction('run', Array)
#17 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Backend\Classes\BackendController), 'run')
#18 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\Routing\Route->runController()
#19 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\Routing\Route->run()
#20 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#21 /Users/francesco/Dev/sites/wn-conference/modules/backend/Classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#22 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(162): Backend\Classes\BackendController->Backend\Classes\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#23 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#27 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#28 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#29 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#33 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#35 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(727): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#36 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(702): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#37 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Routing/Router.php(666): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#38 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#39 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Winter\Storm\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#40 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#41 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#42 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#45 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 /Users/francesco/Dev/sites/wn-conference/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#50 /Users/francesco/Dev/sites/wn-conference/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#51 /Users/francesco/Dev/sites/wn-conference/index.php(43): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#52 /Users/francesco/.composer/vendor/laravel/valet/server.php(234): require('/Users/francesc...')
#53 {main}
File updates/version.yaml
needs to contain entry for 2.0.2 version so current version of plugin is not determined as 2.0.1 (in back-end plugin section etc.).
I'm using version v2.0.5 on WinterCMS 1.2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.