2016-12-27 14:58:01 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Wikia\PortableInfobox\Helpers;
|
|
|
|
|
2018-07-24 13:56:43 +00:00
|
|
|
use MediaWiki\Logger\LoggerFactory;
|
2016-12-27 14:58:01 +00:00
|
|
|
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',
|
|
|
|
'data' => 'PortableInfoboxItemData.mustache',
|
|
|
|
'group' => 'PortableInfoboxItemGroup.mustache',
|
2017-01-12 11:40:56 +00:00
|
|
|
'smart-group' => 'PortableInfoboxItemSmartGroup.mustache',
|
2016-12-27 14:58:01 +00:00
|
|
|
'horizontal-group-content' => 'PortableInfoboxHorizontalGroupContent.mustache',
|
|
|
|
'navigation' => 'PortableInfoboxItemNavigation.mustache',
|
2018-08-01 16:06:09 +00:00
|
|
|
'image-collection' => 'PortableInfoboxItemImageCollection.mustache'
|
2016-12-27 14:58:01 +00:00
|
|
|
];
|
|
|
|
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 ) {
|
2018-07-24 13:56:43 +00:00
|
|
|
LoggerFactory::getInstance( 'PortableInfobox' )->info( self::TYPE_NOT_SUPPORTED_MESSAGE, [ 'type' => $type ] );
|
2016-12-27 14:58:01 +00:00
|
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
}
|