/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #include "ezc.h" #include "ticketinfo.h" #include "editticket.h" #include "createticket.h" #include "core/request.h" #include "core/misc.h" #include "core/plugin.h" #include "functions/functions.h" #include "templates/templates.h" namespace Ticket { using Ezc::Info; using namespace TemplatesFunctions; using TemplatesFunctions::system; extern TicketInfo ticket_info; extern CreateTicket fun_create_ticket; extern EditTicket fun_edit_ticket; int ticket_calc_progress_image_number(int percent) { percent = int( double(percent) / 10.0 + 0.5 ) * 10; if( percent < 0 ) percent = 0; if( percent > 100 ) percent = 100; return percent; } void ticket_is(Info & i) { i.res = ticket_info.is_ticket; } void ticket_item_content(Info & i) { HtmlEscape(i.out, ticket_info.item.content); } void ticket_item_content_type_is(Info & i) { item_content_type_is(ticket_info.item, i); } void ticket_item_print_content(Info & i) { item_print_content(i.out, ticket_info.item.content, ticket_info.item.content_type); } void ticket_can_create(Info & i) { i.res = fun_create_ticket.HasAccess(true); } void ticket_can_edit(Info & i) { i.res = fun_edit_ticket.HasAccess(); } void ticket_type(Info & i) { if( ticket_info.ticket.type < system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg[ticket_info.ticket.type]); } void ticket_status(Info & i) { if( ticket_info.ticket.status < system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg[ticket_info.ticket.status]); } void ticket_priority(Info & i) { if( ticket_info.ticket.priority < system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg[ticket_info.ticket.priority]); } void ticket_category(Info & i) { if( ticket_info.ticket.category < system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg[ticket_info.ticket.category]); } void ticket_expected(Info & i) { if( ticket_info.ticket.expected < system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg[ticket_info.ticket.expected]); } void ticket_progress(Info & i) { i.out << ticket_info.ticket.progress; } void ticket_progress_image_number(Info & i) { int percent = ticket_info.ticket.progress; i.out << ticket_calc_progress_image_number(percent); } // -------------------------------------------------------------------------------- static size_t ticket_tab_index; void ticket_tab(Info & i) { ticket_tab_index = i.iter; i.res = ticket_tab_index < ticket_info.ticket_tab.size(); } void ticket_tab_url(Info & i) { if( ticket_tab_index < ticket_info.ticket_tab.size() ) { Item * dir = system->dirs.GetDir( ticket_info.ticket_tab[ticket_tab_index].dir_id ); if( dir ) { HtmlEscape(i.out, dir->url); } else { i.out << ""; } } } void ticket_tab_subject(Info & i) { if( ticket_tab_index < ticket_info.ticket_tab.size() ) { Item * dir = system->dirs.GetDir( ticket_info.ticket_tab[ticket_tab_index].dir_id ); if( dir ) { if( !dir->subject.empty() ) HtmlEscape(i.out, dir->subject); else HtmlEscape(i.out, dir->url); } else { i.out << ""; } } } void ticket_tab_subject_empty(Info & i) { i.res = true; if( ticket_tab_index < ticket_info.ticket_tab.size() ) { Item * dir = system->dirs.GetDir( ticket_info.ticket_tab[ticket_tab_index].dir_id ); if( dir ) i.res = dir->subject.empty(); } } void ticket_tab_author(Info & i) { bool unknown = true; if( ticket_tab_index < ticket_info.ticket_tab.size() ) { Item * dir = system->dirs.GetDir( ticket_info.ticket_tab[ticket_tab_index].dir_id ); if( dir ) { User * puser = system->users.GetUser(dir->user_id); unknown = false; if( puser ) HtmlEscape(i.out, puser->name); else { i.out << "~"; if( !dir->guest_name.empty() ) HtmlEscape(i.out, dir->guest_name); else i.out << "guest"; // !! dodac do konfiga } } } if( unknown ) { i.out << ""; } } void ticket_tab_type(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; Ticket & t = ticket_info.ticket_tab[ticket_tab_index]; if( t.type < system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg[t.type]); } void ticket_tab_status(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; Ticket & t = ticket_info.ticket_tab[ticket_tab_index]; if( t.status < system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg[t.status]); } void ticket_tab_priority(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; Ticket & t = ticket_info.ticket_tab[ticket_tab_index]; if( t.priority < system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg[t.priority]); } void ticket_tab_category(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; Ticket & t = ticket_info.ticket_tab[ticket_tab_index]; if( t.category < system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg[t.category]); } void ticket_tab_expected(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; Ticket & t = ticket_info.ticket_tab[ticket_tab_index]; if( t.expected < system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg[t.expected]); } void ticket_tab_progress(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; i.out << ticket_info.ticket_tab[ticket_tab_index].progress; } void ticket_tab_progress_image_number(Info & i) { if( ticket_tab_index >= ticket_info.ticket_tab.size() ) return; int percent = ticket_info.ticket_tab[ticket_tab_index].progress; i.out << ticket_calc_progress_image_number(percent); } // -------------------------------------------------------------------------------- static size_t ticket_type_tab_ind; void ticket_type_tab(Info & i) { ticket_type_tab_ind = i.iter; i.res = ticket_type_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg.size(); } void ticket_type_tab_defined(Info & i) { i.res = system->mounts.pmount->param[ticket_info.mount_par_ticket_type].defined; } void ticket_type_tab_isdefault(Info & i) { if( ticket_info.is_ticket ) { i.res = (ticket_type_tab_ind == ticket_info.ticket.type); } else { Mount::ParamRow & p = system->mounts.pmount->param[ticket_info.mount_par_ticket_type_default]; if( !p.defined || p.arg.empty() ) return; // default false size_t value = atoi( p.arg[0].c_str() ); i.res = (ticket_type_tab_ind == value); } } void ticket_type_tab_index(Info & i) { i.out << ticket_type_tab_ind; } void ticket_type_tab_name(Info & i) { if( ticket_type_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_type].arg[ticket_type_tab_ind]); } // -------------------------------------------------------------------------------- static size_t ticket_status_tab_ind; void ticket_status_tab(Info & i) { ticket_status_tab_ind = i.iter; i.res = ticket_status_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg.size(); } void ticket_status_tab_defined(Info & i) { i.res = system->mounts.pmount->param[ticket_info.mount_par_ticket_status].defined; } void ticket_status_tab_isdefault(Info & i) { if( ticket_info.is_ticket ) { i.res = (ticket_status_tab_ind == ticket_info.ticket.status); } else { Mount::ParamRow & p = system->mounts.pmount->param[ticket_info.mount_par_ticket_status_default]; if( !p.defined || p.arg.empty() ) return; // default false size_t value = atoi( p.arg[0].c_str() ); i.res = (ticket_status_tab_ind == value); } } void ticket_status_tab_index(Info & i) { i.out << ticket_status_tab_ind; } void ticket_status_tab_name(Info & i) { if( ticket_status_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_status].arg[ticket_status_tab_ind]); } // -------------------------------------------------------------------------------- static size_t ticket_priority_tab_ind; void ticket_priority_tab(Info & i) { ticket_priority_tab_ind = i.iter; i.res = ticket_priority_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg.size(); } void ticket_priority_tab_defined(Info & i) { i.res = system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].defined; } void ticket_priority_tab_isdefault(Info & i) { if( ticket_info.is_ticket ) { i.res = (ticket_priority_tab_ind == ticket_info.ticket.priority); } else { Mount::ParamRow & p = system->mounts.pmount->param[ticket_info.mount_par_ticket_priority_default]; if( !p.defined || p.arg.empty() ) return; // default false size_t value = atoi( p.arg[0].c_str() ); i.res = (ticket_priority_tab_ind == value); } } void ticket_priority_tab_index(Info & i) { i.out << ticket_priority_tab_ind; } void ticket_priority_tab_name(Info & i) { if( ticket_priority_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_priority].arg[ticket_priority_tab_ind]); } // -------------------------------------------------------------------------------- static size_t ticket_category_tab_ind; void ticket_category_tab(Info & i) { ticket_category_tab_ind = i.iter; i.res = ticket_category_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg.size(); } void ticket_category_tab_defined(Info & i) { i.res = system->mounts.pmount->param[ticket_info.mount_par_ticket_category].defined; } void ticket_category_tab_isdefault(Info & i) { if( ticket_info.is_ticket ) { i.res = (ticket_category_tab_ind == ticket_info.ticket.category); } else { Mount::ParamRow & p = system->mounts.pmount->param[ticket_info.mount_par_ticket_category_default]; if( !p.defined || p.arg.empty() ) return; // default false size_t value = atoi( p.arg[0].c_str() ); i.res = (ticket_category_tab_ind == value); } } void ticket_category_tab_index(Info & i) { i.out << ticket_category_tab_ind; } void ticket_category_tab_name(Info & i) { if( ticket_category_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_category].arg[ticket_category_tab_ind]); } // -------------------------------------------------------------------------------- static size_t ticket_expected_tab_ind; void ticket_expected_tab(Info & i) { ticket_expected_tab_ind = i.iter; i.res = ticket_expected_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg.size(); } void ticket_expected_tab_defined(Info & i) { i.res = system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].defined; } void ticket_expected_tab_isdefault(Info & i) { if( ticket_info.is_ticket ) { i.res = (ticket_expected_tab_ind == ticket_info.ticket.expected); } else { Mount::ParamRow & p = system->mounts.pmount->param[ticket_info.mount_par_ticket_expected_default]; if( !p.defined || p.arg.empty() ) return; // default false size_t value = atoi( p.arg[0].c_str() ); i.res = (ticket_expected_tab_ind == value); } } void ticket_expected_tab_index(Info & i) { i.out << ticket_expected_tab_ind; } void ticket_expected_tab_name(Info & i) { if( ticket_expected_tab_ind < system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg.size() ) HtmlEscape(i.out, system->mounts.pmount->param[ticket_info.mount_par_ticket_expected].arg[ticket_expected_tab_ind]); } void AddEzcFunctions(PluginInfo & info) { Ezc::Functions * fun = reinterpret_cast(info.p1); fun->Insert("ticket_is", ticket_is); fun->Insert("ticket_item_content", ticket_item_content); fun->Insert("ticket_item_content_type_is", ticket_item_content_type_is); fun->Insert("ticket_item_print_content", ticket_item_print_content); fun->Insert("ticket_can_create", ticket_can_create); fun->Insert("ticket_can_edit", ticket_can_edit); fun->Insert("ticket_type", ticket_type); fun->Insert("ticket_status", ticket_status); fun->Insert("ticket_priority", ticket_priority); fun->Insert("ticket_category", ticket_category); fun->Insert("ticket_expected", ticket_expected); fun->Insert("ticket_progress", ticket_progress); fun->Insert("ticket_progress_image_number", ticket_progress_image_number); fun->Insert("ticket_tab", ticket_tab); fun->Insert("ticket_tab_url", ticket_tab_url); fun->Insert("ticket_tab_subject", ticket_tab_subject); fun->Insert("ticket_tab_subject_empty", ticket_tab_subject_empty); fun->Insert("ticket_tab_author", ticket_tab_author); fun->Insert("ticket_tab_type", ticket_tab_type); fun->Insert("ticket_tab_status", ticket_tab_status); fun->Insert("ticket_tab_priority", ticket_tab_priority); fun->Insert("ticket_tab_category", ticket_tab_category); fun->Insert("ticket_tab_expected", ticket_tab_expected); fun->Insert("ticket_tab_progress", ticket_tab_progress); fun->Insert("ticket_tab_progress_image_number",ticket_tab_progress_image_number); fun->Insert("ticket_type_tab", ticket_type_tab); fun->Insert("ticket_type_tab_defined", ticket_type_tab_defined); fun->Insert("ticket_type_tab_isdefault", ticket_type_tab_isdefault); fun->Insert("ticket_type_tab_index", ticket_type_tab_index); fun->Insert("ticket_type_tab_name", ticket_type_tab_name); fun->Insert("ticket_status_tab", ticket_status_tab); fun->Insert("ticket_status_tab_defined", ticket_status_tab_defined); fun->Insert("ticket_status_tab_isdefault", ticket_status_tab_isdefault); fun->Insert("ticket_status_tab_index", ticket_status_tab_index); fun->Insert("ticket_status_tab_name", ticket_status_tab_name); fun->Insert("ticket_priority_tab", ticket_priority_tab); fun->Insert("ticket_priority_tab_defined", ticket_priority_tab_defined); fun->Insert("ticket_priority_tab_isdefault", ticket_priority_tab_isdefault); fun->Insert("ticket_priority_tab_index", ticket_priority_tab_index); fun->Insert("ticket_priority_tab_name", ticket_priority_tab_name); fun->Insert("ticket_category_tab", ticket_category_tab); fun->Insert("ticket_category_tab_defined", ticket_category_tab_defined); fun->Insert("ticket_category_tab_isdefault", ticket_category_tab_isdefault); fun->Insert("ticket_category_tab_index", ticket_category_tab_index); fun->Insert("ticket_category_tab_name", ticket_category_tab_name); fun->Insert("ticket_expected_tab", ticket_expected_tab); fun->Insert("ticket_expected_tab_defined", ticket_expected_tab_defined); fun->Insert("ticket_expected_tab_isdefault", ticket_expected_tab_isdefault); fun->Insert("ticket_expected_tab_index", ticket_expected_tab_index); fun->Insert("ticket_expected_tab_name", ticket_expected_tab_name); } } // namespace Ticket