Source of file Webfonts.php
Size: 3,897 Bytes - Last Modified: 2021-12-24T06:50:13+00:00
/var/www/docs.ssmods.com/process/src/src/view/Webfonts.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | <?php namespace gorriecoe\Webfonts\View; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Convert; use SilverStripe\View\TemplateGlobalProvider; use SilverStripe\View\ArrayData; use SilverStripe\View\Requirements; /** * Provide $TypeKit global template variable for inserting TypeKit javascript. */ class Webfonts implements TemplateGlobalProvider { private static $WebfontLoaderVersion = '1.6.26'; public static function get_template_global_variables() { return array( 'WebFontLoader' => array( 'method' => 'WebFontLoader', 'casting' => 'HTMLFragment' ), 'TypeKitID' => array( 'method' => 'TypeKitID', 'casting' => 'Text' ), 'TypeKitScript' => 'TypeKitScript', 'TypeKitStyle' => array( 'method' => 'TypeKitStyle', 'casting' => 'HTMLFragment' ), 'FontsComID' => array( 'method' => 'FontsComID', 'casting' => 'Text' ), 'FontsCom' => 'FontsCom', 'GoogleFonts' => 'GoogleFonts' ); } public static function WebFontLoader() { if ($config = SELF::WebFontLoaderConfig()) { Requirements::javascript(SELF::WebFontLoaderLibrary()); Requirements::customScript("WebFont.load({$config});"); } } public static function WebFontLoaderLibrary() { $webfontLoaderVersion = Config::inst()->get(__CLASS__, 'WebfontLoaderVersion') ?: '1'; return "https://ajax.googleapis.com/ajax/libs/webfont/{$webfontLoaderVersion}/webfont.js"; } public static function WebFontLoaderConfig() { extract(Config::inst()->get(__CLASS__)); $config = []; if (isset($TypeKitID) && $TypeKitID) { $config['typekit']['id'] = $TypeKitID; } if (isset($FontsComID) && $FontsComID) { $config['monotype']['projectId'] = $FontsComID; } if (isset($GoogleFonts) && Count($GoogleFonts)) { $config['google']['families'] = $GoogleFonts; } if (isset($CustomFonts) && Count($CustomFonts)) { $config['custom'] = [ 'families' => array_keys($CustomFonts), 'urls' => array_values($CustomFonts) ]; } if (Count($config)) { return Convert::array2json($config); } } public static function TypeKitID() { return Config::inst()->get(__CLASS__, 'TypeKitID'); } public static function TypeKitScript() { if ($typekitID = Config::inst()->get(__CLASS__, 'TypeKitID')) { Requirements::customScript( ArrayData::create([ 'TypeKitID' => $typekitID ])->renderWith([ 'type' => 'Includes', 'TypeKitScript' ]) ); } } public static function TypeKitStyle() { if ($typekitID = Config::inst()->get(__CLASS__, 'TypeKitID')) { Requirements::css("https://use.typekit.net/{$typekitID}.css"); } } public static function FontsComID() { return Config::inst()->get(__CLASS__, 'FontsComID'); } public static function FontsCom() { if ($fontscomID = Config::inst()->get(__CLASS__, 'FontsComID')) { Requirements::script("https://fast.fonts.net/jsapi/{$fontscomID}.js"); } } public static function GoogleFonts() { $googleFonts = Config::inst()->get(__CLASS__, 'GoogleFonts'); if ($googleFonts && Count($googleFonts)) { $googleFonts = implode('|', $googleFonts); Requirements::css("https://fonts.googleapis.com/css?family={$googleFonts}"); } } } |