| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2019-10-02 06:38:00 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * twigbridge.php | 
					
						
							|  |  |  |  * Copyright (c) 2019 thegrumpydictator@gmail.com | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-17 12:09:03 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							| 
									
										
										
										
											2016-05-20 08:57:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  | use TwigBridge\Extension\Laravel\Auth; | 
					
						
							|  |  |  | use TwigBridge\Extension\Laravel\Config; | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  | use TwigBridge\Extension\Laravel\Dump; | 
					
						
							|  |  |  | use TwigBridge\Extension\Laravel\Input; | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  | use TwigBridge\Extension\Laravel\Session; | 
					
						
							|  |  |  | use TwigBridge\Extension\Laravel\Str; | 
					
						
							|  |  |  | use TwigBridge\Extension\Laravel\Translator; | 
					
						
							|  |  |  | use TwigBridge\Extension\Laravel\Url; | 
					
						
							|  |  |  | use TwigBridge\Extension\Loader\Facades; | 
					
						
							| 
									
										
										
										
											2018-05-11 10:08:34 +02:00
										 |  |  | use TwigBridge\Extension\Loader\Filters; | 
					
						
							|  |  |  | use TwigBridge\Extension\Loader\Functions; | 
					
						
							|  |  |  | use TwigBridge\Twig\Template; | 
					
						
							| 
									
										
										
										
											2017-08-18 21:08:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * This file is part of the TwigBridge package. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @copyright Robert Crowe <hello@vivalacrowe.com> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * For the full copyright and license information, please view the LICENSE | 
					
						
							|  |  |  |  * file that was distributed with this source code. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Configuration options for Twig. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | return [ | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-26 08:21:31 +02:00
										 |  |  |     'twig' => [ | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Extension | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | File extension for Twig view files. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'extension'   => 'twig', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Accepts all Twig environment configuration options | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | http://twig.sensiolabs.org/doc/api.html#environment-options
 | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'environment' => [ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // When set to true, the generated templates have a __toString() method
 | 
					
						
							|  |  |  |             // that you can use to display the generated nodes.
 | 
					
						
							|  |  |  |             // default: false
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |             'debug'               => env('APP_DEBUG', false), | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // The charset used by the templates.
 | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  |             // default: utf-8
 | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             'charset'             => 'utf-8', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // The base template class to use for generated templates.
 | 
					
						
							|  |  |  |             // default: TwigBridge\Twig\Template
 | 
					
						
							| 
									
										
										
										
											2018-04-02 14:43:06 +02:00
										 |  |  |             'base_template_class' => Template::class, | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // An absolute path where to store the compiled templates, or false to disable caching. If null
 | 
					
						
							|  |  |  |             // then the cache file path is used.
 | 
					
						
							|  |  |  |             // default: cache file storage path
 | 
					
						
							|  |  |  |             'cache'               => null, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // When developing with Twig, it's useful to recompile the template
 | 
					
						
							|  |  |  |             // whenever the source code changes. If you don't provide a value
 | 
					
						
							|  |  |  |             // for the auto_reload option, it will be determined automatically based on the debug value.
 | 
					
						
							|  |  |  |             'auto_reload'         => true, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // If set to false, Twig will silently ignore invalid variables
 | 
					
						
							|  |  |  |             // (variables and or attributes/methods that do not exist) and
 | 
					
						
							|  |  |  |             // replace them with a null value. When set to true, Twig throws an exception instead.
 | 
					
						
							|  |  |  |             // default: false
 | 
					
						
							|  |  |  |             'strict_variables'    => false, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // If set to true, auto-escaping will be enabled by default for all templates.
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |             // default: 'html'
 | 
					
						
							|  |  |  |             'autoescape'          => 'html', | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // A flag that indicates which optimizations to apply
 | 
					
						
							|  |  |  |             // (default to -1 -- all optimizations are enabled; set it to 0 to disable)
 | 
					
						
							|  |  |  |             'optimizations'       => -1, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Global variables | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | These will always be passed in and can be accessed as Twig variables. | 
					
						
							|  |  |  |         | NOTE: these will be overwritten if you pass data into the view with the same key. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'globals'     => [], | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'extensions' => [ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Extensions | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Enabled extensions. | 
					
						
							|  |  |  |         | | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  |         | `Twig\Extension\DebugExtension` is enabled automatically if twig.debug is TRUE. | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'enabled'   => [ | 
					
						
							| 
									
										
										
										
											2018-04-02 14:43:06 +02:00
										 |  |  |             Facades::class, | 
					
						
							|  |  |  |             Filters::class, | 
					
						
							|  |  |  |             Functions::class, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             Auth::class, | 
					
						
							|  |  |  |             Config::class, | 
					
						
							|  |  |  |             Dump::class, | 
					
						
							|  |  |  |             Input::class, | 
					
						
							|  |  |  |             Session::class, | 
					
						
							|  |  |  |             Str::class, | 
					
						
							|  |  |  |             Translator::class, | 
					
						
							|  |  |  |             Url::class, | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |             // 'TwigBridge\Extension\Laravel\Gate',
 | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |             // 'TwigBridge\Extension\Laravel\Form',
 | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             // 'TwigBridge\Extension\Laravel\Html',
 | 
					
						
							|  |  |  |             // 'TwigBridge\Extension\Laravel\Legacy\Facades',
 | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Facades | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Available facades. Access like `{{ Config.get('foo.bar') }}`. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Each facade can take an optional array of options. To mark the whole facade | 
					
						
							|  |  |  |         | as safe you can set the option `'is_safe' => true`. Setting the facade as | 
					
						
							|  |  |  |         | safe means that any HTML returned will not be escaped. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | It is advisable to not set the whole facade as safe and instead mark the | 
					
						
							|  |  |  |         | each appropriate method as safe for security reasons. You can do that with | 
					
						
							|  |  |  |         | the following syntax: | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | <code> | 
					
						
							|  |  |  |         |     'Form' => [ | 
					
						
							|  |  |  |         |         'is_safe' => [ | 
					
						
							|  |  |  |         |             'open' | 
					
						
							|  |  |  |         |         ] | 
					
						
							|  |  |  |         |     ] | 
					
						
							|  |  |  |         | </code> | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | The values of the `is_safe` array must match the called method on the facade | 
					
						
							|  |  |  |         | in order to be marked as safe. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'facades'   => [ | 
					
						
							| 
									
										
										
										
											2019-08-10 16:50:37 +02:00
										 |  |  |             'Breadcrumbs'   => [ | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |                 'is_safe' => [ | 
					
						
							| 
									
										
										
										
											2017-12-23 20:46:52 +01:00
										 |  |  |                     'render', | 
					
						
							| 
									
										
										
										
											2016-08-26 08:21:31 +02:00
										 |  |  |                 ], | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  |             'Session', | 
					
						
							|  |  |  |             'Route', | 
					
						
							|  |  |  |             'Auth', | 
					
						
							|  |  |  |             'Lang', | 
					
						
							| 
									
										
										
										
											2016-08-03 20:57:01 +02:00
										 |  |  |             'Preferences', | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             'URL', | 
					
						
							| 
									
										
										
										
											2017-08-30 07:40:39 +02:00
										 |  |  |             'Steam', | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             'Config', | 
					
						
							| 
									
										
										
										
											2017-07-15 22:17:24 +02:00
										 |  |  |             'Request', | 
					
						
							| 
									
										
										
										
											2019-08-10 16:50:37 +02:00
										 |  |  |             'Form'          => ['is_safe' => ['input', 'select', 'checkbox', 'model', 'open', 'radio', 'textarea', 'file',],], | 
					
						
							|  |  |  |             'ExpandedForm'  => [ | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  |                 'is_safe' => [ | 
					
						
							|  |  |  |                     'date', 'text', 'select', 'balance', 'optionsList', 'checkbox', 'amount', 'tags', 'integer', 'textarea', 'location', 'file', 'staticText', | 
					
						
							| 
									
										
										
										
											2019-08-10 16:50:37 +02:00
										 |  |  |                     'password', 'nonSelectableAmount', 'number', 'amountNoCurrency', 'percentage', | 
					
						
							| 
									
										
										
										
											2019-06-29 19:47:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  |                 ], | 
					
						
							|  |  |  |             ], | 
					
						
							| 
									
										
										
										
											2019-08-10 16:50:37 +02:00
										 |  |  |             'AccountForm'   => [ | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  |                 'is_safe' => [ | 
					
						
							| 
									
										
										
										
											2019-08-10 16:36:15 +02:00
										 |  |  |                     'activeAssetAccountList', 'activeLongAccountList', 'activeWithdrawalDestinations', 'activeDepositDestinations', | 
					
						
							|  |  |  |                     'assetAccountCheckList', 'assetAccountList', 'longAccountList', | 
					
						
							| 
									
										
										
										
											2019-08-10 15:09:44 +02:00
										 |  |  |                 ], | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2019-08-10 16:50:37 +02:00
										 |  |  |             'CurrencyForm'  => [ | 
					
						
							|  |  |  |                 'is_safe' => [ | 
					
						
							|  |  |  |                     'currencyList', 'currencyListEmpty', 'balanceAll', | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |             'PiggyBankForm' => | 
					
						
							|  |  |  |                 [ | 
					
						
							|  |  |  |                     'is_safe' => [ | 
					
						
							|  |  |  |                         'piggyBankList', | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |             'RuleForm'      => [ | 
					
						
							|  |  |  |                 'is_safe' => [ | 
					
						
							|  |  |  |                     'ruleGroupList', 'ruleGroupListWithEmpty', | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |             ], | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Functions | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Available functions. Access like `{{ secure_url(...) }}`. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Each function can take an optional array of options. These options are | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  |         | passed directly to `Twig\TwigFunction`. | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         | | 
					
						
							|  |  |  |         | So for example, to mark a function as safe you can do the following: | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | <code> | 
					
						
							|  |  |  |         |     'link_to' => [ | 
					
						
							|  |  |  |         |         'is_safe' => ['html'] | 
					
						
							|  |  |  |         |     ] | 
					
						
							|  |  |  |         | </code> | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | The options array also takes a `callback` that allows you to name the | 
					
						
							|  |  |  |         | function differently in your Twig templates than what it's actually called. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | <code> | 
					
						
							|  |  |  |         |     'link' => [ | 
					
						
							|  |  |  |         |         'callback' => 'link_to' | 
					
						
							|  |  |  |         |     ] | 
					
						
							|  |  |  |         | </code> | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         'functions' => [ | 
					
						
							|  |  |  |             'elixir', | 
					
						
							|  |  |  |             'head', | 
					
						
							|  |  |  |             'last', | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  |             'mix', | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /* | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | Filters | 
					
						
							|  |  |  |         |-------------------------------------------------------------------------- | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Available filters. Access like `{{ variable|filter }}`. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | Each filter can take an optional array of options. These options are | 
					
						
							| 
									
										
										
										
											2019-03-02 20:14:45 +01:00
										 |  |  |         | passed directly to `Twig\TwigFilter`. | 
					
						
							| 
									
										
										
										
											2015-05-25 07:03:26 +02:00
										 |  |  |         | | 
					
						
							|  |  |  |         | So for example, to mark a filter as safe you can do the following: | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | <code> | 
					
						
							|  |  |  |         |     'studly_case' => [ | 
					
						
							|  |  |  |         |         'is_safe' => ['html'] | 
					
						
							|  |  |  |         |     ] | 
					
						
							|  |  |  |         | </code> | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | The options array also takes a `callback` that allows you to name the | 
					
						
							|  |  |  |         | filter differently in your Twig templates than what is actually called. | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         | <code> | 
					
						
							|  |  |  |         |     'snake' => [ | 
					
						
							|  |  |  |         |         'callback' => 'snake_case' | 
					
						
							|  |  |  |         |     ] | 
					
						
							|  |  |  |         | </code> | 
					
						
							|  |  |  |         | | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |         'filters'   => [ | 
					
						
							|  |  |  |             'get' => 'data_get', | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2016-08-26 08:21:31 +02:00
										 |  |  |     ], | 
					
						
							| 
									
										
										
										
											2015-05-25 22:04:24 +02:00
										 |  |  | ]; |