wintercms / wn-translate-plugin

Translate plugin for Winter CMS
MIT License
13 stars 18 forks source link

Scanning messages from backend return an error if an empty .htm file is present in theme folder #28

Closed ArchimedeSolutions closed 2 years ago

ArchimedeSolutions commented 2 years ago

Plugin version 2.1.0

If any of layouts, pages or partials are an empty file, scan for new messages function return this error:

"Argument 1 passed to Twig\Source::__construct() must be of the type string, null given, called in /var/www/plugins/winter/translate/classes/ThemeScanner.php on line 170" on line 30 of /var/www/vendor/twig/twig/src/Source.php

And this is the full stack trace:

[2022-04-02 12:04:24] development.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Argument 1 passed to Twig\Source::__construct() must be of the type string, null given, called in /var/www/plugins/winter/translate/classes/ThemeScanner.php on line 170 in /var/www/vendor/twig/twig/src/Source.php:30
Stack trace:
#0 /var/www/plugins/winter/translate/classes/ThemeScanner.php(170): Twig\Source->__construct()
#1 /var/www/plugins/winter/translate/classes/ThemeScanner.php(195): Winter\Translate\Classes\ThemeScanner->findTwigTokensInString()
#2 /var/www/plugins/winter/translate/classes/ThemeScanner.php(141): Winter\Translate\Classes\ThemeScanner->processStandardTags()
#3 /var/www/plugins/winter/translate/classes/ThemeScanner.php(103): Winter\Translate\Classes\ThemeScanner->parseContent()
#4 /var/www/plugins/winter/translate/classes/ThemeScanner.php(55): Winter\Translate\Classes\ThemeScanner->scanThemeTemplatesForMessages()
#5 /var/www/plugins/winter/translate/classes/ThemeScanner.php(28): Winter\Translate\Classes\ThemeScanner->scanForMessages()
#6 /var/www/plugins/winter/translate/controllers/Messages.php(76): Winter\Translate\Classes\ThemeScanner::scan()
#7 [internal function]: Winter\Translate\Controllers\Messages->onScanMessages()
#8 /var/www/modules/backend/classes/Controller.php(629): call_user_func_array()
#9 /var/www/modules/backend/classes/Controller.php(479): Backend\Classes\Controller->runAjaxHandler()
#10 /var/www/modules/backend/classes/Controller.php(277): Backend\Classes\Controller->execAjaxHandlers()
#11 /var/www/modules/backend/classes/BackendController.php(171): Backend\Classes\Controller->run()
#12 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Backend\Classes\BackendController->run()
#13 /var/www/modules/backend/classes/BackendController.php(119): Illuminate\Routing\Controller->callAction()
#14 /var/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Backend\Classes\BackendController->callAction()
#15 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\Routing\ControllerDispatcher->dispatch()
#16 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\Routing\Route->runController()
#17 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\Routing\Route->run()
#18 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#19 /var/www/modules/backend/classes/BackendController.php(68): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#20 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(153): Backend\Classes\BackendController->Backend\Classes\{closure}()
#21 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#23 /var/www/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#24 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#25 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#26 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Session\Middleware\StartSession->handle()
#27 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#28 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#29 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#30 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#31 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#32 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(683): Illuminate\Pipeline\Pipeline->then()
#33 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Router->runRouteWithinStack()
#34 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(624): Illuminate\Routing\Router->runRoute()
#35 /var/www/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute()
#36 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): Winter\Storm\Router\CoreRouter->dispatch()
#37 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#38 /var/www/plugins/winter/debugbar/middleware/InjectDebugbar.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#39 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Winter\Debugbar\Middleware\InjectDebugbar->handle()
#40 /var/www/plugins/winter/debugbar/middleware/InterpretsAjaxExceptions.php(45): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#41 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Winter\Debugbar\Middleware\InterpretsAjaxExceptions->handle()
#42 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#43 /var/www/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle()
#44 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle()
#45 /var/www/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#46 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle()
#47 /var/www/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#48 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Winter\Storm\Http\Middleware\TrustHosts->handle()
#49 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#50 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Pipeline\Pipeline->then()
#51 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#52 /var/www/index.php(43): Illuminate\Foundation\Http\Kernel->handle()
#53 {main}

To test create an empty .htm file in theme folder and repeat scan from backend.

mjauvin commented 2 years ago

Fixed in https://github.com/wintercms/wn-translate-plugin/commit/9b83ba266b0c2c71b648d5385aa688f4328a21f2

mjauvin commented 2 years ago

Thanks @ArchimedeSolutions !

ArchimedeSolutions commented 2 years ago

@mjauvin thanks to you!