mirror of
https://github.com/gtbu/Typesetter-5.3-p8.git
synced 2024-11-22 22:29:13 +01:00
136 lines
4.1 KiB
PHP
136 lines
4.1 KiB
PHP
|
<?php
|
||
|
|
||
|
defined('is_running') or die('Not an entry point...');
|
||
|
|
||
|
class AvailableClassesExample{
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* New Typesetter filter hook (as of ver 5.1.1-b1)
|
||
|
*
|
||
|
* can be used in plugins and themes as well
|
||
|
* to replace or extend the list managed via Settings -> Configuration -> Classes
|
||
|
*
|
||
|
*/
|
||
|
static function AvailableClasses($classes){
|
||
|
|
||
|
// ONLY FOR USE IN A THEME
|
||
|
// exits if the page does not use this theme
|
||
|
/*
|
||
|
if( self::IsCurrentTheme == false ){
|
||
|
return $classes;
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
// REPLACE ALL
|
||
|
// not recommended because it renders the Available Classes system settings useless
|
||
|
/*
|
||
|
$classes = array(
|
||
|
array(
|
||
|
'names' => 'plugin-example-toggle',
|
||
|
'desc' => 'A single CSS class entry defined via plugin filter hook',
|
||
|
),
|
||
|
array(
|
||
|
'names' => 'plugin-example-option-1 example-option-3 example-option-3',
|
||
|
'desc' => 'A list of selectable classes entry defined via plugin filter hook',
|
||
|
)
|
||
|
);
|
||
|
*/
|
||
|
|
||
|
// APPEND SINGLE ENTRY
|
||
|
// will add one definition at the end of the defined list
|
||
|
/*
|
||
|
$classes[] = array(
|
||
|
'names' => 'plugin-example-toggle',
|
||
|
'desc' => 'A single CSS class appended entry to preset classes via plugin filter hook',
|
||
|
);
|
||
|
*/
|
||
|
|
||
|
// APPEND MULTIPLE ENTRIES
|
||
|
// will add multiple definitions at the end of the defined list
|
||
|
/*
|
||
|
$append_these = array(
|
||
|
array(
|
||
|
'names' => 'plugin-example-toggle',
|
||
|
'desc' => 'A single CSS class entry appended via plugin filter hook',
|
||
|
),
|
||
|
array(
|
||
|
'names' => 'plugin-example-option-1 example-option-3 example-option-3',
|
||
|
'desc' => 'A list of selectable classes appended via plugin filter hook',
|
||
|
)
|
||
|
);
|
||
|
$classes = array_merge($classes, $append_these);
|
||
|
*/
|
||
|
|
||
|
// PREPEND SINGLE ENTRY
|
||
|
// will add one definition at the start of the defined list
|
||
|
/*
|
||
|
$append_this = array(
|
||
|
'names' => 'plugin-example-toggle',
|
||
|
'desc' => 'A single CSS class entry appended to preset classes via plugin filter hook',
|
||
|
);
|
||
|
array_unshift($classes, $append_this);
|
||
|
*/
|
||
|
|
||
|
// PREPEND MULTIPLE ENTRIES
|
||
|
// will add one (or more) definitions at the beginning of the defined list
|
||
|
// probably the most likely useful variant in plugins or themes
|
||
|
//*
|
||
|
$prepend_these = array(
|
||
|
array(
|
||
|
'names' => 'plugin-example-toggle',
|
||
|
'desc' => 'A single CSS class entry prepended via plugin filter hook',
|
||
|
),
|
||
|
array(
|
||
|
'names' => 'plugin-example-option-1 plugin-example-option-3 plugin-example-option-3',
|
||
|
'desc' => 'A list of selectable classes entry prepended via plugin filter hook',
|
||
|
)
|
||
|
);
|
||
|
$classes = array_merge($prepend_these, $classes);
|
||
|
// */
|
||
|
|
||
|
|
||
|
// MANDATORY
|
||
|
return $classes;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Typesetter action hook
|
||
|
*
|
||
|
* when AvailaleClasses hook is used in a plugin, like right here, you might want to
|
||
|
* load the stylesheet(s) containing rules for your classname entries
|
||
|
*
|
||
|
*/
|
||
|
static function GetHead(){
|
||
|
global $page, $addonRelativeCode, $addon_current_id, $addon_current_version;
|
||
|
// \gp\tool\Plugins::css('AvailableClasses.css'); // the stylesheet will be combined with other CSS (if 'combine CSS' is active in configuration)
|
||
|
\gp\tool\Plugins::css('AvailableClasses.css', false); // the stylesheet will NOT be combined with other CSS
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Custom method to check if current page uses our theme
|
||
|
*
|
||
|
* obviously only useful when AvailaleClasses hook is used
|
||
|
* in the context of a theme
|
||
|
*
|
||
|
* returns true or false
|
||
|
*
|
||
|
*/
|
||
|
static function IsCurrentTheme(){
|
||
|
global $page, $gpLayouts, $config, $addonFolderName;
|
||
|
$theme_name = $config['addons'][$addonFolderName]['name'];
|
||
|
$layout = isset($page->TitleInfo['gpLayout']) ? $page->TitleInfo['gpLayout'] : 'default';
|
||
|
$default_layout = $config['gpLayout'];
|
||
|
$current_theme_name = $layout == 'default' ? $gpLayouts[$default_layout]['name'] : $gpLayouts[$layout]['name'];
|
||
|
$is_current_theme = ($current_theme_name == $theme_name);
|
||
|
return $is_current_theme;
|
||
|
}
|
||
|
|
||
|
}
|