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.
 
 
 
 
 
 

71 lines
2.0 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_insert_info()
{
return [
'name' => tr('Insert Tracker Item'),
'description' => tr('Create a tracker item when the plugin is inserted in the page. The plugin code is removed and replaced by a link to the newly created item.'),
'prefs' => ['wikiplugin_insert', 'feature_trackers', 'wikiplugin_objectlink'],
'tags' => ['basic'],
'iconname' => 'add',
'introduced' => 10,
'extraparams' => true,
'defaultfilter' => 'text',
];
}
function wikiplugin_insert_rewrite($data, $params, $context)
{
$tikilib = TikiLib::lib('tiki');
$trackerIds = $tikilib->get_preference('tracker_insert_allowed', [], true);
foreach ($trackerIds as $trackerId) {
$utilities = new Services_Tracker_Utilities();
$item = Tracker_Item::newItem($trackerId);
if (! $item->canModify()) {
continue;
}
$definition = $item->getDefinition();
if (! $definition->canInsert(array_keys($params))) {
continue;
}
$available = [];
foreach ($params as $key => $value) {
if ($item->canModifyField($key)) {
$available[$key] = $value;
}
}
$id = $utilities->insertItem(
$definition,
[
'status' => 'o',
'fields' => $available,
]
);
if (false !== $id) {
$relationlib = TikiLib::lib('relation');
$relationlib->add_relation('tiki.source.creator', 'trackeritem', $id, $context['type'], $context['itemId']);
return "{objectlink type=trackeritem id=$id}";
}
}
return false;
}
function wikiplugin_insert($data, $params)
{
return '__' . tr('Item not inserted') . '__';
}