function wikiplugin_trackercalendar($data, $params)
{
    static $id = 0;
    $headerlib = TikiLib::lib('header');
    $headerlib->add_cssfile('vendor_extra/fullcalendar-resourceviews/fullcalendar/fullcalendar.css');
    $headerlib->add_jsfile('vendor_extra/fullcalendar-resourceviews/fullcalendar/fullcalendar.min.js');
    $jit = new JitFilter($params);
    $definition = Tracker_Definition::get($jit->trackerId->int());
    $itemObject = Tracker_Item::newItem($jit->trackerId->int());
    if (!$definition) {
        return WikiParser_PluginOutput::userError(tr('Tracker not found.'));
    }
    $beginField = $definition->getFieldFromPermName($jit->begin->word());
    $endField = $definition->getFieldFromPermName($jit->end->word());
    if (!$beginField || !$endField) {
        return WikiParser_PluginOutput::userError(tr('Fields not found.'));
    }
    $views = array('month', 'agendaWeek', 'agendaDay');
    $resources = array();
    if ($resourceField = $jit->resource->word()) {
        $field = $definition->getFieldFromPermName($resourceField);
        $resources = wikiplugin_trackercalendar_get_resources($field);
        $views[] = 'resourceMonth';
        $views[] = 'resourceWeek';
        $views[] = 'resourceDay';
    }
    $smarty = TikiLib::lib('smarty');
    $smarty->assign('trackercalendar', array('id' => 'trackercalendar' . ++$id, 'trackerId' => $jit->trackerId->int(), 'begin' => $jit->begin->word(), 'end' => $jit->end->word(), 'resource' => $resourceField, 'resourceList' => $resources, 'coloring' => $jit->coloring->word(), 'beginFieldName' => 'ins_' . $beginField['fieldId'], 'endFieldName' => 'ins_' . $endField['fieldId'], 'firstDayofWeek' => 0, 'views' => implode(',', $views), 'viewyear' => (int) date('Y'), 'viewmonth' => (int) date('n'), 'viewday' => (int) date('j'), 'minHourOfDay' => 7, 'maxHourOfDay' => 20, 'addTitle' => tr('Insert'), 'canInsert' => $itemObject->canModify(), 'body' => $data));
    return $smarty->fetch('wiki-plugins/trackercalendar.tpl');
}
function wikiplugin_trackercalendar($data, $params)
{
    static $id = 0;
    $headerlib = TikiLib::lib('header');
    $headerlib->add_cssfile('vendor_extra/fullcalendar-resourceviews/fullcalendar/fullcalendar.css');
    $headerlib->add_jsfile('vendor_extra/fullcalendar-resourceviews/fullcalendar/fullcalendar.min.js');
    $jit = new JitFilter($params);
    $definition = Tracker_Definition::get($jit->trackerId->int());
    $itemObject = Tracker_Item::newItem($jit->trackerId->int());
    if (!$definition) {
        return WikiParser_PluginOutput::userError(tr('Tracker not found.'));
    }
    $beginField = $definition->getFieldFromPermName($jit->begin->word());
    $endField = $definition->getFieldFromPermName($jit->end->word());
    if (!$beginField || !$endField) {
        return WikiParser_PluginOutput::userError(tr('Fields not found.'));
    }
    $views = array();
    if (!empty($params['amonth']) and $params['amonth'] != 'y') {
        $amonth = 'n';
    } else {
        $amonth = 'y';
        $views[] = 'month';
    }
    if (!empty($params['aweek']) and $params['aweek'] != 'y') {
        $aweek = 'n';
    } else {
        $aweek = 'y';
        $views[] = 'agendaWeek';
    }
    if (!empty($params['aday']) and $params['aday'] != 'y') {
        $aday = 'n';
    } else {
        $aday = 'y';
        $views[] = 'agendaDay';
    }
    $resources = array();
    if ($resourceField = $jit->resource->word()) {
        $field = $definition->getFieldFromPermName($resourceField);
        $resources = wikiplugin_trackercalendar_get_resources($field);
        if (!empty($params['rmonth']) and $params['rmonth'] != 'y') {
            $rmonth = 'n';
        } else {
            $rmonth = 'y';
            $views[] = 'resourceMonth';
        }
        if (!empty($params['rweek']) and $params['rweek'] != 'y') {
            $rweek = 'n';
        } else {
            $rweek = 'y';
            $views[] = 'resourceWeek';
        }
        if (!empty($params['rday']) and $params['rday'] != 'y') {
            $rday = 'n';
        } else {
            $rday = 'y';
            $views[] = 'resourceDay';
        }
    }
    // Define the default View (dView)
    if (!empty($params['dView'])) {
        $dView = $params['dView'];
    } else {
        $dView = 'month';
    }
    // Define the default date (dYear, dMonth, dDay)
    if (!empty($params['dYear'])) {
        $dYear = $params['dYear'];
    } else {
        $dYear = (int) date('Y');
    }
    if (!empty($params['dMonth']) and $params['dMonth'] > 0 and $params['dMonth'] < 13) {
        $dMonth = $params['dMonth'];
    } else {
        $dMonth = (int) date('n');
    }
    if (!empty($params['dDay']) and $params['dDay'] > 0 and $params['dDay'] < 32) {
        $dDay = $params['dDay'];
    } else {
        $dDay = (int) date('j');
    }
    global $prefs;
    if (!empty($params['fDayofWeek']) and $params['fDayofWeek'] > -1 and $params['fDayofWeek'] < 7) {
        $firstDayofWeek = $params['fDayofWeek'];
    } elseif ($prefs['calendar_firstDayofWeek'] !== 'user') {
        $firstDayofWeek = $prefs['calendar_firstDayofWeek'];
    } else {
        $firstDayofWeek = 0;
    }
    $params['addAllFields'] = empty($params['addAllFields']) ? 'y' : $params['addAllFields'];
    $params['useSessionStorage'] = empty($params['useSessionStorage']) ? 'y' : $params['useSessionStorage'];
    $params['weekends'] = empty($params['weekends']) ? 'y' : $params['weekends'];
    $smarty = TikiLib::lib('smarty');
    $smarty->assign('trackercalendar', array('id' => 'trackercalendar' . ++$id, 'trackerId' => $jit->trackerId->int(), 'begin' => $jit->begin->word(), 'end' => $jit->end->word(), 'resource' => $resourceField, 'resourceList' => $resources, 'coloring' => $jit->coloring->word(), 'beginFieldName' => 'ins_' . $beginField['fieldId'], 'endFieldName' => 'ins_' . $endField['fieldId'], 'firstDayofWeek' => $firstDayofWeek, 'views' => implode(',', $views), 'viewyear' => $dYear, 'viewmonth' => $dMonth, 'viewday' => $dDay, 'minHourOfDay' => 7, 'maxHourOfDay' => 24, 'addTitle' => tr('Insert'), 'canInsert' => $itemObject->canModify(), 'dView' => $dView, 'body' => $data, 'url' => $params['external'] === 'y' ? $params['url'] : '', 'trkitemid' => $params['external'] === 'y' ? $params['trkitemid'] : '', 'addAllFields' => $params['external'] === 'y' ? $params['addAllFields'] : '', 'useSessionStorage' => $params['external'] === 'y' ? $params['useSessionStorage'] : '', 'timeFormat' => $prefs['display_12hr_clock'] === 'y' ? 'h(:mm)TT' : 'HH:mm', 'weekends' => $params['weekends'] === 'y' ? 1 : 0));
    return $smarty->fetch('wiki-plugins/trackercalendar.tpl');
}