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.
 
 
 
 
 
 

193 lines
7.1 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_draw_info()
{
return [
'name' => tra('Draw'),
'documentation' => 'PluginDraw',
'description' => tra('Embed a drawing in a page'),
'prefs' => [ 'feature_draw' , 'wikiplugin_draw'],
'iconname' => 'edit',
'tags' => [ 'basic' ],
'introduced' => 7.1,
'params' => [
'id' => [
'required' => false,
'name' => tra('Drawing ID'),
'description' => tra('Internal ID of the file ID'),
'filter' => 'digits',
'accepted' => ' ID number',
'default' => '',
'since' => '7.1',
'profile_reference' => 'file',
],
'width' => [
'required' => false,
'name' => tra('Width'),
'description' => tr(
'Width in pixels or percentage. Default value is page width, for example, %0 or %1',
'<code>200px</code>',
'<code>100%</code>'
),
'filter' => 'text',
'accepted' => 'Number of pixels followed by \'px\' or percent followed by % (e.g. "200px" or "100%").',
'default' => 'Image width',
'since' => '7.1'
],
'height' => [
'required' => false,
'name' => tra('Height'),
'description' => tra('Height in pixels or percentage. Default value is complete drawing height.'),
'filter' => 'text',
'accepted' => 'Number of pixels followed by \'px\' or percent followed by % (e.g. "200px" or "100%").',
'default' => 'Image height',
'since' => '7.1'
],
'archive' => [
'required' => false,
'name' => tra('Force Display Archive'),
'description' => tr('The latest revision of file is automatically shown, by setting archive to Yes (%0),
it bypasses this check and shows the archive rather than the latest revision', '<code>y</code>'),
'filter' => 'alpha',
'default' => 'n',
'since' => '8.0',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 'y'],
['text' => tra('No'), 'value' => 'n']
]
],
],
];
}
function wikiplugin_draw($data, $params)
{
global $tiki_p_edit, $tiki_p_admin, $tiki_p_upload_files, $prefs, $user, $page;
$headerlib = TikiLib::lib('header');
$tikilib = TikiLib::lib('tiki');
$smarty = TikiLib::lib('smarty');
$filegallib = TikiLib::lib('filegal');
$globalperms = Perms::get();
extract(array_merge($params, []), EXTR_SKIP);
static $drawIndex = 0;
++$drawIndex;
if (! isset($id)) {
//check permissions
if ($tiki_p_upload_files != 'y') {
return;
}
$label = tra('Draw New SVG Image');
$page = htmlentities($page);
$content = htmlentities($data);
$formId = "form$drawIndex";
$gals = $filegallib->list_file_galleries(0, -1, 'name_desc', $user);
$galHtml = "";
if (! function_exists('wp_draw_cmp')) {
function wp_draw_cmp($a, $b)
{
return strcmp(strtolower($a["name"]), strtolower($b["name"]));
}
}
usort($gals['data'], 'wp_draw_cmp');
foreach ($gals['data'] as $gal) {
if ($gal['name'] != "Wiki Attachments" && $gal['name'] != "Users File Galleries") {
$galHtml .= "<option value='" . $gal['id'] . "'>" . $gal['name'] . "</option>";
}
}
$in = tr(" in ");
$headerlib->add_jq_onready(
<<<JQ
$('#newDraw$drawIndex').submit(function() {
var form = $(this);
var fields = form.serializeArray();
$.wikiTrackingDraw = {
fileId: 0,
page: '$page',
index: '$drawIndex',
label: '$label',
type: 'draw',
content: '',
params: {
width: '',
height: '',
id: 0 //this will be updated
}
};
$.each(fields, function(i, field){
form.data(field.name.toLowerCase(), field.value);
});
return form.ajaxEditDraw();
});
JQ
);
return <<<EOF
~np~
<form id="newDraw$drawIndex" method="get" action="tiki-edit_draw.php">
<p>
<input type="submit" class="btn btn-primary btn-sm" name="label" value="$label" class="newSvgButton" />$in
<select name="galleryId">
$galHtml
</select>
<input type="hidden" name="index" value="$drawIndex"/>
<input type="hidden" name="page" value="$page"/>
<input type="hidden" name="archive" value="$archive"/>
</p>
</form>
~/np~
EOF;
}
$fileInfo = $filegallib->get_file_info($id);
//this sets the image to latest in a group of archives
if (! isset($archive) || $archive != 'y') {
if (! empty($fileInfo['archiveId']) && $fileInfo['archiveId'] > 0) {
$id = $fileInfo['archiveId'];
$fileInfo = $filegallib->get_file_info($id);
}
}
if (! isset($fileInfo['created'])) {
return tra("File not found.");
} else {
$globalperms = Perms::get([ 'type' => 'file', 'object' => $fileInfo['fileId'] ]);
if ($globalperms->view_file_gallery != 'y') {
return "";
}
$label = tra('Edit SVG Image');
$ret = '<div type="image/svg+xml" class="svgImage pluginImg table-responsive' . $fileInfo['fileId'] . '" style="' .
(isset($height) ? "height: $height;" : "" ) .
(isset($width) ? "width: $width;" : "" )
. '">' . $fileInfo['data'] . '</div>';
if ($globalperms->upload_files == 'y') {
$smarty->loadPlugin('smarty_function_icon');
$editicon = smarty_function_icon(['name' => 'edit'], $smarty->getEmptyInternalTemplate());
$ret .= "<a href='tiki-edit_draw.php?fileId=$id&page=$page&index=$drawIndex&label=$label" .
(isset($width) ? "&width=$width" : "") . (isset($height) ? "&height=$height" : "") .
"' onclick='return $(this).ajaxEditDraw();' title='Edit: " . $fileInfo['filename'] .
"' data-fileid='" . $fileInfo['fileId'] . "' data-galleryid='" . $fileInfo['galleryId'] . "'>" .
$editicon . "</a>";
}
return '~np~' . $ret . '~/np~';
}
}