You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

164 lines
6.2 KiB

<?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_box_info()
{
return [
'name' => tra('Box'),
'documentation' => 'PluginBox',
'description' => tra('Create a formatted box with a title bar'),
'prefs' => ['wikiplugin_box'],
'body' => tra('text'),
'introduced' => 1,
'iconname' => 'box',
'tags' => [ 'basic' ],
'validate' => 'arguments',
'params' => [
'title' => [
'required' => false,
'safe' => true,
'name' => tra('Box Title'),
'description' => tra('Displayed above the content'),
'since' => '1',
'filter' => 'text',
'default' => '',
],
'bg' => [
'required' => false,
'safe' => true,
'name' => tra('Background Color'),
'description' => tra('As defined by CSS, name, or color hex code.'),
'since' => '1',
'filter' => 'text',
'accepted' => tra('Valid CSS color name or code'),
],
'width' => [
'required' => false,
'safe' => true,
'name' => tra('Box Width'),
'description' => tr('In pixels or percentage. Default value is %0.', '<code>100%</code>'),
'since' => '1',
'filter' => 'text',
],
'align' => [
'required' => false,
'safe' => true,
'name' => tra('Text Alignment'),
'description' => tra('Aligns the text within the box (left-aligned by default)'),
'since' => '1',
'filter' => 'alpha',
'default' => 'left',
'options' => [
['text' => tra('Left'), 'value' => 'left'],
['text' => tra('Right'), 'value' => 'right'],
['text' => tra('Center'), 'value' => 'center'],
],
],
'float' => [
'required' => false,
'safe' => true,
'name' => tra('Float Position'),
'description' => tr(
'Set the alignment for the entire box. For elements with a width of less than 100%, other elements
will wrap around it unless the %0 parameter is appropriately set.)',
'<code>clear</code>'
),
'since' => '1',
'filter' => 'alpha',
'default' => '',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Left'), 'value' => 'left'],
['text' => tra('Right'), 'value' => 'right'],
],
],
'clear' => [
'required' => false,
'safe' => true,
'name' => tra('Clear'),
'description' => tr(
'Text, etc. is not allowed to wrap around the box if this parameter is set to %0 (Yes)',
'<code>1</code>'
),
'since' => '1',
'filter' => 'digits',
'default' => '',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 1],
['text' => tra('No'), 'value' => 0]
],
],
'class' => [
'required' => false,
'safe' => true,
'name' => tra('CSS Class'),
'description' => tra('Apply custom CSS class to the box.'),
'since' => '1',
'filter' => 'text',
'default' => '',
'accepted' => tra('Valid CSS class'),
],
'style' => [
'required' => false,
'safe' => true,
'name' => tra('CSS Style'),
'description' => tra('Enter CSS styling tags for the div type used e.g. padding: 5px'),
'since' => '13.0',
'filter' => 'text',
'default' => '',
],
'id' => [
'required' => false,
'safe' => true,
'name' => tra('ID'),
'description' => tra('ID'),
'since' => '1',
'filter' => 'text',
'default' => '',
],
],
];
}
function wikiplugin_box($data, $params)
{
// global $tikilib;
// Remove first <ENTER> if exists...
// if (substr($data, 0, 2) == "\r\n") $data = substr($data, 2);
extract($params, EXTR_SKIP);
$bg = (isset($bg)) ? " background: $bg;" : "";
$align = (isset($align)) ? " text-align: $align;" : "";
$id = (isset($id)) ? " id=\"$id\" " : '';
$class = (isset($class)) ? ' ' . $class : ' ';
$w = (isset($width)) ? " width: $width;" : "";
$f = (isset($float) && ($float == "left" || $float == "right")) ? " float:$float" : "";
$c = (isset($clear)) ? " clear:both;" : "";
$style = (isset($style)) ? "$style;" : "";
if (empty($float)) {
$begin = "<div class='card$class' $id style='$bg margin:0; $w $c $style $align'>";
} else {
$begin = "<div class='card$class' $id style='$bg $f; margin:1em; margin-$float:0; $w $c $style $align'>";
}
if (isset($title)) {
$begin .= "<div class='card-header'>$title</div>";
}
$begin .= "<div class='card-body'" . (strlen($bg) > 0 ? " style=\"$bg\"" : "") . ">";
$end = "</div></div>";
// Prepend any newline char with br
//$data = preg_replace("/\\n/", "<br />", $data);
// Insert "\n" at data begin if absent (so start-of-line-sensitive syntaxes will be parsed OK)
//if (substr($data, 0, 1) != "\n") $data = "\n".$data;
//$data = TikiLib::lib('parser')->parse_data($data);
$data = TikiLib::lib('parser')->protectSpecialChars($data); //they are unprotected before calling the plugins
return $begin . $data . $end;
}