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') . '__'; }