| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- namespace MailPoet\Twig;
- if (!defined('ABSPATH')) exit;
- use MailPoetVendor\Twig\Extension\AbstractExtension;
- use MailPoetVendor\Twig\TwigFunction;
- class Handlebars extends AbstractExtension {
- public function getFunctions() {
- return [
- new TwigFunction(
- 'partial',
- [
- $this,
- 'generatePartial',
- ],
- [
- 'needs_environment' => true,
- 'needs_context' => true,
- 'is_safe' => ['all'],
- ]
- ),
- ];
- }
- public function generatePartial($env, $context) {
- // get arguments (minus env & $context)
- $args = array_slice(func_get_args(), 2);
- $argsCount = count($args);
- // default values
- $alias = null;
- switch ($argsCount) {
- case 2:
- list($id, $file) = $args;
- break;
- case 3:
- list($id, $file, $alias) = $args;
- break;
- default:
- return;
- }
- $renderedTemplate = \MailPoetVendor\twig_include($env, $context, $file);
- $output = <<<EOL
- <script id="$id" type="text/x-handlebars-template">
- $renderedTemplate
- </script>
- EOL;
- if ($alias !== null) {
- $output .= <<<EOL
- <script type="text/javascript">
- jQuery(function($) {
- $(function() {
- Handlebars.registerPartial(
- '$alias',
- jQuery('#$id').html()
- );
- });
- });
- </script>
- EOL;
- }
- return $output;
- }
- }
|