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.
 
 
 
 
 
 

139 lines
5.3 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_author_info()
{
return [
'name' => tra('Author'),
'documentation' => 'PluginAuthor',
'description' => tra('Add popups and color coding that identifies authors'),
'prefs' => ['wikiplugin_author'],
'body' => tra('text'),
'iconname' => 'pencil',
'introduced' => 6,
'params' => [
'author' => [
'required' => true,
'name' => tra('Username'),
'description' => tra('Username of the author of the text.'),
'since' => '6.0',
'default' => '',
'filter' => 'username',
],
'deleted_by' => [
'required' => false,
'name' => tra('Deleted by User'),
'description' => tra('Username of the person who deleted the text.'),
'since' => '6.0',
'default' => '',
'filter' => 'username',
],
'visible' => [
'required' => false,
'name' => tra('Make Visible'),
'description' => tra("Should this author's contribution be visible (default: no)."),
'since' => '6.0',
'filter' => 'text',
'default' => 0,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => '1'],
['text' => tra('No'), 'value' => '0'],
],
],
'popup' => [
'required' => false,
'name' => tra('Show popup with author/deleted by'),
'description' => tra('Generate a popup with names of author(s) (default: no).'),
'since' => '6.0',
'filter' => 'text',
'default' => 0,
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => '1'],
['text' => tra('No'), 'value' => '0'],
],
],
], // params
];
}
function wikiplugin_author($data, $params)
{
$headerlib = TikiLib::lib('header');
$tikilib = TikiLib::lib('tiki');
$smarty = TikiLib::lib('smarty');
global $authors;
static $style = 0;
static $id = 0;
$blocktags = '/(<+\/?address.*?>|<+\/?blockcode.*?>|<+\/?blockquote.*?>|<+\/?div.*?>|<+\/?h1.*?>|<+\/?h2.*?>|<+\/?h3.*?>|<+\/?h4.*?>|<+\/?h5.*?>|<+\/?h6.*?>|<+\/?hr.*?>|<+\/?h.*?>|<+\/?li.*?>|<+\/?ol.*?>|<+\/?pre.*?>|<+\/?p.*?>|<+\/?section.*?>|<+\/?table.*?>|<+\/?td.*?>|<+\/?th.*?>|<+\/?tr.*?>|<+\/?ul.*?>)/';
$default = ['popup' => 0];
$params = array_merge($default, $params);
if (! is_array($authors)) {
$authors = [];
}
$author = $params['author'];
if (! isset($authors[$author])) {
$authors[$author] = [];
}
if (! isset($authors[$author]['style'])) {
$authors[$author]['style'] = "author$style";
$style++;
if ($style > 15) {
$style = 0; // so far only 16 colors defined
}
}
$content = preg_split($blocktags, $data, -1, PREG_SPLIT_DELIM_CAPTURE);
$html = '';
foreach ($content as $data) {
if ($data != '') {
if (preg_match($blocktags, $data) > 0) {
$html .= $data;
} else {
if ($params['visible'] == 1 or $params['popup'] == 1) {
$html .= '<span id="author' . $id . '-link" ';
}
if ($params['visible'] == 1) {
$html .= 'class="' . $authors[$author]['style'];
if (isset($params['deleted_by'])) {
$html .= ' deleted';
}
$html .= '"';
}
if ($params['popup'] == 1) {
$html .= ' onclick="javascript:void()"';
}
if ($params['visible'] == 1 or $params['popup'] == 1) {
$html .= ">$data</span>";
} else {
$html .= $data;
}
if ($params['popup'] == 1) {
//Mouseover for detailed info
$js = "\$('#author$id-link').mouseover(function(event) {
\$('#author$id').css('left', event.pageX).css('top', event.pageY);
showJQ('#author$id', '', '');
1000
});";
$js .= "\$('#author$id-link').mouseout(function(event) { setTimeout(function() {hideJQ('#author$id', '', '')}, 1000); });";
$headerlib->add_jq_onready($js);
$html .= "<span id=\"author$id\" class=\"plugin-mouseover\" style=\"width: 200px; height: 80px; padding: 2px \">" .
tra('Author') . ": $author" . (isset($params['deleted_by']) ? "<br />" . tra('deleted by') . ': ' . $params['deleted_by'] : '') . "</span>";
}
$id++;
} // content is not a block tag
} // content <>""
} // foreach
return $html;
}