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.
 
 
 
 
 
 

265 lines
11 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_button_info()
{
return [
'name' => tra('Button'),
'documentation' => 'PluginButton',
'description' => tra('Add a link formatted as a button'),
'prefs' => ['wikiplugin_button'],
'body' => tra('Label for the button (ignored if the text is defined)'),
'validate' => 'arguments',
'extraparams' => false,
'iconname' => 'play',
'introduced' => 6.1,
'tags' => [ 'basic' ],
'params' => [
'href' => [
'required' => true,
'name' => tra('Url'),
'description' => tr('URL to be produced by the button. For Wiki page uses %0 format. You can use wiki argument variables like
%1 in it', '<code>((Page Name))</code>', '<code>{{itemId}}</code>'),
'since' => '6.1',
'filter' => 'url',
'default' => '',
'safe' => true,
],
'_text' => [
'required' => false,
'name' => tra('Label'),
'description' => tra('Label for the button'),
'since' => '6.1',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_icon_name' => [
'required' => false,
'name' => tra('Icon Name'),
'description' => tra('Enter an iconset name to show an icon in the button'),
'since' => '14.0',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_type' => [
'required' => false,
'name' => tra('Button Type'),
'description' => tra('Use a type to style the button. By default btn-primary will be applied.'),
'since' => '13.0',
'filter' => 'text',
'default' => '',
'safe' => true,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Danger'), 'value' => 'danger'],
['text' => tra('Default'), 'value' => 'default'],
['text' => tra('Info'), 'value' => 'info'],
['text' => tra('Link'), 'value' => 'link'],
['text' => tra('Primary'), 'value' => 'primary'],
['text' => tra('Success'), 'value' => 'success'],
['text' => tra('Warning'), 'value' => 'warning'],
['text' => tra('None'), 'value' => ' ']
],
],
'width' => [
'required' => false,
'name' => tra('Button width'),
'description' => tra('In pixels or percentage. (e.g. 200px or 100%)'),
'since' => '20',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'height' => [
'required' => false,
'name' => tra('Button height'),
'description' => tra('In pixels or percentage. (e.g. 200px or 100%)'),
'since' => '20',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_class' => [
'required' => false,
'name' => tra('CSS Class'),
'description' => tra('CSS class for the button. Note that the btn class is always applied by default'),
'since' => '6.1',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_style' => [
'required' => false,
'name' => tra('CSS Style'),
'description' => tra('CSS style attributes'),
'since' => '6.1',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_rel' => [
'required' => false,
'name' => tra('Link Relation'),
'description' => tr('Enter %0 for colorbox effect (like shadowbox and lightbox) or appropriate
syntax for link relation.', '<code>box</code>'),
'since' => '7.0',
'filter' => 'text',
'default' => '',
'safe' => true,
],
'_target' => [
'required' => false,
'name' => tra('Target'),
'description' => tr('A target attribute specifies where to open the linked document. Set to _self by default'),
'since' => '21.0',
'filter' => 'text',
'options' => [
['text' => tra('_self'), 'value' => ''],
['text' => tra('_blank'), 'value' => '_blank'],
['text' => tra('_parent'), 'value' => '_parent'],
['text' => tra('_top'), 'value' => '_top']
],
'default' => '',
'safe' => true,
],
'_auto_args' => [
'required' => false,
'name' => tra('Auto Arguments'),
'description' => tr(
'Comma-separated list of URL arguments that will be kept from %0 (like
%1) in addition to those you can specify in the href parameter.',
'<code>_REQUEST</code>',
'<code>$auto_query_args</code>',
'<code>href</code>'
)
. '<br>' . tr('You can also use %0 to specify that every arguments listed in the
global var $auto_query_args has to be kept from URL', '<code>_auto_args="*"</code>'),
'since' => '6.1',
'filter' => 'text',
'default' => '',
'advanced' => true,
'safe' => true,
],
'_flip_id' => [
'required' => false,
'name' => tra('Flip Id'),
'description' => tra('HTML id attribute of the element to show/hide content'),
'since' => '6.1',
'filter' => 'alpha',
'default' => '',
'advanced' => true,
'safe' => true,
],
'_flip_hide_text' => [
'required' => false,
'name' => tra('Flip Hide Text'),
'description' => tr('If set to No (%0), will not display a "(Hide)" suffix after the button label
when the content is shown', '<code>n</code>'),
'since' => '6.1',
'filter' => 'alpha',
'default' => '',
'advanced' => true,
'safe' => true,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 'y'],
['text' => tra('No'), 'value' => 'n']
],
],
'_flip_default_open' => [
'required' => false,
'name' => tra('Flip Default Open'),
'description' => tr('If set to %0, the flip is open by default (if no cookie jar)', '<code>y</code>'),
'since' => '6.1',
'filter' => 'alpha',
'default' => '',
'advanced' => true,
'safe' => true,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 'y'],
['text' => tra('No'), 'value' => 'n']
],
],
'_escape' => [
'required' => false,
'name' => tra('Escape Apostrophes'),
'description' => tr('If set to %0, will escape the apostrophes in onclick', '<code>y</code>'),
'since' => '6.1',
'filter' => 'alpha',
'default' => '',
'advanced' => true,
'safe' => true,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 'y'],
['text' => tra('No'), 'value' => 'n']
],
],
'_disabled' => [
'required' => false,
'name' => tra('Disable Button'),
'description' => tr('Set to %0 to disable the button', '<code>y</code>'),
'since' => '6.1',
'filter' => 'alpha',
'default' => '',
'advanced' => true,
'safe' => true,
],
'data' => [
'required' => false,
'name' => tra('Data attributes'),
'description' => tra('URL encoded list or attributes and values.'),
'filter' => 'text',
'safe' => true,
'advanced' => true,
'since' => '20.2',
'default' => '',
],
],
];
}
function wikiplugin_button($data, $params)
{
$parserlib = TikiLib::lib('parser');
$smarty = TikiLib::lib('smarty');
if (empty($params['href'])) {
return tra('Incorrect param');
}
$path = 'lib/smarty_tiki/function.button.php';
if (! file_exists($path)) {
return tra('lib/smarty_tiki/function.button.php is missing or unreadable');
}
// for some unknown reason if a wikiplugin param is named _text all whitespaces from
// its value are removed, but we need to rename the param to _text for smarty_functin
if (isset($params['text'])) {
$params['_text'] = $params['text'];
unset($params['text']);
} elseif (empty($params['_text'])) {
$params['_text'] = TikiLib::lib('parser')->parse_data($data, ['preview_mode' => true]);
}
//Adding width and height to HTML style label (if defined)
if (! empty($params['width'])) {
$params['_style'] = "width : " . $params['width'] . " !important ;" . $params['_style'] ;
}
if (! empty($params['height'])) {
$params['_style'] = "height : " . $params['height'] . " !important ;" . $params['_style'] ;
}
// Parse wiki argument variables in the url, if any (i.e.: {{itemId}} for it's numeric value).
$parserlib->parse_wiki_argvariable($params['href']);
include_once($path);
$content = smarty_function_button($params, $smarty->getEmptyInternalTemplate());
return '~np~' . $content . '~/np~';
}