mirror of
https://github.com/Universal-Omega/PortableInfobox.git
synced 2024-12-03 20:37:13 +00:00
64 lines
2.1 KiB
PHP
64 lines
2.1 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Wikia\PortableInfobox\Helpers;
|
||
|
|
||
|
use Wikia\Logger\WikiaLogger;
|
||
|
use Wikia\Template\MustacheEngine;
|
||
|
|
||
|
class PortableInfoboxMustacheEngine {
|
||
|
const TYPE_NOT_SUPPORTED_MESSAGE = 'portable-infobox-render-not-supported-type';
|
||
|
|
||
|
protected static $templates = [
|
||
|
'wrapper' => 'PortableInfoboxWrapper.mustache',
|
||
|
'title' => 'PortableInfoboxItemTitle.mustache',
|
||
|
'header' => 'PortableInfoboxItemHeader.mustache',
|
||
|
'image' => 'PortableInfoboxItemImage.mustache',
|
||
|
'image-mobile' => 'PortableInfoboxItemImageMobile.mustache',
|
||
|
'image-mobile-wikiamobile' => 'PortableInfoboxItemImageMobileWikiaMobile.mustache',
|
||
|
'data' => 'PortableInfoboxItemData.mustache',
|
||
|
'group' => 'PortableInfoboxItemGroup.mustache',
|
||
|
'horizontal-group-content' => 'PortableInfoboxHorizontalGroupContent.mustache',
|
||
|
'navigation' => 'PortableInfoboxItemNavigation.mustache',
|
||
|
'hero-mobile' => 'PortableInfoboxItemHeroMobile.mustache',
|
||
|
'hero-mobile-wikiamobile' => 'PortableInfoboxItemHeroMobileWikiaMobile.mustache',
|
||
|
'image-collection' => 'PortableInfoboxItemImageCollection.mustache',
|
||
|
'image-collection-mobile' => 'PortableInfoboxItemImageCollectionMobile.mustache',
|
||
|
'image-collection-mobile-wikiamobile' => 'PortableInfoboxItemImageCollectionMobileWikiaMobile.mustache'
|
||
|
];
|
||
|
protected $templateEngine;
|
||
|
|
||
|
public function __construct() {
|
||
|
$this->templateEngine = ( new MustacheEngine )
|
||
|
->setPrefix( self::getTemplatesDir() );
|
||
|
}
|
||
|
|
||
|
public static function getTemplatesDir() {
|
||
|
return dirname( __FILE__ ) . '/../../templates';
|
||
|
}
|
||
|
|
||
|
public static function getTemplates() {
|
||
|
return self::$templates;
|
||
|
}
|
||
|
|
||
|
public function render( $type, array $data ) {
|
||
|
return $this->templateEngine->clearData()
|
||
|
->setData( $data )
|
||
|
->render( self::getTemplates()[ $type ] );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* check if item type is supported and logs unsupported types
|
||
|
*
|
||
|
* @param string $type - template type
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public static function isSupportedType( $type ) {
|
||
|
$result = isset( static::$templates[ $type ] );
|
||
|
if ( !$result ) {
|
||
|
WikiaLogger::instance()->info( self::TYPE_NOT_SUPPORTED_MESSAGE, [ 'type' => $type ] );
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
}
|