[Tiki-devel] Improved PluginFont

Volker Wysk <post-hhF2Jplw28UoZk/[email protected]>
Newsgroups gmane.comp.cms.tiki.devel
Message-ID <[email protected]>
Hi!

I've improved the Font Plugin. In the previous version, the font size
could only be specified in pixels. I've made it possible to specify it
in any of the ways, in which font sizes can be specified by the "font-
size" CSS style. See here:

https://www.w3.org/TR/CSS2/fonts.html#propdef-font-size

Now you can say "{FONT(size=125%)}...{FONT}" or
"{FONT(size=1.5em)}...{FONT}" or ...

The changes were small. However, I've removed the "filter" property
from the "size" argument. I don't understand the implications of this
fully yet.

I think the improved version should go into Tiki.  :-)  I'll update the
documentation.

The new version is attached.

Cheers,
Volker

_______________________________________________
TikiWiki-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-devel
wikiplugin_font.php (application/x-php, 2.4 KB)
<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$

function wikiplugin_font_getfontoptions()
{
	global $prefs;

	$names = preg_split('/;/', $prefs['wysiwyg_fonts']);
	$fonts = [];
	$fonts[] = ['text' => '', 'value' => ''];

	foreach ($names as $n) {
		$fonts[] = ['text' => $n, 'value' => $n];
	}
	return $fonts;
}


/*
 * Note:
 *
 * This plugin is needed to save font definitions when the editor is switched:
 * - size unit is 'px' (compatible with the CKE)
 * - fonts are embedded in <span> (compatible with the CKE)
  */
function wikiplugin_font_info()
{
	return [
		'name' => tra('Font'),
		'format' => 'wiki',
		'documentation' => 'PluginFont',
		'description' => tra('Format the font type and size of text'),
		'prefs' => ['wikiplugin_font'],
		'body' => tra('Content'),
		'tags' => [ 'basic' ],
		'iconname' => 'font',
		'introduced' => 8,
		'params' => [
			'family' => [
				'required' => false,
				'name' => tra('Font Family'),
				'default' => '',
				'description' => tra('Select the font family to display the content.'),
				'since' => '8.0',
				'filter' => 'word',
				'options' => wikiplugin_font_getfontoptions(),
			],
			'size' => [
				'required' => false,
				'name' => tra('Font Size'),
				'since' => '8.0',
				'default' => '',
                //	'filter' => 'digits',
				'description' => tr(
					'Define the size of the font in pixels (enter %0 to get a font of 12px)',
					'<code>12</code>'
				), // 'px' is compatible with the CKE UI
			],
		],
	];
} // wikiplugin_font_info()


function wikiplugin_font($data, $params)
{
	global $prefs;

	$tag = 'span'; // fonts defined in divs are not shown in the CKE UI

	$all_fonts = preg_split('/;/', $prefs['wysiwyg_fonts']);
	foreach ($all_fonts as &$f) {
		$f = strtolower($f);
	}


	$family = isset($params['family']) ? strtolower($params['family']) : '';
	$size = isset($params['size']) ? $params['size'] : '';

    if ((string)(int)$size == $size and $size > 0) {
        $size .= "px";
    }

	$style  = '';
	$style .= ($family and in_array($family, $all_fonts)) ? "font-family: $family;" : '';
	$style .= (isset($params['size']) ? "font-size: $size;" : '');

	if ($style) {
		return "<$tag style=\"$style\">$data</$tag>";
	} else {
		return $data;
	}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.